이 글은 윤성우의 TCP/IP 소켓 프로그래밍을 참고하였습니다.

순서

I. 멀티 플렉싱이란?

II. 멀티 플렉싱 서버모델


 

I. 멀티 플렉싱이란?

 

멀티 프로세스, 멀티 쓰레딩은 바로바로 느낌이 오는데, 멀티 "플렉싱"은 한 번에 느낌이 안 온다.

멀티 플렉싱이란
"하나의 통신채널을 통해 둘 이상의 데이터(시그널)를 전송하는 데 사용되는 기술"
"물리적 장치의 효율을 위해 최소한의 물리적 장치로 최대한의 데이터를 전달하는 기술"
이다.

간단하게 두 개의 클라이언트를 위해서 두 개의 프로세스, 두개의 스레드를 두는 것이 아니라
하나의 서버에서 두 클라이언트를 모두 처리하는 것이다.

어떻게 가능할까?

바로 첫 번째 정의에서 보이는 "시그널"이 해답이라고 생각한다.

서버는 항상 대기를 하고 있고, 클라이언트로부터 뭔가 신호가 오면
해당 파일 디스크립터를 받아 처리해주고 다시 대기상태로 들어가고

이런 방식일 것이다.

그렇다면 물리적 장치(서버)를 최소로 사용할 수 있을 것이다.


II. 멀티 플렉싱 서버 모델

앞서 말한 내용을 서버에 적용하면 다음과 같은 모습일 것이다.

 

그림1. 멀티 플렉싱 서버 모델

그림 1과 같이 서버라는 하나의 프로세스에서 시그널을 통해
3개의 클라이언트와 모두 데이터를 주고받는 것을 볼 수 있다.

 

비교를 위해 "멀티 프로세스" 서버 모델도 확인해보자.

그림2. 멀티 프로세스 서버 모델

위의 멀티 플렉싱과는 다르게
클라이언트마다 자식 프로세스를 새로 생성해준 것을 볼 수 있다.

 


+)윤성우 책에서는 다음과 같이 비유를 하였다.

멀티 프로세스
반에 한 명이 전학올 때 마다 교사 1명 추가해서 각각 질문을 받음.

멀티 플렉싱
교사는 1명이고 아이들이 손을 들게 해서(시그널) 손을 든 학생의 질문을 받음. 

+ Recent posts