이 글은 "혼자 공부하는 컴퓨터 구조 + 운영체제"를 읽고 이해한 내용을 복습하기 위해 작성하는 글입니다.
이미지 출처 : 혼자 공부하는 컴퓨터 구조 + 운영체제
장치 컨트롤러 (하드웨어적 통로)
CPU, 메모리와 전송률이 비슷하지 않기 때문에 컴퓨터네 직접 연결되지 않고, 장치 컨트롤러와 연결
역할
CPU와 입출력장치간 통신
오류 검출
데이터 버퍼링
내부 구조
데이터 레지스터
- CPU와 입출력 장치간 주고받을 데이터가 담기는 레지스터
상태 레지스터
- 입출력장치가 준비가 되었는지, 작업이 완료되었는지, 오류는 없는지 등의 상태 정보 저장
제어 레지스터
- 입출력 장치가 수행할 내용에 대한 제어 정보, 명령 저장
프로그램 입출력
프로그램 속 명령어로 입출력장치를 제어
CPU가 장치 컨트롤러의 레지스터 값을 읽고 씀으로써 이루어진다.
인터럽트 기반 입출력
여러 입출력 장치에서 동시에 인터럽트가 발생한 경우
- CPU가 플래그 레지스터 속 인터럽트 비트를 비활성화 한뒤 순차적으로 인터럽트를 처리한다.
다중 인터럽트 처리 과정
PIC : 프로그래머블 인터럽트 컨트롤러 (하드웨어)
PIC가 장치 컨트롤러에서 인터럽트 요청신호를 받는다.
PIC가 인터럽트 우선순위를 판단한 뒤, CPU요청신호를 전송.
CPU는 PIC에 인터럽트 확인 신호를 전송.
PIC는 데이터 버스를 통해 CPU에 인터럽트 벡터 전송
해당 장치의 인터럽트 서비스 루틴 실행
프로그램 기반 입출력, 인터럽트 기반 입출력 : 입출력장치와 메모리간 데이터 이동은 CPU주도, 데이터는 항상 CPU를 거친다.
위 두개의 입출력과 다르게 메모리가 CPU를 거리치않고 상호작용이 가능
직접 메모리에 접근이 가능
과정
1. CPU가 DMA 컨트롤러에 입출력장치의 정보(주소, 연산 등)로 작업 명령
2. DMA 컨트롤러는 CPU대신 장치 컨트롤러와 상호작용하며 입출력 작업 수행 (필요하다면 메모리에 직접 접근)
3. 입출력 작업이 끝나면 CPU에 인터럽트를 걸어 작업완료를 알린다.