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