입출력장치는 컴퓨터 외부에 연결되는 장치를 말한다. 어떻게 연결되어있을까?
장치 컨트롤러와 장치 드라이버에 대해 알아보자!
장치 컨트롤러(device controller)
- 컴퓨터 내부와 정보를 주고받는 하드웨어 부품. 입출력 제어기(I/O controller), 입출력모듈((I/O module) 이라고도 함.
- 다양한 입출력장치들로 인해서 CPU와 정보를 주고받는 형식 규격화 어려움.
- CPU의 전송률에 비해 입출력장치들의 전송률은 매우 낮다.
- 이러한 이유들로 인해서 CPU와 입출력장치는 장치 컨트롤러를 통해서 명령어를 수행함.
- 데이터의 교환 속도를 전송률(transfer rate)이라고 한다.
장치 컨트롤러의 역할
- CPU와 입출력장치 간의 통신 중계
- 오류 검출
- 데이터 버퍼링
- 버퍼링(buffering)이란? 전송률이 높은 장치와 낮은 장치 사이에 주고받는 데이터를 버퍼(buffer)라는 임시 저장 공간에 저장하여 전송률의 균형을 맞추는 방식.
장치 컨트롤러의 내부
- 데이터 레지스터(data register)
- CPU와 입출력장치 사이에 주고받을 데이터가 담기는 레지스터. 버퍼 역할을 하는 레지스터.
- 상태 레지스터(status register)
- 입출력장치의 주요 상태 정보들이 저장되는 레지스터.
- 제어 레지스터(control register)
- 입출력장치가 수행할 내용에 대한 정보와 명령이 저장되는 레지스터.
장치 드라이버(device driver)
- 장치 컨트롤러의 동작을 감지하고 제어함으로써 장치 컨트롤러가 컴퓨터 내부와 정보를 주고받을 수 있게 하는 프로그램.
- 장치 드라이버를 인식하고 실행하는 주체는 운영체제(윈도우, macOS 등).
- 장치 드라이버는 운영체제가 기본적으로 제공하는 것도 있지만, 장치 제작자가 따로 제공하기도 한다.
- 이 경우, 입출력장치는 해당 드라이버를 직접 설치해야만 사용 가능하다.