Data Engineering/혼공컴운
혼자 공부하는 컴퓨터구조 + 운영체제 8장 정리
potatode
2025. 2. 5. 23:33
8. 입출력장치
8.1 장치 컨트롤러와 장치 드라이버
장치 컨트롤러
- 입출력장치를 다루기 어려운 이유
- 종류가 많음
- ⇒ 정보 주고받는 방식을 규격화하기 어려움
- 데이터 전송률이 CPU, 메모리보다 낮음
- ⇒ CPU, 메모리, 입출력장치 간의 통신을 어렵게 함
- 그렇기에 보통 ‘장치 컨트롤러’를 하드웨어에 연결
- 장치 컨트롤러 역할
- CPU와 입출력장치 간의 통신 중개
- 오류 검출 - 번역가 역할을 하게 됨
- 데이터 버퍼링
- 전송률 차이가 있는 장치 사이에 데이터를 ‘버퍼’라는 임시 저장 공간에 저장하여 전송률을 비슷하게 맞추는 방법
- 내부 구조
- 데이터 레지스터
- CPU와 입출력장치 사이에 주고받을 데이터가 담기는 레지스터
- 상태 레지스터
- 입출력장치의 준비 상태, 완료, 오류 등의 상태 정보 저장
- 제어 레지스터
- 입출력장치가 수행할 내용에 대한 제어 정보와 명령 저장
- 데이터 레지스터
장치 드라이버
: 장치 컨트롤러의 동작 감지하고 제어 → 장치 컨트롤러가 컴퓨터 내부와 정보를 주고받을 수 있게 하는 프로그램
- 장치 컨트롤러가 하드웨어적 통로라면
- 장치 드라이버는 소프트웨어적 통로
8.2 다양한 입출력 방법
- CPU와 장치 컨트롤러가 정보를 주고받는 방법
프로그램 입출력
: 프로그램 속 명령어로 입출력 장치를 제어하는 방법
- CPU가 프로그램 속 명령으롤 실행하는 과정에서 입출력 명령어를 만나면
- CPU는 입출력장치에 연결된 장치 컨트롤러와 상호작용하며 입출력 작업 수행
- CPU가 장치 컨트롤러의 레지스터 값을 읽고 씀으로써 이루어짐
- CPU가 장치 컨트롤러의 레지스터들을 아는 방법
- 메모리 맵 입출력
- 고립형 입출력
- 메모리 맵 입출력
: 메모리에 접근하기 위한 주소 공간과 입출력 장치에 접근하기 위한 주소 공간을 하나의 주소 공간으로 간주하는 방법
- 고립형 입출력
: 메모리를 위한 주소 공간과 입출력 장치를 위한 주소 공간을 분리하는 방법
- 메모리 접근 명령어와 입출력장치 접근 명령어가 다름
인터럽트 기반 입출력
: 인터럽트를 기반으로 하는 입출력
- 여러 입출력장치에서 인터럽트가 동시에 발생한 경우는?
- 인터럽트 발생 순서대로 인터럽트 처리
- 우선순위가 높은 인터럽트 순으로 여러 인터럽트 처리
- 플래그 레지스터 속 인터럽트 비트가 활성화되어 있는 경우
- NMI가 발생한 경우
- 우선순위 반영하여 다중 인터럽트 처리하는 방법
- 프로그래머블 인터럽트 컨트롤러(PIC)
- 여러 핀으로 인터럽트 우선순위 판별
- : 인터럽트 요청들의 우선순위를 판별한 뒤 CPU에 지금 처리해야 할 하드웨어 인터럽트는 무엇인지 알려주는 장치
- PIC를 여러개로 두어 계층적 구성을 하는 경우도 많음
- 프로그래머블 인터럽트 컨트롤러(PIC)
DMA 입출력
- DMA : 입출력장치와 메모리가 CPU를 거치지 않고도 상호작용할 수 있는 입출력 방식
- 직접 메모리에 접근할 수 있는 입출력 기능
- DMA 컨트롤러 필요
- DMA 입출력 과정
- CPU가 DMA 컨트롤러에 입출력장치 주소, 연산 등 정보로 입출력 작업 명령
- DMA 컨트롤러가 장치 컨트롤러와 상호작용
- 입출력 작업이 끝나면 CPU에 인터럽트 걸어 작업 종료 알림
- 문제점 : 시스템 버스 동시 사용 불가능
- ⇒ CPU가 사용하지 않을 때나, 허락을 구하고 사용
- 입출력 버스
- DMA 컨트롤러와 장치 컨트롤러들을 별도의 버스로 연결
- 시스템 버스가 아니므로 시스템 버스 사용 빈도 줄일 수 있음
반응형