ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [운영체제] 동기식 입출력과 비동기식 입출력
    Computer Science/Operating System 2023. 1. 30. 23:06
    반응형

    입출력 (I/O)

    : 컴퓨터 시스템이 컴퓨터 외부의 주변 장치들과 데이터를 주고 받는 것을 의미

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

    : I/O 요청 후 입출력 작업이 완료된 후 제어가 사용자 프로그램에 넘어감 (순차적)
    ex. 프로그램이 디스크에서 어떤 정보를 읽어서 처리를 해야 하는 경우

    구현 방법 1. 

    - 입출력이 끝날 때까지 인터럽트를 기다렸다가 끝나면 사용자 프로그램에 CPU의 제어권이 넘어가 다음 명령어 수행 가능
    - 매 시점마다 하나의 CPU만 일을 하며, 하나의 입출력만 일어날 수 있음 ➡️ CPU 낭비

    구현 방법 2.

    - 입출력이 완료될 때까지 해당 프로그램에서 CPU의 제어권을 빼앗음 (해당 프로그램은 봉쇄 상태)
    - 입출력 처리를 기다리는 줄에 해당 프로그램을 세우고 다른 프로그램에게 CPU의 제어권을 넘김
    - 작업 중 오래 걸리는 작업은 뒤로 미뤄두고 먼저 끝나는 작업부터 처리하는 방법
    - 아예 다른 프로그램(프로세스)에게 제어권을 넘기기 때문에 I/O 작업을 추가적으로 진행할 수도 있음

    📍다수의 입출력 연산이 동시에 요청되거나 처리되는 경우
    : 매 시점 두 개 이상의 입출력 연산이 수행되기 될 경우, 처리 순서가 꼬일 수도 있음
    - A라는 프로그램이 디스크에 원래 1이던 파일의 내용을 3으로 바꾸는 입출력 연산을 요청
    - 연산 수행과정에서 A에게서 CPU를 가져가 B에게 할당
    - B가 CPU를 할당 받고 수행하며 A가 접근하려는 곳과 동일한 파일의 내용을 1 증가 시키는 연산 요청
    - 1 -> 3 -> 4 순이 아닌 1 -> 2 -> 3 순으로 바뀔 수도 있음
    ➡️ 입출력 요청의 동기화를 위해 장치별 큐를 두어 요청 순서대로 처리할 수 있도록 함

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

    : I/O가 시작된 후 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에 즉시 넘어감 (비순차적)
    - 입출력이 완료될 때까지 입출력과 관련 없는 프로그램을 수행하도록 하고, 요청된 입출력 연산이 완료되면 CPU에게 입출력이 완료되었음을 알려주는 방식으로 진행 (연산 완료 통보는 인터럽트를 통해 수행)

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

    동기식 입출력

    1. 사용자가 I/O 요청을 하면 운영체제의 커널로 CPU 제어권이 넘어와 입출력 처리 관련한 커널의 코드 실행
    2. 입출력을 호출한 프로세스의 상태를 봉쇄 상태로 바꾸어 입출력이 완료될 때까지 CPU를 할당받지 못하도록 함
    3. 입출력이 완료되면 I/O 컨트롤러가 CPU에게 인터럽트를 발생시켜 입출력이 완료되었음을 알려줌
    4. 해당 프로세스의 봉쇄 상태를 해제시켜 CPU를 할당 받을 수 있는 권한이 다시 생김 

    비동기식 입출력

    1. CPU의 제어권이 입출력을 요청한 프로세스에 곧바로 다시 주어지며, 입출력 연산이 완료되는 것과 무관하게 처리 가능한 작업부터 처리
    2. 입출력 연산이 완료되면 동기식과 마찬가지로 인터럽트를 통해 이를 CPU에게 알려줌
    3. 해당 시점부터 읽어온 데이터를 필요로 하는 명령을 수행

    반응형

    댓글

Designed by Tistory.