공부하는 스누피

[운영체제] I/O모델: 동기, 비동기, Blocking, Non-Blocking 본문

CS/운영체제

[운영체제] I/O모델: 동기, 비동기, Blocking, Non-Blocking

커피맛스누피 2020. 11. 11. 01:02

동기식 입출력(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

 

Sync VS Async, Blocking VS Non-Blocking

1. Sync VS Async 먼저 Synchronous와 Asynchronous의 어원을 보자. Synchronous의 Syn는 together이란 뜻이고, chrono는 time이다. 따라서 Synchronous는 함께 시간을 맞춘다라는 뜻으로 해석된다. 반면에 A

velog.io

 

Comments