select

- 전통적인 방식으로, 대부분의 os가 지원.

- 프로세스가 커널에 파일 디스크립터(이하 FD) 상태를 직접 조회.

- 한 번에 다수의 FD를 조회하여 I/O 상태를 관찰.

- 때문에 무한 루프 방식으로 지속된 polling 필요 (CPU 낭비).

- 한 번에 조회할 수 있는 FD의 수는 1024로 제한됨.

- timeout 사용 방식에 따라 blocking이 될 수도, non-blocking이 될 수도 있음.

 

 

poll

- 기본적인 작동 방식은 select와 유사함.

- 조회 FD의 개수 제한이 없음.

- select에 비해 os specific하여, 이식성이 상대적으로 나쁨.

 

 

epoll

- 개선된 poll으로, 이벤트 기반으로 작동.

- 관리 FD 개수 무제한.

- 커널이 FD의 상태를 직접 관리하며, 상태가 변경된 FD를 던져줌.

- 때문에 커널로의 통신에 따른 오버헤드가 대폭 줄어듦.

 

 

IOCP (Input/Output Completion Port / Overlapped IO)

- 입출력을 담당할 포트를 지정하여 처리.

- 내부에 큐를 두어, 입출력이 완료되었음을 큐에 저장.

- non-blocking. 백그라운드로 작동.

- async 방식으로, 콜백 사용 가능.

 

+ Recent posts