CS/컴퓨터 시스템
동기식 입출력과 비동기식 입출력
권쥰
2023. 4. 16. 19:40
동기식 입출력과 비동기식 입출력
- [ 동기식 입출력 ]
- 현재 CPU를 잡은 프로세스가 IO 요청을 하게 되면 IO가 끝날 때까지 그 프로세스의 후속 명령을 수행하지 않는 입출력 방식
- 서로 보조를 맞출 때까지 기다림
- IO 요청 후 입출력 작업이 완료된 후에야 제어가 사용자 프로그램에 넘어감
- 2가지 구현 방식
-
- IO 가 끝날 때까지 계속 가지고 있고 완료될 때까지 기다림
- CPU를 낭비시킴 → CPU를 계속 잡고 있음
- 매 시점 하나의 IO만 일어날 수 있음
- 결국, IO 장치와 CPU 이용률이 크게 저하된다. → 그래서 2번 방식으로 구현한다.
-
- 빼앗는 방법
- IO가 완료될 때까지 해당 프로세스(오랜 시간이 걸리는 IO)에게서 CPU를 빼앗아 block 상태에 놓은 후
- → 당장 명령을 수행할 수 있는 ready 상태의 다른 프로세스에게 CPU를 준다.
- → IO가 완료되면 IO 컨트롤러가 인터럽트를 통해 IO의 완료를 CPU에게 알려줌
- → CPU는 이 프로세스(아까 block된)의 상태를 ready 상태로 바꾸어서 이제 CPU를 얻을 수 있는 기회를 주는 것
- 이러한 방식은 여러 프로세스가 동시에 각종 IO 장치의 서비스를 기다리는 줄에 설 수 있음
- 먼저 IO 요청한 프로세스가 먼저 처리되도록 IO 장치별 큐에 한 줄로 서서 처리받게 한다. → 동기성(synchronization)이 보장된다.
- 장점 = 장치들이 더 효율적으로 사용된다.
-
- 여러 IO 장치 에서 동시에 IO가 일어날 수 있음
-
- CPU도 놀지 않음
- [ 비동기식 입출력 ]
- IO의 완료가 되기 전에 IO를 요청한 프로세스에게 CPU 제어권을 곧바로 넘겨주어 IO의 완료 여부와 상관없이 할 수 있는 일을 수행하는 것이다.
- ex) IO가 시작된 후에 입출력 작업이 끝나기를 기다리지 않고(요청이 잘 전달되었다는 정도만 확인 받음) 제어가 사용자 프로그램에 즉시 넘어감
- 보통의 경우 IO 다음에 나오는 명령들은 그 IO의 결과를 활용하는 경우이기 때문에 동기식이 일반적인 IO이고 비동기식이 특별한 경우임
- 비동기식의 예) 디스크에 쓰는 연산인 경우
- disk에서 읽어오는 것이 아니라 disk에 쓰는 연산의 경우 다 써지기 전에도 후속 instruction의 수행이 가능하므로 비동기식 IO를 할 수 있다.
- 비동기식 예) 스레드를 사용하는 경우
- 하나의 스레드가 IO를 요청한 상태에서도 다른 스레드가 수행이 가능하므로 IO가 완료되기 전에 IO를 요청한 프로세스에게 CPU를 넘겨주어도 idle하지 않을 수 있다.
'CS/컴퓨터 시스템' Related Articles