개념공부/컴퓨터구조와 운영체제

08장 - 1 : 장치 컨트롤러와 장치 드라이버

Cadi 2025. 4. 26. 23:46

목표 : 입출력 장치를 컴퓨터 내부와 연결하고 소통하기 위한 장치 컨트롤러와 장치 드라이버의 학습

 

장치 컨트롤러(Device Controller)

 

입출력 장치는 앞서 이야기한 CPU, 메모리보다 다루기 더 까다롭다.

그 이유는 다음과 같다.

 

1. 입출력 장치는 종류가 많다.

 

키보드, 마우스, 스피커, SSD, 프린터, 마이크 등 입출력 장치는 다양한 기능을 가진 수많은 장치들이 존재한다.

자연스럽게 장치마다 속도, 데이터 전송 형식 등도 다양하다.

따라서 다양한 입출력 장치들과 정보를 주고받는 방식을 규격화하기 어렵다.

 

2. 일반적으로 CPU와 메모리의 데이터 전송률은 높지만, 입출력장치의 데이터 전송률은 낮다.

 

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

CPU같이 전송률이 높은 장치는 1초에도 수많은 데이터를 주고받을 수 있지만, 키보드/마우스와 같이 상대적으로 전송률이 낮은 장치는 같은 시간동안 CPU보다 적은 양의 데이터를 주고받을 수 있다. 이 차이는 CPU와 메모리, 입출력 장치등의 통신을 어렵게 만든다.

 

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

(다른 표현으로는 입출력 제어기(I/O Controller), 입출력 모듈(I/O Module) 등으로 불리기도 한다)

 

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

 

 

장치 컨트롤러의 역할

  • CPU와 입출력 장치 간의 통신 중개 : 정보의 종류를 규격화 하는 일종의 번역가 역할
  • 오류 검출 : 입출력 장치에 문제가 없는지 오류 검사 
  • 데이터 버퍼링 : 주고 받는 데이터를 버퍼라는 임시 저장 공간에 저장하여 전송률을 비슷하게 맞추는 역할

 

장치 컨트롤러의 내부

  • 데이터 레지스터 : 버퍼의 역할로 주고받을 데이터가 담김, 최근에는 RAM을 사용하기도 함
  • 상태 레지스터 : 입출력 작업의 준비가 되었는지, 작업이 완료되었는지, 오류가 없는지 등의 정보를 저장
  • 제어 레지스터 : 입출력 장치가 수행할 내용에 대한 제어 정보와 명령을 저장

 

 

장치 드라이버(Device Driver)

 

장치 드라이버란, 장치 컨트롤러의 동작을 감지하고 제어하여, 장치 컨트롤러가 컴퓨터 내부와 정보를 주고받을 수 있도록 해주는 소프트웨어적인 통로이다.
운영체제가 장치 드라이버를 인식하고 실행할 수 있어야만, 입출력 장치와의 통신이 가능하다.

 

 

질문 1 : '각자의 장치 컨트롤러를 통해'라는 말의 의미


정리했던 내용 중에  " 모든 입출력장치는 각자의 장치 컨트롤러를 통해 컴퓨터 내부와 정보를 주고받으며, 장치 컨트롤러는 하나 이상의 입출력 장치와 연결되어 있다." 라는 말이 있다. 각자의 장치 컨트롤러가 있는데 왜 굳이 하나 이상의 입출력 장치와 연결되는거지.. ? 라는 의문이 들었다. 각자 있으면 ( 입출력 장치 안에 내장되어 있으면 ) 다른 입출력 장치와 연결될 필요가 없지 않나 ?

 

답변 : 장치 컨트롤러는 입출력 장치에 내장되어 있는 것이 아니라 컴퓨터 본체 (또는 메인보드) 내부에 존재하고, 하나의 컨트롤러가 여러 입출력 장치를 관리할 수 있다. 

예를 들어 USB 포트를 관리하는 USB 컨트롤러와 같은 것들이 있어서 USB를 사용하는 여러 입출력 장치들은 이 컨트롤러를 통해 컴퓨터 내부와 통신할 수 있다.