I/O Completion Port 모델  시스템프로그래밍 

2013.04.18. 22:12  수정  삭제

복사http://blog.naver.com/pwk0810/40187373362

전용뷰어 보기

Completion Port 는 Overlapped I/O 에 쓰레드 풀링(ThreadPooling ) 과 Queue라는 메커니즘을 동시에 접목시킨 기술이라고 할 수 있다.

 

 

 

 

 

  1. CreateCompletionPort를 이용해 socket  과 CompletionKey를 CompletionPort라는 객체를 등록시킴
  2. 완료된 작업을 받을때는 GetQueueCompletionStatus() 함수를 이용

Overlapped I/O  모델에서는 볼수 없었던 자료 구조와 매커니즘이 추가.
  1. CreateIOCompletionPort()함수를 이용해 CompletionPort 객체에 등록한 socket 과 CompletionPort 객체를 관리하는 DeviceList 라는 자료구조의 추가이다.
  2. IOCP Queue(I/O Completion Port Queue ) 라는 자료 구조 추가.
    Overlapped 모델과는 다르게 I/O작업이 완료되었을때 곧바로 사용자에게 알리지 않고완료된 작업결과를 IOCP Queue에 넣은 후 Completion port 객체를 이용해 사용자에게 알림.

  3. 커널은 쓰레드풀링 매커니즘을 이용해 사용자에게 알린다. 
    커널은 쓰레드 풀링 매커니즘을 이용하여 IOCP Queue에서 완료된 Overlapped I/O 작업을 가져와 뒤처리

 

 

 

+ Overlapped IO 모델에서 IOCP 모델로

 

 

  • Overapped IO 모델의 에코 서버는 "NON-BLOCKING 모드의 accept 함수와 alertable wait 상태로이 진입을 위한 SleepEX 함수가 번갈아 가며 반복 호출되는 것은 성능에 영향을 미칠수 있다"

  • accept 함수 호출은 main 스레드가 처리하도록 하고 , 별도의 스레드를 추가로 하나 생성해서 클라이언트 와의 입출력을 담당하게 된다.


  • CompletionPort 의 생성
    • 완료된 IO 의 정보가 Completion Port 오브젝트라는 커널 오브젝트에 등록.
    • Completion Port 의 생성
    • Completion Port 오브젝트와 소켓의 연결




 


'SYSTEM PROGRAMMING' 카테고리의 다른 글

C# 문법 특징  (0) 2015.08.05
Loop through files (Recurse subfolders)  (0) 2015.08.05
윈도우즈 기반 I/O 모델  (0) 2015.08.05
세마포어(Semaphore) 기반의 동기화  (0) 2015.08.05
Mutex 기반 동기화  (0) 2015.08.05
Posted by 뉴암스테르담
l