TCP_IP 공부
TCP_IP 12주차 - 멀티 프로세서 기반 서버
NaZZU
2025. 5. 23. 11:01
두가지 유형의 서버
- 순차 접속 고속 처리 서버
- 순차적으로 접속하여, 요구를 빠르게 처리한 다음, 다음 순번의 접속자를 접속하여 처리하는 방식
- 고속 접속 순차 처리 서버
- 접속 요청자를 우선 접속한 후, 요구를 각 접속자에게 공평하게 분배하여 처리하는 방식
고속 접속(다중 접속) 서버의 구현 기법
둘 이상의 클라이언트에게 동시에 서비스를 제공하는 방식
- 멀티 프로세스 기반 서버 : 다수의 프로세스를 생성하여 처리하는 방식
- 멀티 플랙싱 기반 서버 : 입출력 대상을 묶어서 관리하는 방식
- 멀티 스레딩 기반 서버 : 클라이언트 수 만큼 쓰레드를 생성하여 처리하는 방식
프로세스와 스레드
프로세스
- 메모리에 로드되어 실행 중인 프로그램을 의미
- 생성된 프로세스는 운영체제에 의해 할당된 고유한 ID를 가진다
- 하나의 프로그램에서 여러 개의 프로세스가 동시에 실행될 수 있다
- 프로세스의 생성
- createProcess (Window) | fork(), exec() (Linux)
- 프로세스간의 통신
- 시그널을 이용하여 프로세스와 운영체제 간에 통신한다
- 프로세스 확인
- Tasklist (Window) | ps (Linux)
스레드
- 프로세스 하나만을 사용하여 프로그램을 실행하면 메모리의 낭비가 발생한다. 스레드는 프로세스와 달리 스레드간 메모리를 공유하며 작동한다
- 프로세스가 할당 받은 자원을 이용하는 실행 흐름의 단위. 스레드는 운영체제의 스케줄러에 의해 독립적으로 관리될 수 있는 가장 작은 단위
- 하나의 프로세스는 하나 이상의 스레드를 가지고 있다
- 스레드의 생성
- CreateThreads (Window) | pThread (Linux)
프로세스간의 통신
프로세스는 서로 완전한 별개의 메모리 구조를 가지기 때문에 프로세스 간의 통신을 위해 별도의 방법을 사용하여야 한다
- 파이프(PIPE) 기반 프로세스 통신

멀티 플렉싱
멀티 프로세스 기반은 여러 접속을 위해 많은 프로세스를 만들어야 하는 문제가 있다.
프로세스를 생성하는 것은 메모리를 많이 차지하며, 프로세스 간의 통신이 필요해져 서버의 구현이 더 복잡해진다.
멀티 프로세스 서버의 대안 중 하나가 IO 멀티플렉싱이다.
멀티 플렉싱
- 하나의 채널을 이용하여 둘 이상의 신호를 전달하는 기술
- 하나하나의 프로세스가 다수의 클라이언트에게 서비스 할 수 있는 방식
멀티 플랙싱의 장점 : 클라이언트 숫자와 관계없이 1개의 프로세스로 처리가 가능한다
Select 함수
대표적인 멀티 플랙스 서버 구현 방안
윈도우/리눅스 모두 함수가 제공되어 서버 구성 시 유리
파일 디스크립터를 배열에 저장해놓고 동시에 다음과 같은 사항을 점검하여 처리한다
- 데이터를 수신한 소켓 유무
- 블로킹되지 않고 데이터의 전송이 가능한 소켓 유무
- 예외 상황 발생 소켓 유무

Step1



Step2

Step3
