Unix/Linux 플랫폼에서 서버코아 작성 방법론 정리

프로그래밍/서버프로그래밍 2006/04/12 21:59

Unix/Linux 플랫폼에서 서버작성 방법론 정리. by xevious7. 2006.4.-

서버의 코아를 작성할때 사용할 수 있는 방법은 많은 방법이 있겠지만
대략 10가지정도로 요약할 수 있습니다.

1. fork 시스템콜 을 이용하여 만드는 방법.
      fork 시스템콜은 프로세스를 새로 만드는 방법으로
      클라이언트 요청이 있을때마다 프로세스를 복사하여 여러 사용자에게
      서비스를 제공할 수 있습니다.

2. thread 를 이용하는 방법  fork시스템처럼 프로세스를 복사해서 처리하지 않고
  쓰레스를 생성해서 서비스를 제공하는 방법입니다.
   

3. select 함수를 이용하여 만드는 방법
      select함수를 이용하여 한 프로세스에서 여러 클라이언트의 요청을 받고
      처리하는 방법입니다.

4. poll 함수를 이용하여 만드는방법
      select함수의 갯수제한과 이벤트를 좀더 늘려 확장한 poll 함수를 이용하여
      만들수 있습니다.


5. SIGIO 시그날을 이용한 방법
  signal() 함수를 사용하여 SIGIO시그날을 이용 커널로 부터 이벤트를 받아오는
  방법입니다.

6. /dev/poll  을 이용하는방법  솔라리스에서 제공하는 방법으로 리눅스에서도
  사용가능합니다.

7. preforking 형태를 사용하는 방법
  프로세스를 복사하는 방법이나  BSD계열의 TCP/IP커널의 특징을 이용하여
  accept전에 fork를 수행한다음  여러프로세스가 accept를 처리하게 하는
   형태의 방법입니다.

8. RTS 시그날을 이용한 방법

9. kqueue 를 이용한 방법 FreeBSD에서 지원하는 방법으로 성능이 뛰어납니다.

10. epoll 를 이용한 방법 poll의 단점을 개선한 방법으로 kqueue 버금가는 성능을
나타내는 방법입니다.( Linux) 

PS. Windows에서는 수천에 이르는 클라이언트를 처리하기 위해서 주로
IOCP 를 이용하여 구성합니다.


PS. 대용량 서버에 대한 기법과 히스토리 각각의 방법에 대한 꽤 자세한 문서는
다음 URL http://www.kegel.com/c10k.html  에서 참조할 수 있습니다.
(영문입니다.)

top