[windows] I / O 완료 포트의 장점과 단점


1 Answers

IOCP를 사용하여 "클라이언트 당 하나의 스레드"문제를 극복 할 수 있습니다. 소프트웨어가 진정한 다중 프로세서 시스템에서 실행되지 않으면 성능이 크게 저하되는 것으로 알려져 있습니다. 스레드는 무제한이나 저렴한 시스템 리소스입니다.

IOCP는 몇몇 (I / O 작업자) 스레드가 여러 클라이언트의 입출력을 "공정하게"처리하도록하는 방법을 제공합니다. 스레드는 일시 중단되며 수행 할 때까지 CPU주기를 사용하지 않습니다.

또한이 좋은 책 http://www.amazon.com/Windows-System-Programming-Johnson-Hart/dp/0321256190 에서 몇 가지 정보를 읽을 수 있습니다 .

Question

왜 많은 사람들이 I / O 완료 포트가 빠르고 좋은 모델이라고 말합니까?
I / O 완료 포트의 장점과 단점은 무엇입니까?

나는 다른 모델보다 빠른 IOCP를 만드는 몇 가지 포인트를 알고 싶다.

다른 모델 (select, epoll, traditional multi thread / process)을 비교하여 설명 할 수 있다면 더 좋을 것입니다.




I / O 완료 포트는 O / S에 의해 비동기 I / O 작업으로 제공됩니다. 이는 백그라운드에서 (일반적으로 하드웨어에서) 발생한다는 것을 의미합니다. 시스템은 입출력이 완료되기를 기다리는 어떠한 자원 (예 : 스레드)도 낭비하지 않습니다. I / O가 완료되면 하드웨어는 O / S에 인터럽트를 보내고, O / S는 해당 프로세스 / 스레드를 깨우고 결과를 처리합니다. WRONG : IOCP는 하드웨어 지원이 필요하지 않습니다 (아래 주석 참조).

일반적으로 단일 스레드는 많은 수의 I / O 완료를 기다리는 반면 I / O가 반환되지 않으면 거의 리소스를 차지하지 못합니다.

I / O 완료 포트를 기반으로하지 않는 다른 비동기 모델은 일반적으로 스레드 풀을 사용하고 스레드가 I / O가 완료 될 때까지 대기하므로 더 많은 시스템 리소스를 사용합니다.

일반적으로 I / O 완료 포트는 일반적으로 하드웨어 지원이 필요하므로 일반적으로 모든 비동기 시나리오에 적용 할 수 없습니다.



Related