1 / 12

제 22 장 Completion Port 입 · 출력 모델

TCP/IP Socket Programming…. 제 22 장 Completion Port 입 · 출력 모델. Network Lab. Yong bae, Kim. 목차. Completion Port 입 · 출력 기본 원리 Completion Port 입 · 출력을 위한 기본 단계 Completion Port 입 · 출력 기반의 서버 구현. 구현. C 1. 소 켓. Completion Port 오브젝트 생성함수. 연결. 연결. 확인. Thread. Completion Port. C 2.

dusty
Download Presentation

제 22 장 Completion Port 입 · 출력 모델

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. TCP/IP Socket Programming… 제 22장 Completion Port 입·출력 모델 Network Lab. Yong bae, Kim

  2. 목차 • Completion Port 입·출력 기본 원리 • Completion Port 입·출력을 위한 기본 단계 • Completion Port 입·출력 기반의 서버 구현

  3. 구현 C 1 소 켓 Completion Port 오브젝트 생성함수 연결 연결 확인 Thread Completion Port C 2 소 켓 Completion Queue에 삽입 연결 확인에 필요한 함수 c.p C 3 소 켓 Completion Queue 소켓과의 연결함수.

  4. IOCP란? • 기본적으로 비동기 입출력 모델이다(Overlapped IO). • 제한된 쓰레드의 수를 통해서, 여러 소켓의 입출력을 담당하게 한다. • 컨텍스트 스위칭에 소비되는 시간을 줄이는 모델이다. • Overlapped 입출력 모델의 특징과 비동기 Notification 입출력 모델의 특징을 동시에 지닌다(단 비동기 Notification 입출력 모델과는 적용 시점에 차이가 있다).

  5. CreateIoCompletionPort 함수 • Completion Port 오브젝트 생성 HANDLE CreateIoCompletionPort ( HANDLE FileHandle, // 연결 시킬 소켓 핸들 HANDLE ExistingCompletionPort, // 연결 시킬 completion port 핸들 ULONG_PTR CompletionKey, // completion key DWORD NumberOfConcurrentThreads // 동시 실행 가능한 쓰레드의 수 ); 만약에 0을 전달 할 경우 CPU의 수만큼 허용한다.

  6. 적절한 쓰레드의 수 • Response Session이 짧은 경우. : CPU의 개수를 초과하지 않는다. • Response Session이 긴 경우. : CPU의 개수를 적절히 초과하여 클라이언트의 평균 만족도를 높인다 • 일반적인 경우.: CPU의 개수를 초과하지 않는다.

  7. CreateIoCompletionPort 함수 • Overlapped 소켓과 Completion Port의 연결 HANDLE CreateIoCompletionPort ( HANDLE FileHandle, // 연결 시킬 소켓 핸들 HANDLE ExistingCompletionPort, // 연결 시킬 completion port 핸들 ULONG_PTR CompletionKey, // completion key DWORD NumberOfConcurrentThreads// 동시 실행 가능한 쓰레드의 수 ); Completion Packet에 저장되는 Data

  8. GetQueuedCompletionStatus 함수 • Completion Queue에 들어 있는 패킷 정보 확인 BOOL GetQueuedCompletionStatus( HANDLE CompletionPort, // handle to completion port LPDWORD lpNumberOfBytes, // bytes transferred PULONG_PTR lpCompletionKey, // file completion key LPOVERLAPPED*lpOverlapped, // buffer DWORD dwMilliseconds // optional timeout value );

  9. CreateIoCompletionPort : key [그림 22-1] 함수 호출과 전달 인자의 관계

  10. WSARecv : overlapped [그림 22-2] 구조체의 포인터 관계

  11. 참고문헌 • “데이터 통신과 네트워킹”, 이재광 외 2명, 교보문고 • “TCP/IP 프로토콜”, 이재광외 5명, 미래컴 • “Linux Socket Programming by Example”, Warren W. Gay, QUE '00

  12. Q & A

More Related