Post List

[네트워크 프로그래밍] 열혈 TCP/IP 12장 정리(IO 멀티플렉싱)

[네트워크 프로그래밍] 열혈 TCP/IP 12장 정리(IO 멀티플렉싱)


10~11장에서, 클라이언트 한명당 하나의 프로세스를 할당해 주었습니다.
이때 fork()를 사용했는데, 매번 이렇게 한다면, 속도도 속도이거니와 메모리를 너무 많이 쓴다는 점이 문제 입니다. 따라서 멀티플렉서를 사용하여 프로세스를 할당하지 않는 방법을 이 장에서 설명하고 있습니다.

기본 개념은, 컴퓨터 구조 과목 혹은 논리회로 과목에서 배웠던 MUX 를 사용한다는 점 입니다. MUX란, 여러 input이 한 소자(먹스)를 거쳐 다른 하나에 연결되는 구조를 가지는데, 컴퓨터 구조에서는 신호를 해독해서 먹스의 플래그를 ON하는 식 이었습니다.

리눅스, 윈도우 둘다 동일하게 select 함수를 사용합니다.

여담으로, 서버개발캠프에서 클라이언트단에서 서버로부터 데이터를 수신할 때 select 함수를 사용했었습니다. 운영체제는 윈도우 .NET C# 이었습니다. 자세한 내용은 모르고 빠르게 listen하기 위한 방법을 찾다가 select를 발견하고 적용하였는데, 이번 장에서 왜 select를 사용하는지 해답을 얻어서 너무 뿌듯합니다.

[참고] 윤성우의 열혈 TCP/IP 소켓 프로그래밍

댓글