[운영체제] 입출력 시스템

[운영체제] 입출력 시스템

입력 시스템의 작동 과정

  1. CPU가 장치제어기의 레지스터에 명령을 적재합니다.
  2. 장치 제어기는 레지스터 내용을 조사하여 수행할 동작을 검사합니다.
  3. 레지스터 내용이 읽기 명령이므로 입력 장치(키보드 등)에게 읽기 신호를 보냅니다.
  4. 입력 장치는 데이터를 읽어서 버퍼에 저장합니다.
  5. 제어 부분은 CPU에 인터럽트를 발생시킵니다.
  6. CPU가 버퍼에서 데이터를 읽어 들이고 입력이 완료됩니다.
ex) C언어에서 scanf의 명령이 들어왔을 때

장치 제어기 

  • 공통 버스와 장치 사이에 위치하여 장치를 제어하는 역할을 합니다.
  • 장치 제어기는 내부적으로 저장 장치를 가지고 있을 수 있으며 자신의 주변 장치와의 데이터 송수신을 할 수 있도록 인터페이스 역할을 합니다.

동기식 입출력

  • 입출력이 시작되고 입출력이 끝난 후에 제어가 사용자 프로세스로 복귀하는 구조입니다. 
  • 매 순간마다 수행해야 할 입출력 요청은 하나가 되므로 운영체제는 어느 장치가 인터럽트를 호출하고 있는지 알고 있습니다.
  • 다만 여러 장치에 대한 동시 입출력은 불가능하며 각종 유용한 연산들을 병행 실행될 가능성을 완전히 배제합니다.

비동기식 입출력

  • 입출력이 시작되고 끝나기 전에 사용자 프로그램으로 제어가 되돌아갑니다. 
  • CPU가 하나의 요청을 보낸 다음에 인터럽트가 돌아오기 전까지 다른 일을 계속 수행할 수 있다는 장점을 가지고 있습니다.
  • 다만, 이 경우 입출력 장치 별로 장치의 종류, 주소, 상태 등의 정보를 매 순간 저장하여 관리할 필요가 있습니다. 
  • 이런 정보는 장치 상태 테이블의 형태로 저장되어 관리됩니다.
  • 또한 다른 프로세스들이 같은 장치에 대해 요청을 할 수 있기 때문에 운영체제는 매 장치를 위해서 대기 큐를 유지해야 합니다.
  • 하나의 입출력이 실행되는 동안에도 다른 시스템 작업들을 병행할 수 있다는 점에서 효율성이 증가합니다.
장치 상태 테이블에서 disk unit 2에 대기 큐를 유지하고 있는 상태



DMA(Direct Memory Access) 구조

  • DMA 방식은 데이터를 낱개가 아니라 블록 단위로 전송하는 효율적인 방식 중 하나입니다.
    • 위의 설명의 구조는 낱개로 전송하는 방식
  • DMA 방식을 채택하면 한 블록 단위의 데이터 전송을 할 때는 CPU의 간섭이 없고 자체적으로 입출력 작업을 처리할 수 있습니다.
  • 따라서 고속의 입출력 장치를 위해서 사용이 되며 기존의 발생했던 병목 현상을 개선하는 기술로 활용됩니다.
    • DMA를 사용하면서 속도 측면에서 많이 개선이 됨

DMA구조를 통해서 데이터를 블록 단위로 전송 함

DMA 입출력 방식의 작동 과정

  1. 운영체제가 입출력 요청을 보냅니다.
  2. DMA 제어기의 레지스터에 주소와 전송 길이가 저장됩니다.
  3. DMA 제어기는 한 블록의 입출력 동작을 수행하고 그 동안 CPU는 다른 작업을 합니다.
  4. 입출력 동작이 완료되면 DMA 제어기는 CPU에게 완료했다는 인터럽트를 보냅니다.






댓글

이 블로그의 인기 게시물

[Python] # -*- coding: utf-8 -*-를 쓰는 이유

[소프트웨어공학] NS(Nassi-Schneiderman) 차트

[컴퓨터네트워크] Telnet이란?