반응형

참고자료 : https://developstudy.tistory.com/45

 

C++ IOCP 서버 3. IOCP 구현 (초기화)

* 아직 배우고 있는 학생이라 틀린 내용이 있을 수도 있습니다. 틀린 내용이 있다면 알려주시면 감사하겠습니다. IOCP 이론 : https://developstudy.tistory.com/43?category=836040 C++ IOCP 서버 2. IOCP 이론 *..

developstudy.tistory.com

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
Posted by Sweetmeats_boy

블로그 이미지
Sweetmeats_boy

태그목록

Yesterday
Today
Total

달력

 « |  » 2024.11
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함