이 글은 윤성우의 TCP/IP 소켓 프로그래밍을 참고하였습니다.
순서
I. 멀티 플렉싱이란?
II. 멀티 플렉싱 서버모델
I. 멀티 플렉싱이란?
멀티 프로세스, 멀티 쓰레딩은 바로바로 느낌이 오는데, 멀티 "플렉싱"은 한 번에 느낌이 안 온다.
멀티 플렉싱이란
"하나의 통신채널을 통해 둘 이상의 데이터(시그널)를 전송하는 데 사용되는 기술"
"물리적 장치의 효율을 위해 최소한의 물리적 장치로 최대한의 데이터를 전달하는 기술"
이다.
간단하게 두 개의 클라이언트를 위해서 두 개의 프로세스, 두개의 스레드를 두는 것이 아니라
하나의 서버에서 두 클라이언트를 모두 처리하는 것이다.
어떻게 가능할까?
바로 첫 번째 정의에서 보이는 "시그널"이 해답이라고 생각한다.
서버는 항상 대기를 하고 있고, 클라이언트로부터 뭔가 신호가 오면
해당 파일 디스크립터를 받아 처리해주고 다시 대기상태로 들어가고
이런 방식일 것이다.
그렇다면 물리적 장치(서버)를 최소로 사용할 수 있을 것이다.
II. 멀티 플렉싱 서버 모델
앞서 말한 내용을 서버에 적용하면 다음과 같은 모습일 것이다.
그림 1과 같이 서버라는 하나의 프로세스에서 시그널을 통해
3개의 클라이언트와 모두 데이터를 주고받는 것을 볼 수 있다.
비교를 위해 "멀티 프로세스" 서버 모델도 확인해보자.
위의 멀티 플렉싱과는 다르게
클라이언트마다 자식 프로세스를 새로 생성해준 것을 볼 수 있다.
+)윤성우 책에서는 다음과 같이 비유를 하였다.
멀티 프로세스
반에 한 명이 전학올 때 마다 교사 1명 추가해서 각각 질문을 받음.
멀티 플렉싱
교사는 1명이고 아이들이 손을 들게 해서(시그널) 손을 든 학생의 질문을 받음.
'Programming > Network(C++)' 카테고리의 다른 글
[Network][TCP/IP] 멀티플렉싱(3)_select 함수로 구현(Window) (0) | 2020.12.19 |
---|---|
[Network][TCP/IP] 멀티플렉싱(2)_select 함수로 구현 (Linux) (3) | 2020.12.18 |
[Network][Process] 멀티프로세스(2)_좀비프로세스(Only Linux) (0) | 2020.12.18 |
[Network][Process] 멀티프로세스(1)_프로세스의 이해(Only Linux) (0) | 2020.12.17 |