OS/OS - Overview

입출력 구조

검정비니 2018. 9. 20. 08:34
728x90
반응형

입출력 구조 (I/O Structure)




저장장치는 컴퓨터 내 여러 형태의 입출력 장치 중 하나이다. 시스템의 신뢰성과 성능에 미치는 중요성, 그리고 장치들의 다양한 특성 때문에 운영 체제 코드의 많은 부분들이 입출력 기능을 관리하는데 할애된다.


범용 컴퓨터 시스템은 공통 버스에 의해 연결된 여러 개의 장치 제어기와 CPU들로 구성된다. 각 장치 제어기가 특정 유혀으이 장치를 담당하는데, 장치 제어기에 따라 하나 이상의 장치가 부착될 수도 있다. 예를 들어, SCSI(Small Computer System Interface) 제어기에는 7개 이상의 장치를 붙일 수 있다. 장치 제어기는 약간의 로컬 버퍼 저장장치와 특수 목적용 레지스터 집합을 유지한다. 장치 제어기는 자신이 제어하는 주변장치와 자신의 로컬 버퍼 저장장치 사이의 데이터 전송을 담당한다.


통상적으로 운영체제는 장치 제어기마다 장치 드라이버를 가지고 있다. 이 장치 드라이버는 장치 제어기의 동작을 이해하고 운영체제의 다른 부분에게 장치에 대한 일관된 인터페이스를 제공한다.



입출력 연산을 시작하기 위해 장치 드라이버는 장치 제어기의 적절한 레지스터에 필요한 값을 적재한다. 장치 제어기는 이어 취할 동작(예를 들면, "키보드에서 한 문자를 읽어라")을 결정하기 위해 이들 레지스터의 내용을 조사한다. 제어기는 장치로부터 자신의 로컬 버퍼로 데이터 전송을 시작한다.


일단 데이터의 전송이 완료되면, 장치 제어기는 자신이 연산을 완료했음을 인터럽트를 이용하여 장치 드라이버에게 통보한다. 그러면 장치 드라이버는 제어를 운영체제에게 반환하고 이때 입력 완료인 경우에는 데이터 또는 데이터에 대한 포인터를 같이 반환할 수 있다. 다른 동작에 대해서는 장치 드라이버는 상태 정보를 반환한다.



이 인터럽트 구동 방식의 입출력은 적은 양의 데이터를 전송하는 데에는 문제가 없으나 디스크 입출력과 같은 대량의 데이터를 전송하는 데에는 높은 오버헤드를 초래한다. 이 문제를 해결하기 위하여 직접 메모리 접근(DMA - Direct Memory Access) 장치가 사용된다.


장치에 대한 버퍼 및 포인터, 입출력 카운트를 세팅한 후, 장치 제어기는 CPU의 개입 없이 메모리로부터 자신의 버퍼 장치로 또는 버퍼로부터 메모리로 데이터 블록 전체를 전송한다. 속도가 느린 장치처럼 한 바이트마다 인터럽트가 발생하는 것이 아니라 블록 전송이 완료될 때마다 인터럽트가 발생한다. 장치 제어기가 전송 작업을 실행하고 있는 동안 CPU는 다른 작업을 실행할 수 있다.



아래의 그림은 컴퓨터 시스템의 구성요소 간의 상호작용을 보여준다.



반응형