Blocking Model
퍼스널 컴퓨터에서 클라이언트가 접속해서 지속해서 데이터르 주고 받을때
Non-Blocking Model
AsyncSelec(윈도우), EventSelect (콘솔,백그라운드)
퍼스널 컴퓨터에서 동작 시키고자 할 때 해당되는 소켓을 가지고 실질적으로 패킷을 주고 받는게
지속적으로 주고 받는게 아니라 단편적으로 데이터를 주고 받을 때
Overlapped I/O
이벤트 셀렉트처럼 사용 할 수 있다. 폴링에 관한 비용이 들지 않는다.
다수의 CPU를 가지고 있을 때 CPU를 최대한 사용 할 수 있다.
Contex Switching 발생이 하지 않는다.
1. Listen Thread + n개의 Thread(1 Client를 위해 1개의 Thread)
- Personal Computer상에서 개인 용도의(중요도가 적은) Server를 운용할 때
- Client와 Server간의 흐름이 지속적일 때
*소켓 통신외에 다른 작업은 별도의 쓰레드에게 관리를 하자.
장점
Client 1개와의 통신에 대한 논리만 생각할 수 있게 해 준다.
단점
쓰레드의 생성과 소멸에 대한 비용이 많이 든다.
context/switching에 대한 비용이 많이 든다.
2. AsyncSelect
- 소켓 통신외에 다른 작업이 병행되어야 할 경우
- Client와 Server간의 흐름이 단발적일 때
- 해당 쓰레드에 메시지를 받을 수 있는 window가 존재할 때
*눈에 보이지 않는 빈껍데기 msessage window여도 상관 없음
장점
소켓 통신을 위한 별도의 쓰레드 자원을 사용하는 비용이 필요없다.
받은 패킷 종류에 따라 나누어서 해당 패킷에 대해서 작성을 해 나갈 수 있다.
단점
패킷 처리에 드는 비용이 많이 드는 경우에 비효율적이 될 수 있다.
받은 패킷 종류에 따라 나누어서 해당 패킷에 대해서 작성을 하지 않으면 비효율적이 될 수 있다.
다수의 CPU를 장착한 시스템에서 모든 CPU를 사용하지 않게 된다.
3. EventSelect
- 소켓 통신외에 다른 작업이 병행되어야 할 경우
- Client와 Server간의 흐름이 단발적일 때
- 해당 쓰레드에 메시지를 받을 수 있는 window가 존재하지 않을 때
장점
소켓 통신을 위한 별도의 쓰레드 자원을 사용하는 비용이 필요없다.
받은 패킷 종류에 따라 나누어서 해당 패킷에 대해서 작성을 해 나갈 수 있다.
단점
패킷 처리에 드는 비용이 많이 드는 경우에 비효율적이 될 수 있다.
어느 정도의 Polling이 따르게 된다.
받은 패킷 종류에 따라 나누어서 해당 패킷에 대해서 작성을 하지 않으면 비효율적이 될 수 있다.
다수의 CPU를 장착한 시스템에서 모든 CPU를 사용하지 않게 된다.
4. Overlapped I/O
- Personal Computer상에서 Server를 운용할 때
* 소켓 통신외에 다른 작업이 병행되어야 될 경우에는 세심한 주의가 필요하거나 다른 방법을 찾아보자.
장점
소켓 통신을 위한 별도의 쓰레드 자원을 사용하는 비용이 적게 든다.
비동기 소켓 통신이기 때문에 많은 client에 많은 패킷 흐름을 효율적으로 사용할 수 있다.
단점
다수의 CPU를 장착한 시스템에서 모든 CPU를 사용하지 않게 된다.
5. IOCP
- Server System에 O/S가 Windows O/S일 경우
- 다른 응용이 동작할 개연성이 매우 적을 경우
장점
다수의 CPU를 장착한 시스템에서 모든 CPU를 Full로 사용할 수 있다.
단점
CPU를 사용하는 다른 응용이 많을 경우 큰 이득이 없다.
출처 http://cafe.daum.net/sbehclub
'API & MFC > 네트워크프로그래밍' 카테고리의 다른 글
EventSelect란? (0) | 2010.02.05 |
---|---|
ASyncSelect 예제 (1) | 2010.02.04 |
소켓함수 예제(로그인서버) (0) | 2010.01.25 |
소켓통신(함수정리) (1) | 2010.01.18 |
OSI 모델 And Ip계층 (0) | 2010.01.18 |