I/O 모델  장점  단점  지원되는 OS
select   Unix 기반의 버클리 소켓에서 쓰던 것을 거의 그대로 구현했기 때문에 버클리 소켓을 사용했던 경험이 있다면 쉽게 접근이 가능하다. 이식성또한 좋다. 윈속에서는 최적화되지 못해 좋은 성능을 내지 못하고 사용하기에 불편한 점이 있다.  거의 모든 Windows
(윈속 1이상)
 WSAAsyncSelect  윈도우즈 메세지 기반의 모델이라서 처음 접하는 사용자도 쉽게 쓸 수 있다. 윈도우즈 메세지 기반이라서 성능이 떨어지고 윈도우가 없는 서비스 프로그램같은 곳에서는 사용할수 없다.  거의 모든 Windows
(윈속 1이상)
 WSAEventSelect  비교적 사용하기 쉽고 윈도우가 없어도 사용할 수 있다. 성능도 상당히 좋다. 기본적으로 이벤트에 연결할 수 있는 클라이언트 수가 64개로 정해져 있고 쓰레드를 사용하여 구현해야 성능이 좋다.  거의 모든 Windows
(윈속 2이상)
 Ovelapped I/O
(Event)
 EventSelect와 비슷하나 입출력 시에 Ovelapped I/O라는 것을 사용해 성능을 높혔다. EventSelect의 문제점을 그대로 가지고 있고 Ovelapped I/O에 대한 작업결과를 확인해야 한다.  거의 모든 Windows
(윈속 2이상)
 Ovelapped I/O
(Callback)
 Ovelapped I/O Event모델의 단점이였던 이벤트 64개에 대한 클라이언트 수의 제한이 없다. Ovelapped I/O에 대한 결과를 얻기 위해 따로 함수 호출을 할 필요가 없다. 수백 수천 클라이언트를 감당하기에는 무리가 있고, Callback함수가 하는 일이 많다면 느려질 수 있다. 
 거의 모든 Windows
(윈속 2이상)
 Completion Port I/O
(Non-Albetrable)
 수백에서 수천 개의 클라이언트를 처리 할 수 있으며 대규모 I/O처리를 감당 할 수 있다. Windows에서 최고의 성능을 낼 수 있는 모델이다. 기본적으로 알아야할 사항이 많아 사용하기 어렵고 OS의 사양이 높아야 한다.  Windows NT 4.0
SP3 이상 
 Completion Port I/O
(Albertrable)
 Non-Albetrable에서 있던 사용자가 쓰레드의 생성과 소멸을 관리하는 번거로움이 없고 작업의 완료에 대한 결과를 알기위해 따로 함수를 호출하지 않아도 된다. 쓰레드를 작업량에 따라 OS가 늘렸다 줄였다 하기 때문에 성능이 많이 감소된다.  Windows NT 4.0
SP3 이상 


'프로그래밍 > 네트워크' 카테고리의 다른 글

MTU와 MSS  (0) 2010.03.29
IMAP과 POP의 비교  (0) 2010.01.27
Post Office Protocol(POP3)  (0) 2009.09.21
Active Object 패턴  (0) 2009.09.08
소켓 상태 전이  (2) 2009.07.29
Windows I/O 모델  (0) 2009.07.29
리틀엔디안(Little endian)과 빅엔디안(Big endian)  (0) 2009.07.29
Posted by devop

댓글을 달아 주세요