CPU 입출력 작업 처리
컴퓨터 구조
컴퓨터 구조를 공부하면서 알게된 내용을 요약해서 작성해보자.
장치 레지스터
- 장치(하드웨어)에도 자체적인 레지스터인 장치 레지스터가 있다.
- 장치 레지스터는 주로 장치에 관련된 일부 정보를 저장하며 두 가지 레지스터가 있다.
- 데이터를 저장하는 레지스터: 사용자가 키보드의 키를 누르면 이 정보는 레지스터에 저장된다.
- 제어 정보의 상태 정보를 저장하는 레지스터: 이런 레지스터를 읽고 쓰는 작업을 이용하여 장치를 제어하거나 장치 상태를 볼 수 있다.
- 장치 레지스터는 기계 명령어로 읽고 쓴다.
입출력 기계 명령어
- CPU 내부에서 자주 볼 수 있는 산술 계산, 점프, 메모리 읽기, 쓰기 등은 모두 특정한 기계 명령어가 있다.
- 이 특정한 기계 명령어를 입출력 명령어라고 한다.
메모리 사상 입출력
- LOAD, STORE 명령어는 메모리 주소 공간을 전달한다.
- 메모리 주소 공간과 실제 메모리 주소는 서로 다른 개념이다.
- 기계 명령어 관점에서 CPU에 보이는 것은 주소 공간이며, CPU는 주소 공간의 특정 주소에서 데이터를 읽어 온다.
- 주소 공간의 일부분을 장치에 할당하여, 메모리를 읽고 쓰는 것처럼 장치를 제어하는 방법이다.
- 컴퓨터의 저수준 계층에는 본질적으로 두 가지 입출력 구현 방법이 있다.
- 특정 입출력 기계 명령어를 사용한다.
- 메모리 읽기와 쓰기 명령어를 함께 사용하지만 주소 공간의 일부분을 장치에 할당하는 것이다.
폴링
- 장치 상태 레지스터를 지속적으로 읽는 작업으로 키보드를 누르면 바로 해당 키워드의 문제를 읽을 수도 있고, 누르지 않을 때는 계속 검사를 반복한다.
인터럽트 구동식 입출력
- CPU의 어떤 시간도 낭비하지 않는다.
인터럽트 신호
- CPU가 기계 명령어를 실행하는 과정은 명령어 인출, 명령어 해독, 실행, 다시 쓰기로 전형적인 단계를 나눌 수 있다.
- 인터럽트 신호가 없으면 모든 것이 정상적으로 동작한다.
인터럽트 처리와 함수 호출의 사이
- 인터럽트 처리 점프는 서로 다른 실행 흐름을 포함하므로 함수 호출에 비해 저장해야할 정보가 많다.