(운영체제) 9장 입출력 시스템 기능과 구성

물리적 입출력 장치는 프린터, 콘솔 등 실제로 입출력을 수행하는 장치
입출력 모듈은 메모리나 프로세서 레지스터 등 내부저장 장치와 물리적(외부)입출력 장치 사이의 2진 정보를 전송하기 위한 방법을 제공한다.

1. 입출력 모듈


  • 프로세서로부터 수행해야 할 명령어를 전달받고 장치로부터 관련된 메시지를 인식한다.
  • 디스크로 전송될 때 까지 메모리로부터 온 데이터를 보관하기 위한 버퍼를 제공한다.
  • 직접 메모리 전송을 수행하기 위한 제어와 필요한 레지스터를 제공한다.
  • 주변기기를 제어한다.
  • 버퍼를 통한 데이터를 복사하고 전송한다.
  • 프로세서에게 데이터전송완료를 통보하기 위해 인터럽트 신호를 생성한다.


하나의 장치만을 제어하거나 여러개의 장치드을 제어하도록 구성될 수 있다.

  • 프로세서 제어 입출력(프로그램 제어 입출력, 인터럽트 기반 입출력)
  • DMA입출력
  • 채널 입출력


2. 프로그램 제어 입출력

프로세서 내부에 있는 입출력 데이터와 주소 레지스터를 입출력 모듈과 연결하는 형태로 레지스터와 버스사이에서 데이터를 직접 전송할 수 있는 가장 간단한 형태이다.
입력된 데이터는 입출력 모듈을 거쳐 한 번에 한 워드씩 입출력 데이터 레지스터로 전송되고 입출력 데이터 레지스터에서는 프로그램에 의해서 데이터를 누산기로 전송한다.

프로그램 제어 입출력 시스템의 경우에는 속도가 느리다. 왜냐하면 명령어 인출과 실행 사이클이 반드시 모든 데이터의 입출력이 종료된 후에 실행되기 때문이다.


3. 인터럽트 기반 입출력: 외부 입출력

인터럽트는 입출력 장치나 컴퓨터 내의 프로그램으로 부터 프로세서에게 보내는 하드웨어 신호로서 컴퓨터는 이때 실행중인 일을 멈추고 다음에 다른 프로그램의 시행을 시작 할 수 있다. 따라서 프로세서는 수행되어야 할 입출력 연산의 대기 시간을 소모할 필요가 없으므로 효율성이 증가하였다.

4. DMA입출력

하드웨어 장치가 프로세서 도움 없이 메인메모리로 부터 직접적으로 제어하여 데이터 전송이 이루어지는 형태를 직접메모리엑세스(DMA:Direct Memory Access)라고 한다.

임의의 기계 명령어와 주소 지정방식이 입출력 장치를 지정하는데 사용돌 수 있기 때문에 메모리 사상 입출력 방식은 많은 유연성을 제공한다. 대부분의 경우 메모리 주소 공간 중 연속된 일부분을 입출력 장치들에 할당하는데, 프로세서는 입출력 전송에 참여하지 않아도 되므로 프로세서 성능을 향상시킨다. 따라서 고속디스크에서의 데이터 전송에 적합하다.

<전송동작 과정>
1. 프로세서는 전송방향(입력 또는 출력),전송바이트 수, 데이터 블록의 메모리 주소 등을 DMA제어기에게 보낸다.
2. DMA제어기는 프로세서 도움 없이 디스크 제어기에게 메모리로 전송을 요청한다.
3. 디스크제어기는 메인메모리에 전송을 수행한다.
4. 전송이 종료되었을 때 DMA제어기에게 완료메시지를 전달한다.


이 과정을 거치면 DMA제어기는 프로세서에게 인터럽트 신호를 보낸다. 따라서 프로세서는 데이터의 전송시작과 종료할 때만 관계한다.
DMA제어기는 진행되는 동안 모든 버스 제어 신호를 생성하고 전송하는 버스 마스터 역할을 한다. DMA제어기가 버스 마스터이므로 프로세서는 버스 사용을 위하여 기다린다.
이런 현상을 "DMA제어기는 프로세서로 부터 버스 사이클을 스틸한다"고 한다.

5. DMA 채널

*먼저 프로그램-제어 입출력: 플세서가 계속 제어하므로, 주변장치와 컴퓨터의 연결에 최소한의 하드웨어만 사용한다.
* 직접 메모리 액세스: 매개변수의 초기화를 제외하고 프로세서를 모든 입출력 연산과 분리시키므로 데이터 전달을 제어하기 위해 외부 제어기가 필요하다.

저속 장치에서는 프로그램-제어 입출력을 사용하고 고속장치에서는 DMA를 사용한다.
IBM에서 제작된 컴퓨터들에서는 입출력처리기를 "입출력채널 I/O라고 부른다."

댓글

이 블로그의 인기 게시물

(ElasticSearch) 결과에서 순서 정렬

(네트워크)폴링방식 vs 롱 폴링방식

(18장) WebSocekt과 STOMP를 사용하여 메시징하기