컴퓨터 구조 & 운영체제/컴퓨터 구조

[컴퓨터 구조] 입출력 장치(장치 컨트롤러와 장치 드라이버)

ReBugs 2023. 6. 21.

이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다.


입출력장치는 모니터, 키보드 스피커 마우스뿐만 아니라 외장 하드 디스크, USB메모리 등도 포함된다.

보조기억장치가 컴퓨터 내부와 정보를 주고받는 방식은 입출력장치와 크게 다르지 않기 때문이다.

 

장치 컨트롤러

입출력장치는 CPU, 메모리보다 다루기가 더욱 까다롭다.

이유는 두 가지가 있다.

  1. 입출력 장치에는 종류가 너무나도 많다.
  2. 일반적으로 CPU와 메모리는 데이터 전송률이 높지만, 입출력 장치의 데이터 전송률은 낮다.

입출력 장치는 여러 개가 있고 각각마다 제조사마다 차이가 조금씩 있다. 따라서 다양한 입출력장치와 정보를 주고받는 방식을 규격화하기가 어렵다.

 

전송률이란 데이터를 얼마나 빨리 교환할 수 있는지를 나타내는 지표이다.

CPU와 메모리와 같이 전송률이 높은 장치는 1초에도 수많은 데이터를 주고받을 수 있지만, 키보드나 마우스와 같이 상대적으로 전송률이 낮은 장치는 같은 시간 동안 데이터를 조금씩만 주고받을 수 있다.

물론 어떤 입출력장치는 CPU나 메모리보다 전송률이 높은 경우도 있다. 하지만 결과적으로 CPU나 메모리와 전송률이 비슷하지 않기 때문에 같은 어려움을 겪게 된다.

 

이와 같은 이유로 입출력장치는 컴퓨터에 직접 연결되지 않고 장치 컨트롤러라는 하드웨어를 통해 연결된다.

장치 컨트롤러는 입출력 제어기, 입출력 모듈등으로 다양하게 불린다.

모든 입출력장치는 각자의 장치 컨트롤러를 통해 컴퓨터 내부와 정보를 주고받고, 장치 컨트롤러는 하나 이상의 입출력장치와 연결되어 있다.

 

장치 컨트롤러는 대표적으로 아래와 같은 역할을 통해 앞에서 언급한 문제들을 해결한다.

  • CPU와 입출력장치 간의 통신 중개 : 입출력장치 종류가 많아 정보 규격화가 어려웠던 문제는 장치 컨트롤러가 일종의 번역가 역할을 함으로써 해결한다.
  • 오류 검출 : 통신 중개 과정에서 장치 컨트롤러는 자신과 연결된 입출력 장치에 문제가 없는지 오류를 검출하기도 한다.
  • 데이터 버퍼링 : 버퍼링이란 전송률이 서로 다른 장치 간에 주고받는 데이터를 버퍼(buffer)라는 임시 저장 공간에 저장하여 전송률을 비슷하게 맞추는 방법이다. 쉽게 말해 버퍼링은 버퍼에 데이터를 조금씩 모았다가 한꺼번에 내보내거나, 데이터를 한 번에 많이 받아 조금씩 내보내는 방법이라고 보면 된다.

 

장치 컨트롤러의 내부구조에는 아래와 같이 3가지가 있다.

  • 데이터 레지스터 : CPU와 입출력장치 사이에 주고받을 데이터가 담기는 레지스터, 버퍼의 역할, 최근에는 주고받는 데이터가 많은 입출력장치에서는 레지스터 대신 RAM을 사용하기도 함.
  • 상태 레지스터 : 입출력 장치의 상태정보(작업준비, 오류 유무 등)가 저장된다.
  • 제어 레지스터 : 입출력장치가 수행할 내용에 대한 제어 정보와 명령을 저장
상태 레지스터와 제어 레지스터는 하나의 레지스터(상태/제어 레지스터)로 사용되기도 한다. 하지만 혼란을 방지하기 위해 이 글에서는 상태 레지스터와 제어 레지스터를 분리하여 표현함

이 레지스터들에 담긴 값들은 입출력 버스를 타고 CPU나 다른 입출력장치로 전달되기도 하고, 장치컨트롤러에 연결된 입출력장치로 전달된다.

 


 

장치 드라이버

장치 드라이버란 장치 컨트롤러의 동작을 감지하고 제어함으로써 장치 컨트롤러가 컴퓨터 내부와 정보를 주고받을 수 있게 하는 프로그램이다.

장치 컨트롤러가 입출력장치를 연결하기 위한 하드웨어직 통로라면, 장치 드라이버는 입출력장치를 연결하기 위한 소프트웨어적인 통로이다.

컴퓨터가 장치 드라이버를 인식하고 실행할 수 있다면 그 장치는 어떤 회사에서 만들어진 제품이든 상관없이 컴퓨터 내부와 정보를 주고받을 수 있다.

 

장치 드라이버는 운영체제가 기본으로 제공하는 것도 있지만, 장치 제작자가 따로 제공하기도 한다. 따로 제공하는 경우 입출력장치는 해당 드라이버를 직접 설치해야만 사용이 가능하다. 

댓글