-> 목차
입출력(I/O)이란 컴퓨터 시스템이 컴퓨터 외부의 주변 장치들과 데이터를 주고받는 것을 말한다.
동기식 입출력(synchronous I/O)
입출력 요청 후 입출력 작업이 완려된 후에야 CPU의 제어권이 그 프로그램에게 다시 넘어갈 수 있는 방식
입출력 연산이 끝날 때까지 CPU는 아무 일을 수행할 수 없다.
CPU의 명령 수행 속도는 빠르지만 입출력 연산은 상대적으로 느리다.
입출력이 완료될 때까지 CPU가 아무 일도 하지 못하기 때문에 자원의 낭비를 초래하게 된다.
따라서 일반적으로 프로그램이 입출력을 수행중인 경우 CPU를 다른 프로그램에게 이양해 CPU가 쉬지 않고 일할 수있도록 관리한다.
예를 들어 프로그램 A가 CPU를 할당받고 명령을 수행하다가 입출력 요청을 하게 되면 입출력 작업이 완료될 때까지
CPU의 낭비가 초래되므로 CPU를 프로그램 A에게서 선점해 다른 프로그램 B에게 할당하게 된다.
이는 입출력이 완료될 때까지 그 프로그램에 CPU를 할당하더라도 명령을 수행하지 못하기 때문인데, 이것을 프로그램을
봉쇄 상태(blocked state)
로 전환시킨다고 말한다. 봉쇄 상태의 프로그램에게는 CPU를 할당하지 않고, CPU를 할당하면 곧바로
작업을 수행할 수 있는 프로그램들에게만 CPU를 할당한다.
동기식 입출력에서는 입출력 요청의 동기화를 위해 장치별로 큐(queue)
를 두어 요청한 순서대로 처리할 수 있도록 한다.
비동기식 입출력(asynchronous I/O)
입출력 연산을 요청한 후에 연산이 끝나기를 기다리는 것이 아니라
CPU의 제어권을 입출력 연산을 호출한 그 프로그램에게 곧바로 다시 부여하는 방식.
입출력 연산이 완료되는 것과 무관하게 처리 가능한 작업부터 처리한다.
입출력 연산이 완료되면 동기식과 마찬가지로 인터럽트를 통해 이를 CPU에게 알려 주게 된다.
그러면 그 시점부터 읽어온 데이터를 필요로 하는 명령을 수행하 수 있게 된다.
일반적으로는 동기식 입출력을 사용한다.
위 글은 운영 체제와 정보 기술의 원리 -반효경
책을 정리하기 위해 쓴 글입니다.
https://book.naver.com/bookdb/book_detail.nhn?bid=4392911