I/O model

Asterisk
3 min readFeb 26, 2017

--

I/O 모델 설명에 앞서 input operation은 다음 두 단계를 거친다는 것을 알 필요가 있다.

  1. data가 준비될 때(패킷이 도착할 때)까지 대기
  2. 커널 버퍼에서 프로세스로 data 복사

Blocking I/O 모델

  • 가장 기본적인 I/O 모델
  • 시스템 콜 이후, data가 반환되기 전까지 process가 블록됨

Nonblocking I/O 모델

  • 시스템 콜 시점에서 data가 준비되지 않으면 즉시 에러를 반환
  • data가 준비된 이후, 다시 시스템 콜이 일어나면 해당 시점에서 data 복사
  • 위의 그림에서처럼 지속적으로 시스템 콜을 시도하는 방식을 poll이라 함

I/O multiplexing 모델

  • 위의 두 방식(select or poll)을 골라씀

Signal-Driven I/O 모델

  • Nonblocking I/O Model의 busy wait을 막기위해 커널에서 프로세스로 signal로 통지

Asynchronous I/O 모델

  • Signal-Driven I/O Model과 달리 data가 준비된 시점을 알리는 것이 아니라 copy가 완료된 시점을 알림
  • I/O를 기다리는 동안 process가 블록되지 않음

Synchronous I/O vs. Asynchronous I/O

POSIX에서는 Synchronous I/O와 Asynchronous I/O를 process 블록을 유발하는가 아닌가로 구분 짓는다.

따라서 위에서 설명한 I/O 모델 중Asynchronous I/O 모델을 제외한 모든 I/O 모델들은 Synchronous I/O로 정의된다.

참조: http://www.masterraghu.com/subjects/np/introduction/unix_network_programming_v1.3/ch06lev1sec2.html

--

--