Computer Science/Operating System
[OS] Blocking & Non-Blocking I/O
dbssk
2023. 7. 16. 21:02
Blocking I/O
I/O 작업이 진행되는 동안 유저 프로세스는 자신의 작업을 중단하고 대기하는 방식
- 유저는 커널에 read 작업 요청
- 데이터가 입력될 때까지 대기
- 데이터가 입력되면 유저에게 결과를 전달한 뒤 return
단점 : I/O 작업이 CPU 자원을 거의 쓰지 않으므로 자원 낭비가 심하다.
Non-Blocking I/O
I/O 작업이 진행되는 동안 유저 프로세스의 작업을 중단시키지 않는 방식
- 유저가 커널에 read 작업 요청
- I/O 작업이 즉시 완료될 수 없다면, 입력 데이터가 없다는 결과 메세지(EWOULDBLOCK)를 반환받고, 프로그램은 다른 작업을 계속 한다.
- 일정 시간 후에, I/O 작업을 다시 요청하여 데이터가 준비되었는지 확인한다.
- 데이터가 준비 될 때까지 2-3번을 반복하며, 데이터가 준비되면 그 결과를 받아서 처리한다.