인터럽트
컴퓨터 작동 중 예기치 않은 문제가 발생한 경우 문제를 해결하고 나서 원래 수행하던 프로그램을 다시 수행하는 메커니즘, 한 번에 하나의 명령만 수행할 수 있는 CPU의 한계를 보완함.
CPU의 program counter(PC)에 의해 명령어를 처리하던 프로그램이 도중에 인터럽트가 발생하면 현재 수행하던 프로그램, 프로세서의 상태를 저장하고 인터럽트 처리기(interrupt handler)로 점프.
인터럽트 처리 동작(Interrupt Service Routine : ISR) 수행을 마치고, 인터럽트 처리기가 다시 원래 수행하던 프로그램으로 Return 하면서 저장했던 프로그램과 프로세서 상태를 가져오고 하던 일을 진행함.
실생활로 보는 인터럽트
인터럽트의 종류
외부 인터럽트
CPU 외부에서 어떤 일이 발생한 것을 전기적 신호로 CPU에게 통지
정전/전원 이상 인터럽트 : 정전 또는 전원 공급의 이상으로 인한 인터럽트
기계 고장 인터럽트 : CPU, 기타 하드웨어의 오류로 인한 인터럽트
외부 인터럽트 : Timer나 Operator로 인한 인터럽트
입출력 인터럽트 : 입출력의 종료나 입출력 오류로 인한 인터럽트
프로그램 외부 상황에 따라 발생 시점이 일정하지 않으므로 비동기적.
내부 인터럽트
CPU 내부에서 실행하면서 인터럽트에 걸리는 경우
프로그램 검사 인터럽트 : Divide by Zero, Overflow/underflow 등
소프트웨어 인터럽트(=Trap)
사용자가 프로그램을 실행시키거나 Supervisor(OS)를 호출하는 동작을 수행할 경우
SVC(SuperVisor Call) : OS를 호출하는 동작을 수행하는 경우
발생 시점이 프로그램의 일정한 지점이므로 동기적.
인터럽트 동작 순서
1 : 인터럽트 요청
2 : 프로그램 실행 중단
현재 실행 중이던 Micro Operation까지 수행
3 : 현재 실행 중인 프로그램 상태 보관
Interrupt Vector를 읽어 ISR 주소 값을 얻음
ISR로 점프(이때, PC값은 자동 대피 저장됨)
현재 진행 중인 프로그램의 레지스터를 대피함
4 : 인터럽트 서비스 루틴 처리
인터럽트 원인을 파악하고 실질적인 작업 수행
서비스 루틴 수행 중, 우선순위가 더 높은 인터럽트가 발생하면 재귀적으로 1~5 과정 수행
5 : 상태 복구
해당 작업을 다 처리하면 대피시킨 레지스터를 복원
명령어가 실행되면 PC값을 복원해 이전 실행 위치로 복원
*인터럽트 관련 용어
인터럽트 핸들러(Interrupt Handler)
CPU에서 인터럽트가 접수될 때 이를 핸들링하기 위해 호출되는 함수. 인터럽트 핸들러가 호출되면 실행 중이던 레지스터와 PC를 보관함으로써 CPU의 상태를 보존한다. 인터럽트가 핸들링이 완료되면 이전의 상태로 복귀한다.
인터럽트 백터(Interrupt Vector)
여러 종류의 인터럽트에 대한 ISR의 시작 주소.
인터럽트 요청 발생 시 CPU는 인터럽트 소스가 무엇이며 해당 인터럽트 ISR이 어디에 적재되어있는지 확인해야 한다.
인터럽트 벡터 테이블 : 주기억 장치의 특정 영역에 여러 개의 인터럽트에 대한 인터럽트 벡터를 모아놓은 영역
PC(Program Counter)
CPU 내부에 있는 레지스터 중 하나로, 다음에 실행될 명령어의 주소를 가지고 있고 실행할 기계어 코드의 위치를 지정한다. 명령어 포인터라고도 부른다.
인터럽트 우선순위와 판별법
정전/전원 이상 인터럽트 > 기계 고장 인터럽트 > 외부 인터럽트 > 입출력 인터럽트 > 프로그램 검사 인터럽트 > SVC
폴링(Polling)
가장 높은 인터럽트로부터 요청 플래그를 검사하여 ISR을 수행하는 소프트웨어적인 방법. 인터럽트를 조사하는 비용이 들어 반응 시간이 느리나, 하드웨어를 추가할 필요가 없어 회로가 간단하다.
데이지 체인(Daisy Chain)
어디에 인터럽트가 발생하는지 확인하는 회로를 직렬로 연결하는 하드웨어적인 방법. 하드웨어 장치가 연속적으로 연결되어있다.
'CS 공부 > 컴퓨터 구조' 카테고리의 다른 글
컴퓨터 구조 11 : 메모리 계층 구조 (0) | 2022.01.28 |
---|---|
컴퓨터 구조 10 : 파이프 라인 (0) | 2022.01.25 |
컴퓨터 구조 08 : 명령어 집합, 주소 지정 모드 (0) | 2022.01.22 |
컴퓨터 구조 07 : CPU 디자인, 마이크로 연산과 ALU (0) | 2022.01.21 |
컴퓨터 구조 06 : CPU 구성요소/동작, 레지스터 종류, 명령어 사이클 (0) | 2022.01.21 |