티스토리 뷰

OS

동기식과 비동기식 입출력

seoyoung02 2023. 1. 8. 21:00

동기식과 비동기식이라는 용어는 꼭 OS가 아니더라도 많이 사용되는 용어이다. 하지만 OS를 공부하면서 정리하는 것이므로 입출력을 기반으로 정리해보려고 한다.

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

어떤 프로그램이 입출력을 요청했을 때 입출력 작업이 완료된 후에 그 프로그램이 후속 작업을 수행할 수 있는 방식이다. 주로 읽기 작업에 사용된다. 일반적으로 디스크, 키보드와 같은 I/O 하드웨어들이 속도가 느리므로 CPU는 입출력 작업을 기다려야 한다. I/O요청을 수행하는 동안 CPU는 별다른 일을 하지 않는 것이다. 따라서 일반적으로 입출력 수행 중에 CPU를 다른 프로그램에 할당해 CPU가 계속 쉬지 않고 일을 할 수 있도록 관리한다. 이 관리를 위해 운영체제는 프로그램을 몇 가지 상태로 나누어 관리한다. 입출력이 완료될 때 까지 CPU가 명령을 수행하지 못하는 프로그램을 봉쇄상태(blocked state)로 전환하고, 봉쇄상태의 프로그램에는 CPU를 할당하지 않는다.

이렇게 CPU를 다른 프로그램에 할당하여 CPU를 쉬지 않게 할 때 동기성(synchronization)에 문제가 생길 수 있다. 예를 들어, 프로그램 A가 원래 1이었던 파일의 내용을 3으로 수정하는 I/O요청을 하고 이를 수행하는 동안 프로그램 B에게 CPU를 할당했다고 하자. 이때 공교롭게도 프로그램 B도 A가 접근한 파일과 똑같은 곳에 접근하여 파일의 내용을 +1 하는 요청을 했다. 그러면 입출력 컨트롤러는 A와 B의 요청을 순서를 바꾸어 처리할 수도 있다. 이렇게 되면 1→3→4로 변해야하는 출력이 1→2→3으로 바뀌는 문제가 생긴다. 이런 경우를 막기 위해 하드웨어에서는 요청들을 큐(queue)에 넣어 관리한다. 디스크 차원에서는 큐에 있는 요청을 순서대로 처리함으로써 동기화 문제를 해결할 수 있다.

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

입출력 연산을 요청한 후에 CPU 제어권을 입출력 연산을 호출한 해당 프로그램에  곧바로 부여하는 것은 비동기식 입출력이라고 한다. 읽기 요청이라면 비동기식 입출력이라고 하더라도 모든 데이터를 다 받아야 프로세스가 진행될 수 있을 것이므로, 읽어오는 데이터가 필요하지 않은 작업을 먼저 수행하고 입출력이 완료된 후 입력이 필요한 작업을 수행한다. 쓰기 요청이라면 데이터를 쓰는 동안 곧바로 다음 작업을 진행해도 될 것이므로 주로 쓰기 작업에 사용된다.
(입력의 경우 동기식과 다를 것이 없는 것 같은데.. 다르게 분류하여 사용하는 것인지 의문이다.)

 

출처: 운영체제와 정보기술의 원리 책

'OS' 카테고리의 다른 글

5장. 프로세스 관리  (0) 2023.02.18
4장. 프로그램 구조와 실행  (0) 2023.01.27
3장. 컴퓨터 시스템의 동작 원리  (1) 2023.01.15
2장. 운영체제 개요  (0) 2023.01.05
댓글
최근에 올라온 글
Total
Today
Yesterday
최근에 달린 댓글
링크
공지사항
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함