CS/운영체제(OS)

동기식 입출력과 비동기식 입출력

hyunah 2022. 4. 18. 16:12

동기식 입출력 (Synchronous I/O)

동기식 입출력 방식에서는 I/O 요청 후 I/O 작업이 완료된 후에야 제어권이 유저 프로그램으로 넘어간다.

 

 

구현 방법

 

동기식 입출력은 두 가지 방식으로 구현이 가능하다.

 

1. I/O 작업이 끝날 때까지 CPU를 유휴상태로 낭비시킨다. 이렇게 할 경우 한 번에 하나의 I/O 작업만 일어날 수 있다.

 

2. I/O 작업이 끝날 때까지 I/O 요청을 한 프로그램에게서 CPU를 빼앗는다. I/O 처리를 기다리는 대기큐에 해당 프로그램을 추가하고 CPU는 다른 프로그램에게 넘긴다.

 

 

 

 

 

 

비동기식 입출력 (Asynchronous I/O)

비동기식 입출력 방식에서는 I/O 작업이 시작된 후에 해당 작업이 끝나기를 기다리지 않고 제어권이 I/O 요청을 한 프로그램에게 즉시 넘어간다.

 

 

 

 

두 경우 모두 I/O 작업이 완료되었다는 것은 인터럽트로 알려준다.

 

 

 

 

 

 

이를 그림으로써 나타내면 다음과 같다.

 

 

동기식 입출력은 requesting process에서 device driver를 거쳐 hardware data transfer 단계에서 I/O 작업의 결과값을 받을 때까지 대기하고 결과값을 받은 후에야 실행한다.

 

반면, 비동기식 입출력은 I/O 명령어를 전달하고 다시 requesting process로 돌아와서 다른 명령어를 수행한다. 유저 프로그램과 하드웨어와 synchronize하지 않고 서로 독립적으로 움직여서 비동기식 입출력 방식이라고 불리는 것이다.