2019. 8. 26. 19:07 Server
IOCP 동작원리에 대하여[작성중]
참고자료 : https://developstudy.tistory.com/45
IOCP는 I/O 처리를 하기 위해서 우선 등록을 한다.
우선 CreateIoCompletionPort 함수를 통해서 디바이스와 CompletionPort를 바인딩 할 필요가 있다.
이 때 IOCP는 Overlapped를 사용하여 통보를 받아서 처리를 한다.
Overlapped IO[중첩 입출력 모델]란?
1. NonBlocking, Async 적으로 IO를 처리하는 방법이다.
2. IO를 요청 한 후 별도의 대기시간 없이 리턴 후 다음 작업을 수행한다.
3. 해당 작업의 완료여부를 IOCP를 통해 알 수 있다.
4. 단순 Network만이 아닌 File IO에도 사용이 가능하다.
Overlapped IO의 장점
1. IO Blocking이 일어나지 않는다.
2. 버퍼링 오버헤드가 줄어든다.
- Overlapped IO는 IO 작업 시 OS에서 제공한 버퍼를 사용하지 않고 사용자가 지정한 버퍼를 사용한다.
-> 단, Overlapped IO 호출을 미리하지 않으면 TCP 수신버퍼로 들어오는 Data가 사용자 버퍼보다 커서
TCP 수신 버퍼가 금방 고갈되어 상대에게 Data를 전송하지 못하는 경우가 생길 수 있다.
-> 단, 해당 이점을 얻기위해서는 별도의 설정값을 지정해줘야 한다.
3. FIFO으로 IO을 처리하는 것이 아닌 SCAN 방식으로 IO을 처리한다.
* SCAN 방식 찾아볼 것.
Overlapped IO 사용 시 주의할 점.
1. Data 전송 시 Data 송신 작업이 완료될 때까지 Data가 있는 사용자 버퍼를 삭제하면 안된다.
'Server' 카테고리의 다른 글
서버 Socket 설정하는 방법들 (0) | 2019.09.06 |
---|---|
게임 서버에서의 Log 구성 (0) | 2019.09.04 |
게임 서버에서의 Log의 분류 (0) | 2019.09.04 |
IOCP에 대하여 (0) | 2019.08.26 |
메세지 큐[Message Queue] (0) | 2019.07.14 |