Computer Science/Operating System

[OS] Blocking & Non-Blocking I/O

dbssk 2023. 7. 16. 21:02

Blocking I/O

I/O 작업이 진행되는 동안 유저 프로세스는 자신의 작업을 중단하고 대기하는 방식

  1. 유저는 커널에 read 작업 요청
  2. 데이터가 입력될 때까지 대기
  3. 데이터가 입력되면 유저에게 결과를 전달한 뒤 return

단점 : I/O 작업이 CPU 자원을 거의 쓰지 않으므로 자원 낭비가 심하다.

 

Non-Blocking I/O

I/O 작업이 진행되는 동안 유저 프로세스의 작업을 중단시키지 않는 방식

  1. 유저가 커널에 read 작업 요청
  2. I/O 작업이 즉시 완료될 수 없다면, 입력 데이터가 없다는 결과 메세지(EWOULDBLOCK)를 반환받고, 프로그램은 다른 작업을 계속 한다.
  3. 일정 시간 후에, I/O 작업을 다시 요청하여 데이터가 준비되었는지 확인한다. 
  4. 데이터가 준비 될 때까지 2-3번을 반복하며, 데이터가 준비되면 그 결과를 받아서 처리한다.