동기식 입출력 (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하지 않고 서로 독립적으로 움직여서 비동기식 입출력 방식이라고 불리는 것이다.
'CS > 운영체제(OS)' 카테고리의 다른 글
스레드(Thread)란? : 프로세스와의 비교 (0) | 2022.04.20 |
---|---|
프로세스와 프로세스 문맥, 문맥 교환(Context Switch) (0) | 2022.04.19 |
프로세스 주소 공간 : Stack, Data, Code (0) | 2022.04.19 |
운영체제의 이중연산모드 : 유저 모드, 커널 모드 (0) | 2022.04.18 |
운영체제 개념, 기능: 인터럽트, CPU 스케줄링, 메모리 관리, 디스크 스케줄링 (0) | 2022.04.17 |