4. Overlapped 모델과 IOCP
- 기본적으로 Overlapped 와 IOCP를 따로 구분하긴 애매하다. IOCP는 Overlapped 모델을 기반으로 확장한 것이기 때문이다.
- Overlapped I/O는 중첩 입출력 or 비동기 입출력(Asynchronous I/O)라고도 부른다.
- 어플리케이션은 입출력 함수를 호출한 후 입출력 작업의 완료 여부와 무관하게 다른 작업을 진행
- 입출력 작업이 끝나면 운영체제는 작업완료를 어플리케이션에 알려준다.
- 이때 어플리케이션은 다른 작업을 중단하고 입출력 결과를 처리한다.
※ 소켓 입출력 작업이 완료되면, 운영체제는 어플리케이션이 등록한 함수를 자동으로 호출한다.
- 쉽게 이야기한다면 IO를 요청했다는 정보가 Device로 날라가게 되며 더이상 쓰레드는 신경을 안쓰고 다른 일을 처리한다. IO처리는 Device Driver에서 처리하다가 끝나게 되면 우리에게 끝났다은 것을 알려준다.
5. IOCP(Input/Output Complete Port)
- IOCP는 Overlapped I/O에 각각 처리를 전담하는 놈을 만들어서 다른 놈들은 처리하는 방법
- 제한된 쓰레드의 수를 통해서, 여러 소켓의 입출력을 담당
- 쓰레드를 생성하고 파괴하는 과정인 컨텍스트스위칭에 소비되는 시간을 줄이는 모델
- 위 그림으로 설명하면
ㆍ배(IO)가 들어오게 되면 항구(Completion Port)에 정박하며 정박허가증(Completion Packet) 기록
※ Completion Packet에 대한 기록은 Queue에 저장됨
ㆍ정박허가증(Completion Packet) 기록이 되면 일꾼(Thread)는 항구(Completion Port)로 가게 되고
ㆍ일꾼(Thread)는 정박허가증(Completion Packet)기록을 보고 어떤 배(IO)가 정박중인지 확인
ㆍ일꾼(Thread)는 해당 배(IO)를 향하게 되고 일을 처리한 후
ㆍ배(IO)의 일이 끝나면 일꾼(Thread)는 쉬러 가던가 아니면 다시 정박허가증(Completion Packet)기록을 보고 해당 배(IO)로 가서 일을 하게 된다.
'Network Programing > Network 개념' 카테고리의 다른 글
소켓 입출력 모델 - 3. WSAEventSelect 모델 (0) | 2016.09.11 |
---|---|
소켓 입출력 모델 - 2. WSAAsyncSelect 모델 (0) | 2016.09.11 |
소켓 입출력 모델 - 1.Select 모델 (0) | 2016.09.11 |
소켓 모드 와 동기/비동기 란? (0) | 2016.09.11 |
쓰레드 동기화 기법 (0) | 2016.09.10 |