공부하는 스누피
[운영체제] I/O모델: 동기, 비동기, Blocking, Non-Blocking 본문
동기식 입출력(syncronous I/O)
- 프로그램이 I/O 요청을 했을 때 해당 I/O 작업이 완료되어야 다음 작업을 할 수 있는 방식이다.
=> I/O가 진행되는 동안 다음 명령을 수행하지 않고 기다린다.
=> I/O 상태의 프로세스는 blocked state로 전환된다.
=> I/O가 완료되면 인터럽트를 통해 완료를 알린다. 이후 CPU의 제어권이 기존 프로그램에게 넘어간다.
=> blocked state의 프로세스는 wait 상태로 돌아간다.
- 명령 수행 속도는 빠르지만 입출력 연산은 상대적으로 느리다. 기다리는 과정에서 자원 낭비를 초래한다.
- 보통 I/O가 진행되면 CPU는 다른 프로그램의 작업을 수행하게 된다.
- 입출력 요청의 동기화
: 여러 프로세스가 동시에 I/O 요청을 할 경우 각 요청을 큐에 넣어 순서대로 처리한다.
비동기식 입출력(non-syncronous I/O)
- CPU의 제어권을 입출력 연산을 호출한 프로그램에게 곧바로 다시 부여한다.
- I/O 결과와 관련 없는 연산이 있을 경우 주로 사용된다.
- CPU는 I/O 결과와 상관 없이 처리 가능한 작업부터 처리한다.
- I/O 연산이 완료되면 인터럽트를 통해 알린다.
Blocking I/O
- 직접 제어할 수 없는 대상의 작업(I/O)이 완료될 때까지 기다린다.
=> I/O가 완료되어야 제어권이 프로세스로 넘어간다.
- 동기와 마찬가지로 자원이 낭비된다.
Non-Blocking I/O
- I/O 작업이 진행되는 동안에도 유저 프로세스의 작업을 중단시키지 않는다.
=> 제어권을 바로 반납한다.
- I/O 완료와 상관없이 작업 결과가 반환된다.
=> 이를 입력 데이터가 있을 때까지 반복하고, 입력 데이터가 있으면 결과가 전달된다.
- 대기하지 않아도 되지만 I/O 완료를 확인해야 하기 때문에 시스템 호출이 반복된다.
- 동기, 비동기는 개선된 I/O 이벤트 통지 모델이다.
동기 | 비동기 | Blocking | Non-Blocking | |
제어권 반납 | I/O 완료 후 | 즉시 | I/O 완료 후 | 즉시 |
I/O 진행중 CPU | 다른 프로세스 수행 | 기존 프로세스 수행 | 일시정지 | I/O 완료 확인 반복 |
I/O 완료 알림 | 인터럽트로 알림 | 인터럽트로 알림 | I/O 결과 반환 | 시스템 호출에 대한 I/O 결과 반환 |
완료 시점과 결과 반환 시점의 일치 |
일치 | 불일치 | 일치 | 일치 |
=> 동기/비동기는 인터럽트 발생으로 인한 제어권 반환 시점에 중점을 두고 Blocking/Non-Blocking은 제어권 자체에 중점을 둔다는 점에서 차이가 있다.
(참고)
반효경. 운영체제와 정보기술의 원리 2020개정판. 이화여자대학교출판문화원
velog.io/@codemcd/Sync-VS-Async-Blocking-VS-Non-Blocking-sak6d01fhx
'CS > 운영체제' 카테고리의 다른 글
[운영체제] 사용자 모드, 커널 모드 (0) | 2021.04.17 |
---|---|
[운영체제] 교착 상태 Deadlock (0) | 2021.04.12 |
[운영체제] 가상 메모리 (0) | 2020.11.23 |
[운영체제] CPU 스케줄링 (0) | 2020.11.17 |
[운영체제] 프로세스(Process) 정리 (0) | 2020.07.15 |