-
[혼자 공부하는 컴퓨터구조 + 운영체제] 2회독 정리_3개발서적 2024. 5. 19. 17:02728x90
08. 입출력장치
8-1 장치 컨트럴러와 장치 드라이버
장치 컨트롤러
입출력 장치는 CPU, 메모리보다 다루기 더 까다롭다.
1. 입출력장치에는 종류가 너무나도 많다.
프린터, 카메라, 키보드, 헤드셋, 스피커 등등 다양한 입출력 장치와 정보를 주고 받는 방식을 규격화하기 어렵다
2. 일반적으로 CPU와 메모리의 데이터 전송률을 높지만, 입출력 장치의 데이터 전송률은 낮다.
1초에 1000마디 하는 사람과 1초에 1마디 하는 사람은 제대로 대화하기 어렵다.
이와 같은 이유로 입출력 장치는 직접 컴퓨터에 연결하지 않고, 장치 컨트롤러라는 하드웨어를 통해 연결한다.
하드 디스크를 뒤집어보면 볼 수 있는 하드웨어이다.
장치 컨트롤러의 역할
- CPU와 입출력 장치간의 통신 중개
- 오류 검출
- 데이터 버퍼링
이 중 데이터 버퍼링은 전송률이 높은 장치와 낮은 장치 사이에 주고받는 데이터를 버퍼라는 임시 저장 공간에 저장하여 전송률을 비슷하게 맞추는 방법이다.
장치 드라이버
장치 컨트롤러의 동작을 감지하고 제어함으로써 장치 컨트롤러가 컴퓨터 내부와 정보를 주고 받을 수 있게 하는 프로그램이다.
장치 컨트롤러가 입출력 장치를 연결하기 위한 하드웨어적 통로라면
장치 드라이버는 입출력 장치를 연결하기 위한 소프트웨어적 통로이다.
컴퓨터가 연결된 장치 드라이버를 인식하고 실행할 수 있다면 어떤 회사에서 만들이전 제품이든 생김새가 어떻든 컴퓨터 내부와 정보를 주고 받을 수 있다.
8-2 다양한 입출력 방법
장치 컨트롤러와 CPU가 정보를 주고 받는 방법에는 크게 3가지가 있다.
- 프로그램 입출력
- 인터럽트 기반 입출력
- DMA 입출력
프로그램 입출력
프로그램 속 명령어로 입출력 장치를 제어하는 방법
장치 컨트롤러 내부는 데이터 레지스터 상태 레지스터, 제어 레지스터 등이 존재한다.
그럼 CPU는 입출력 장치들의 주소를 어떻게 알까? 더 자세히는 장치 컨트롤러의 레지스터들은 이걸 어떻게 아는걸까?
여기에는 크게 2가지 방식이 있다.
- 메모리 맵 입출력 - 메모리에 접근하기 위한 주소 공간과 입출력 장치에 접근하기 위한 주소 공간을 하나의 주소 공간으로 간주하는법
- 고립형 입출력 - 메모리를 위한 주소 공간과 입출력 장치를 위한 주소 공간을 분리하는 방법
인터럽트 기반 입출력
입출력장치가 CPU에게 인터럽트 요청 신호를 보내면 CPU는 하던일을 잠시 멈추고 해당 인터럽트를 처리하는 프로그램인 인터럽트 서비스 루틴을 실행한 뒤 다시 하던일로 되돌아온다.
이렇게 장치 컨트롤러가 입출력 작업을 끝낸 뒤 CPU에게 인터럽트 요청 신호를 보내는 입출력을 인터럽트 기반 입출력 (I/O)라고 한다.
하지만 키보드, 스피커, 프린터 등 많은 입출력 장치에서 동시에 인터럽트가 발생하면 어떻게 처리하는 걸까???
CPU는 인터럽트 간 우선순위를 고려하여 우선순위가 높은 인터럽트 순으로 처리를 한다.
우선순위를 반영하여 다중 인터럽트를 처리하는 방법에는 여러가지가 존재한다고 한다.
많은 컴퓨터에서는 프로그래머블 인터럽트 컨트롤러 (PIC)라는 하드웨어를 사용하여 인터럽트의 우선순위를 판별한 뒤 CPU에게 지금 처리해야할 인터럽트가 무엇인지 알려주는 장치를 사용하고 있다.
DMA 입출력
앞선 2가지 방식의 공통점은 모두 CPU를 반드시 거친다는 점이다.
CPU를 거쳐야한다는 것은 그만큼 CPU 부담이 커진다는 것을 의미한다.
그래서 입출력장치와 메모리가 CPU를 거치지 않고 상호작용할 수 있는 DMA (Direct Memory Access) 입출력이 등장한다.
[출처 : 혼공컴운 (저자: 강민철)_한빛 미디어 ]
728x90'개발서적' 카테고리의 다른 글
[혼자 공부하는 컴퓨터구조 + 운영체제] 2회독 정리_2 (0) 2024.05.15 [혼자 공부하는 컴퓨터구조 + 운영체제] 2회독 정리 (1) 2024.05.06