본문 바로가기

CS/컴퓨터 시스템

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

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

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

'CS > 컴퓨터 시스템' 카테고리의 다른 글

Chap 7_2. 프로세스  (0) 2022.08.20
Chap 7. 프로세스_1  (0) 2022.06.24
Chap 6. 프로그램 실행  (0) 2022.05.21
Chap 5. 컴퓨터 시스템 구조  (0) 2022.05.19
Chap 4. 운영체제란?  (0) 2022.05.18