TCP/IP 컨텍스트에서 프로세스 생성 및 관리를 통해 여러 연결을 동시에 처리할 수 있는 강력한 서버를 생성하는 다양한 측면
프로세스 정의: 프로세스를 관련 메모리 및 리소스를 포함하는 실행 중인 프로그램으로 설명합니다. 또한 운영 체제가 여러 프로세스를 동시에 관리할 수 있는 방법도 설명합니다.
프로세스 ID(PID): 운영 체제에서 생성된 모든 프로세스에는 프로세스 ID라는 고유 식별자가 할당됩니다.
다중 연결 서버: 이 서버는 둘 이상의 클라이언트에 대한 동시 연결 및 서비스를 허용합니다. 이 장에서는 이러한 서버를 효과적으로 구현하기 위한 전략을 간략하게 설명합니다.
fork()를 사용하여 프로세스 생성: fork() 함수는 호출 프로세스를 복제하는 데 사용되어 원본 프로세스와 새 프로세스 사이에 상위-하위 관계를 생성합니다. 하위 프로세스는 상위 포스트포킹과 독립적으로 실행됩니다.
wait 함수는 블로킹 상태에 빠질 수 있지만, waitpid 는 블로킹 상태에 놓이지 않게 할 수 있다. 더유연!
이는 0 을 리턴함. => 차일드 함수는
10-3 시그널 핸들링(신호 처리)
10-4 멀티 태스킹 기반 다중 연결 서버
TCP 입출력 루틴 구분
이 장에서는 Unix 계열 운영 체제에서 프로세스 관리를 사용하여 확장 가능한 네트워크 응용 프로그램을 개발하기 위한 필수적인 통찰력과 기술 전략을 제공합니다. 특히 여러 클라이언트 연결을 처리하고 프로세스 수명주기를 효율적으로 관리하여 시스템 안정성과 성능을 보장하는 데 중점을 둡니다.
IO 멀티플렉싱
소켓 I/O 모델
프로세스 관리 오버헤드와 복잡한 구현으로 인해 효율성이 떨어질 수 있는 다중 프로세스 또는 다중 스레드 서버 모델에 대한 대안으로 제시됩니다.
OS 한테 물어보는데,
다중화 모델
어떤 소켓이 I/O 작업 준비가 되었는지 모니터링하여 단일 스레드가 여러 소켓 연결을 관리할 수 있도록 하는 'select()' 기능을 도입했습니다.
관찰의 대상이 되는 디스크립터의 수는 maxfd이며, 두 번째, 세 번째, 네 번째 인자를 통해서 전달된
관찰의 대상중에서 각각 입력, 출력, 또는 오류가 발생했을 때 select 함수는 반환을 한다. 단, timeout
의 지정을 통해서 무조건 반환이 되는 시간을 결정할 수 있다.
비교 분석
서버 모델 기능
이상적인 소켓 I/O 모델 특성: 이상적인 모델을 차단을 최소화하고, 관리 가능한 스레드 수를 유지하며, CPU 사용량과 시스템 호출을 최적화하는 모델로 설명합니다.
선택 및 폴에 비해 epoll의 장점: Epoll의 주요 장점은 상태 변경에 대한 커널 수준 관리로 인해 많은 수의 연결을 처리하는 효율성이 뛰어나 사용자 모드에서 커널 모드로 자주 전환할 필요성이 줄어듭니다.
사용 예 및 코드 조각
예제 코드: epoll 및 select 기반 서버를 설정하는 방법과 이벤트 및 오류를 처리하는 방법에 대한 예가 포함되어 있습니다.
이 문서는 여러 클라이언트 연결을 효율적으로 처리하기 위해 서버 아키텍처를 최적화하는 데 중점을 두고 Linux의 네트워크 프로그래밍에 대한 깊은 이해를 원하는 학생과 전문가에게 귀중한 리소스인 것 같습니다.