1. 장치 컨트롤러와 장치 드라이버
1) 장치 컨트롤러
- 입출력장치는 CPU, 메모리보다 다루기 더 까다로움
- 입출력장치의 종류가 너무 많음
- 일반적으로 CPU, 메모리의 데이터 전송률을 높지만 입출력장치의 데이터 전송률은 낮음
- 결과적으로 CPU나 메모리와 전송률이 비슷하지 않음
- 장치 컨트롤러(device controller)
- 입출력장치가 연결되어 컴퓨터 내부와 정보를 주고 받음
- 장치 컨트롤러는 하나 이상의 입출력장치와 연결됨
- 입출력장치를 연결하기 위한 하드웨어 통로
- 장치 컨트롤러의 역할
- CPU와 입출력장치 간의 통신 중개
- 오류 검출
- 데이터 버퍼링
- CPU와 입출력장치 간의 전송률 차이를 데이터 버퍼링으로 완화
- 버퍼링(buffering): 전송률이 차이가 나는 장치 간의 데이터를 버퍼(buffer)라는 임시 저장 공간에 저장하여
전송률을 비슷하게 맞추는 방법
- 장치 컨트롤러 구조
- 데이터 레지스터(data register)
- CPU와 입출력 사이에 주고 받을 데이터가 담기는 레지스터
- 버퍼 역할
- 상태 레지스터(status register)
- 입출력 장치의 상태 정보를 저장
- 작업 준비 완료, 작업 완료, 오류 확인 등의 상태 정보
- 입출력 장치의 상태 정보를 저장
- 제어 레지스터(control register)
- 입출력 장치가 수행할 내용에 대한 제어 정보와 명령을 저장
- 데이터 레지스터(data register)
2) 장치 드라이버
- 장치 드라이버(device driver)
- 장치 컨트롤러의 동작을 감지하고 제어함으로써 장치 컨트롤러가 컴퓨터 내부와 정보를 주고 받을 수 있게 하는 프로그램
- 입출력장치를 연결하기 위한 소프트웨어적인 통로
- 장치 드라이버는 운영체제에 의해 인식하고 실행됨
- 운영체제가 기본으로 제공하는 장치 드라이버가 존재
- 어떤 드라이버를 직접 설치해야만 사용가능한 입출력장치도 존재
2. 다양한 입출력 방법
1) 프로그램 입출력
- 프로그램 입출력(programmed I/O)
- 프로그램 속 명령어로 입출력장치를 제어하는 방법
- CPU가 입출력 명령어를 읽으면 CPU는 해당 장치 컨트롤러와 상호작용하여 입출력 작업 수행
- CPU가 장치 컨트롤러의 레지스터 값을 읽어야함
메모리 맵 입출력 | 고립형 입출력 |
메모리와 입출력장치는 같은 주소 공간 사용 | 메모리와 입출력장치는 분리된 주소 공간 사용 |
메모리 주소 공간이 축소됨 | 메모리 주소 공간이 축소되지 않음 |
메모리와 입출력장치에 같은 명령어 사용 가능 | 입출력 전용 명령어 사용 |
2) 입터럽트 기반 입출력
- 입터럽트 기반 입출력(Interrupt-Driven I/O)
- 인터럽트로써 입출력을 수행
- 입출력장치를 제어하는 하드웨어 인터럽트는 장치 컨트롤러에 의해 발생
- CPU가 장치 컨트롤러에 입출력 작업을 명령하면, 장치 컨트롤러가 입출력장치를 제어하며 입출력을 수행
- 입출력을 수행하는 동안 CPU는 다른 작업 처리
- 입출력이 완료되면 장치 컨트롤러가 CPU에 인터럽트 요청 신호 전송
- CPU의 인터럽트 서비스 루틴 실행
- 다중 인터럽트 처리
- 프로그래머블 인터럽트 컨트롤러(PIC)
- 여러 장치 컨트롤러에 연결되어 장치 컨트롤러에서 보낸 하드웨어 인터럽트 요청들의 우선순위를 판별한 뒤 CPU에 제공
- 동작
- PIC가 장치 컨트롤러에서 인터럽트 요청 신호들을 받아들임
- PIC는 인터럽트 우선순위를 판단한 뒤 CPU에 처리해야할 인터럽트 요청 신호 전송
- CPU는 PIC에 인터럽트 확인 신호 전송
- PIC는 데이터 버스를 통해 CPU에 인터럽트 벡터를 전송
- CPU는 인터럽트 벡터를 확인하여 해당 장치의 인터럽트 서비스 루틴 실행
- 프로그래머블 인터럽트 컨트롤러(PIC)
3) DMA 입출력
- DMA(Direct Memory Access)
- 입출력장치와 메모리가 CPU를 거치지 않고 상호작용하는 입출력 방식
- 위의 두 가지 방식보다 CPU 연산 시간 보장
- 시스템 버스에 연결된 DMA 컨트롤러가 필요
- CPU는 DMA 컨트롤러에 입출력장치의 주소, 수행할 연산, 메모리의 주소 등과 같은 정보로 입출력 작업을 명령
- DMA 컨트롤러는 CPU 대신 장치 컨트롤러와 상호작용하며 입출력 작업을 수행
- 입출력 작업이 종료되면 DMA 컨트롤러는 CPU에 인터럽트를 걸어 작업 종료를 알림
- 입출력 버스(input/output bus)
- DMA 컨트롤러와 CPU는 시스템 버스를 동시에 접근할 수 없다는 단점
- DMA 컨트롤러와 입출력장치들을 입출력 버스에 별도로 연결하여 해결
- DMA 컨트롤러의 시스템 버스 사용빈도 감소
'컴퓨터 구조 &운영체제 > 컴퓨터구조 + 운영체제' 카테고리의 다른 글
프로세스와 스레드 (1) | 2024.02.20 |
---|---|
운영체제 (0) | 2024.02.15 |
메모리와 캐시 메모리 (0) | 2024.02.07 |
CPU 성능 향상 기법 (1) | 2024.02.06 |
CPU의 작동 원리 (0) | 2024.02.05 |