티스토리 뷰

책 ) TCP/IP 윈도우 소켓 프로그래밍

지금까지 공부했던 서버는 두가지의 서버로 분류 할 수 있다.

반복서버(iterative server)

  • 여러 클라이언트를 한번에 하나씩 처리한다. 단일 스레드로 구현하며, 시스템 자원소모가 적다. 하지만 한 클라이언트의 처리 시간이 길어지면 다른 클라이언트의 대기시간이 길어진다. (UDP 서버를 작성할때 적합)

병행 서버(concurrent server)

  • 여러 클라이언트를 동시에 처리한다. 멀티스레드 서버가 해당되고, 한 클라이언트의 처리 시간이 길어지더라도 다른 클라이언트에 영향을 주지 않는다. 다만 스레드를 여러 개 생성하여 구현하므로 시스템 자원 소모가 많다.

이상적인 소켓 입출력 모델의 특징

  1. 가능한 많은 클라이언트가 접속할 수 있다.
  2. 서버는 각 클라이언트의 서비스요청에 빠르게 반응하여, 고속으로 데이터를 전송한다.
  3. 시스템 자원(CPU, 메모리)의 사용률을 최소화 한다.

따라서 아래의 요구사항을 얼마나 만족하는지도 중요하다.

  1. 소켓 함수 호출시 블로킹을 최소화 한다
  2. 스레드 개수를 일정 수준으로 유지한다.
  3. CPU 명령 수행과 입출력 작업을 병행한다.
  4. 유저 모드와 커널 모드 전환 횟수를 최소화 한다.
  • 소켓 입출력 모델의 종류 : Select, WSAAsyncSelect, WSAEventSelect, Overlapped, Completion Port(IOCP)

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함