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