IO장치에는 많은 종류가 있다.
이들은 각각 속도, 데이터, 전송 형식을 가지고 있으며 데이터 전송에 대해 규격화를 하기 어렵다라는 특징을 가지고 있다.
또한 일반적으로 CPU와 memory에 비해 데이터 전송률이 낮다는 특징도 가지고 있다.
위와 같은 특징들 때문에 I/O 장치들은 컴퓨터에 직접 연결되는 것이 아닌 device controller라는 hardware를 통해 연결된다.
device controller는 I/O controller, I/O module 등으로 부르기도 한다.
device controller는 컴퓨터 내부와 정보를 주고받도록 하고 하나 이상의 입출력 장치와 연결되어 있다. HDD도 자신의 device controller가 있다.
대표적으로 아래와 같은 문제들을 해결하는데 사용된다.
I/O device 종류가 많아 규격화가 어려운 문제는 device controller가 일종의 번역기 역할을 하면서 해결할 수 있고, 그 과정에서 I/O device에 문제는 없는지 오류를 검출하기도 한다.
Data buffering이란 전송률이 높은 장비와 낮은 장비 간에 주고 받는 데이터를 buffer라 부르는 임시 전송 공간에 저장하여 전송률을 맞추는 방식이다.
buffering은 쉽게 말하면 buffer에 조금씩 데이터를 모아 한번에 내보내거나, 한번에 많은 데이터를 입력받아 조금씩 내보내는 방법이라고 보면 된다.
device controller는 data register, status register, control register 세 가지로 구성된다.
새 장치를 컴퓨터에 연결하려면 device driver를 설치해야 한다.
device driver란 device controller의 동작을 감지하고 제어함으로써 device controller와 컴퓨터 간에 정보를 주고받을 수 있게 하는 프로그램이다.
당연시 실행과정에서 메모리에 저장되기도 한다.
IO 장치를 연결하기위한 software적인 통로이다.