입출력 작업 수행 방법 중 하나
장치 컨트롤러 & 장치 드라이버
다양한 외부 장치가 어떻게 컴퓨터 내부와 연결되고 소통하는지를 알기 위해 알아야하는 내용
장치 컨트롤러
CPU와 입출력장치 사이의 통신을 중개하는 중개자 역할의 하드웨어
•
같은 입출력장치라 하더라도 제조사마다 규격 및 작동 방식이 상이
→ CPU 입장에서 모든 입출력 장치의 작동 방식을 알기는 어려움
→ 입출력장치는 CPU와 직접 연결되어 정보를 주고받지 않고 장치 컨트롤러라는 하드웨어를 통해 연결
•
모든 입출력장치는 각자의 장치 컨트롤러를 통해 컴퓨터 내부와 연결되어 정보를 주고받음
참고
장치 드라이버
•
CPU가 실행하는 것은 결국 프로그램이며, CPU가 장치 컨트롤러와 상호작용하며 입출력장치를 작동
◦
이 말은, CPU가 장치 컨트롤러와 상호작용해 입출력장치를 작동시키는 것 또한 CPU가 실행하는 프로그램을 통해 이뤄진다는 말과 동일
•
일반적으로 장치 컨트롤러마다 이를 작동시키는 장치 드라이버라는 프로그램 존재
◦
장치 드라이버 : 장치 컨트롤러의 동작을 알고, 장치 컨트롤러가 컴퓨터 내부와 정보를 주고받을 수 있도록 하는 프로그램
◦
컴퓨터가 장치 드라이버를 인식하지 못하면, 장치 컨트롤러와 정보를 주고받을 방법을 알 수 없음
→ 입출력장치 실행 불가능
참고
DMA 입출력
직접 메모리에 접근할 수 있는 입출력 기능
DMA 입출력 방법을 사용하지 않는다면?
CPU가 입출력장치와 메모리 간의 데이터 이동을 주도해야 하며, 이동하는 데이터들도 반드시 CPU를 거침
입출력장치의 데이터를 메모리에 저장하는 경우
메모리 속 데이터를 입출력장치에 보내는 경우
DMA 입출력 등장
•
입출력장치와 메모리 사이에 전송되는 모든 데이터가 반드시 CPU를 거친다?
→ CPU 부담 증가
→ 따라서, CPU를 거치지 않고도 입출력장치와 메모리가 상호작용하는 입출력 방식(= DMA) 사용
•
DMA 입출력을 위해서는 시스템 버스에 연결된 DMA 컨트롤러라는 하드웨어가 필요
◦
DMA 컨트롤러는 시스템 버스에 연결
◦
입출력장치들의 장치 컨트롤러들은 입출력 버스라는 입출력장치 컨트롤러 전용 버스와 연결
DMA 입출력 과정
1.
CPU가 DMA 컨트롤러에게 입출력장치의 주소, 수행할 연산, 연산할 메모리 주소 등의 정보와 함께 입출력 작업을 명령
2.
DMA 컨트롤러가 CPU 대신 장치 컨트롤러와 상호작용하며 입출력 작업 수행. 이때 DMA 컨트롤러는 필요한 경우 메모리에 직접 접근하여 정보를 읽거나 씀. 입출력장치와 메모리 사이에 주고받을 데이터가 CPU를 거치지 않음
3.
DMA 컨트롤러는 입출력 작업이 끝나면 CPU에게 인터럽트를 걸어 작업이 끝났음을 알림
참고


