참고 출처들
- 1. https://developstudy.tistory.com/42?category=836040
- 2. https://dev-ahn.tistory.com/114
IOCP에 대하여
- IOCP란 무엇인가
- IOCP의 장단점
- IOCP를 주로 사용하는 분야
IOCP란 무엇인가?
IOCP란 Input Output Completion Port의 약자로써 입출력 완료 포트라는 것이다.
IOCP는 window 환경에서 작동하는 논블로킹 프로세스로서 최소한의 스레드를 사용해서 Port와 관련된 입출력을 처리하는 기법이다.
- Port 는 기존 소켓port와는 약간 다른 의미이다(출처1에선 그렇다던데 진짜?)
IOCP의 장점
1. 위에서 서술한 것처럼 적은 수의 스레드만을 사용하여 구현할 수 있다.
2. 적은 수의 스레드 사용으로 CPU점유율도 낮으며, Context switching 비용도 적다.
-> 윈도우 OS가 직접 스레드 풀링을 관리하기 때문에
3. winsock2 API중 가장 확장성과 성능이 뛰어나다.
4. Overrapped I/O를 확장 시킨 개념이기때문에 커널영역과 유저영역의 버퍼를 공유한다.
IOCP의 단점
1. 프로그램 구현이 복잡해진다.
2. window 기반 플랫폼에서만 사용이 가능하다.
3. 하나의 I/O operation 마다 버퍼영역에 대한 page-lock/unlock이 필요하다.
-> 특정 메모리에 대한 pin/unpin은 많은 CPU cycle을 요구한다.
-> recv 를 posting 할 때, page-locking을 피해서 zero-byte recv를 사용한다.
-> page-locking 찾아볼 것.
4. 하나의 I/O operation 마다 시스템 콜을 호출한다.
-> 이로 인해 유저모드-커널모드 전환이 발생한다.
* zero-byte , zero-byte recv 찾아볼것.
IOCP를 주로 사용하는 분야
- 통신이 많고 비동기 처리가 필요한 윈도우 기반 게임 서버
'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 |