인터럽트에 의해 메모리에있는 명령어들을 수행하는 역할을 하며, 산술논리연산장치(ALU), 제어장치(CU), 레지스터로 구성되어있다.
과정
- 제어장치에 의해서 메모리에 있는 데이터가 레지스터로 전달
- ALU는 레지스터에 있는 값들을 연산
- 연산결과를 메모리로 전달
제어장치(Control Unit): 명령어를 읽고 해석하며, 데이터 처리를 위한 실행 순서를 결정한다.
산술논리연산장치(ALU): 제어장치로부터 해석 된 명령을 받아 산술연산 및 논리연산을 진행한다.
레지스터(Register): CPU 안에 있는 매우 빠른 임시기억장치로, CPU와 직접 연결되어있어 메모리보다 수십 배에서 수백 배까지 빠르다.
CPU 자체적으로 데이터를 저장할 방법이 없기 때문에 레지스터에 데이터, 중간 결과 및 주요 변수를 저장하는 데 사용된다.
인터럽트(Interupt): CPU가 하던 작업을 잠시 중단시키고, 우선순위가 높은 다른 작업을 수행하고 다시 원래의 작업으로 복귀하도록 하는 신호
→ CPU가 프로그램을 실행하고 있을 때, I/O Device 또는 다른 예외상황이 발생하여 처리가 필요할 경우에 CPU에 알려서 처리하는 기술
- divided by zero 등 오류로 인한 인터럽트
- 키보드, 마우스 등 I/O 디바이스의 입출력으로 인한 인터럽트
- 프로세스 오류 등으로 발생하는 인터럽트
인터럽트 종류
- 하드웨어 인터럽트 / 외부 인터럽트: 하드 디스크 작업이 완료되거나 키보드 입력과 같은 하드웨어 이벤트가 발생하면 하드웨어 인터럽트가 발생
- 소프트웨어 인터럽트 / 내부 인터럽트 / 트랩: 프로세스의 오류 처리, 시스템 콜 호출, 예외 처리 및 다른 소프트웨어 이벤트로 인해 소프트웨어 인터럽트가 발생
→ 하드웨어 인터럽트보다 우선순위가 높다.
인터럽트 과정: 인터럽트 발생 → 인터럽트 핸들러함수들이 모여있는 인터럽트 벡터로 점프 후 해당 인터럽트에 대한 핸들러함수 실행 → 수행 이후 다시 순차적으로 명령어 실행
인터럽트 발생이유: 입출력 연산 <<< CPU 명령 수행속도 → 빠른 CPU와 상대적으로 느린 I/O 장치 간의 속도 차이를 극복하여 CPU 효율 극대화
- 실생활 예시: 사용자가 인쇄 기능을 사용하면 CPU는 프린터에게 문서 인쇄를 지시 → 프린터는 작업을 수행 → 프린터는 CPU만큼 처리 속도가 빠르지 않음 → CPU는 프린터가 작업을 마칠 때까지 기다리게 됨(효율↓) → 만약 인터럽트가 발생하면 CPU는 프린터가 하는 작업을 끝내기 전에 다른 작업을 하고 올 수 있다.
- 메모리에 접근할 수 있는 장치는 CPU밖에 없다.
- CPU에만 너무 많은 인터럽트 요청이 들어오면 부하가 걸릴 수 있기 때문에, DMA 컨트롤러를 통해서 CPU 부하를 막을 수 있다.
- 자원 예약 및 스케쥴링을 통해 CPU와 DMA 컨트롤러가 하나의 같은 작업에 대해서 동시에 처리 하는 것을 방지할 수 있다.
- CPU는 계산, 메모리는 기억
- Random access: 데이터를 직접적으로 접근할 수 있는 특성
- 메모리의 크기가 클수록 많은 일을 동시에 할 수 있다.
- 로컬 버퍼: 각 디바이스에서 데이터를 임시적으로 저장하는 데 사용되는 작은 메모리