Last update: @1/7/2023
•
입출력장치가 다루기 까다로운 이유
◦
종류가 너무 많음
▪
따라서 속도, 데이터, 전송형식 등도 다양함
▪
따라서 다양한 입출력장치와 정보를 주고 받는 방식을 규격화하기가 어려움
◦
일반적으로 CPU와 메모리의 데이터 전송률은 높지만 입출력장치의 데이터 전송률은 낮음
▪
전송률(transfer rate) 차이로 인해 CPU와 메모리, 입출력장치 간의 통신이 어려움
•
장치 컨트롤러(device controller = I/O controller(입출력 제어기) = I/O module(입출력 모듈))
: 입출력장치를 컴퓨터에 연결해주는 하드웨어
◦
역할
▪
CPU와 입출력장치 간의 통신 중개
▪
오류 검출
▪
데이터 버퍼링(data buffering)
: 전송률이 높은 장치와 낮은 장치 사이에 주고받는 데이터를 버퍼라는 임시 저장 공간에 저장하여 전송률을 비슷하게 맞추는 방법. 쉽게 말해 버퍼에 데이터를 조금씩 모았다가 한꺼번에 내보내거나, 데이터를 한 번에 많이 받아 조금씩 내보내는 방법
◦
구조
▪
데이터 레지스터(data register)
: CPU와 입출력장치 사이에 주고받을 데이터가 담기는 레지스터. 버퍼 역할을 함
•
최근 주고받는 데이터가 많은 입출력 장치에서는 레지스터 대신 RAM을 사용하기도 함
▪
상태 레지스터(status register)
: 입출력장치가 입출력 작업을 할 준비가 되었는지, 입출력 작업이 완료되었는지, 입출력장치에 오류는 없는지 등의 상태 정보가 저장됨
▪
제어 레지스터(control register)
: 입출력장치가 수행할 내용에 대한 제어 정보와 명령을 저장함
•
상태 레지스터와 제어 레지스터는 하나의 레지스터(상태/제어 레지스터)로 사용되기도 함
•
장치 드라이버(device driver)
: 장치 컨트롤러의 동작을 감지하고 제어함으로써 장치 컨트롤러가 컴퓨터 내부와 정보를 주고받을 수 있게 하는 프로그램
◦
프로그램이기에 실행 과정에서 메모리에 올라감
◦
장치 드라이버를 인식하고 실행하는 주체는 정확히 말하자면 윈도우, macOS와 같은 운영체제임
▪
따라서 드라이버를 운영체제가 기본으로 제공하는 것도 있고, 장치 메이커가 따로 제공하는 것도 있음. 후자의 경우 해당 드라이버를 직접 설치해야만 사용이 가능함