인터럽트
Interrupt: CPU가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치 또는 예외상황이 발생하여 처리가 필요한 경우 CPU에게 알려 처리할 수 있도록 하는 것.
→ CPU의 작업을 방해하는 신호
종류
하드웨어 인터럽트
: CPU가 아닌 다른 하드웨어 장치가 CPU에 어떤 사실을 알려주거나 CPU 서비스를 요청해야할 경우 발생
-
외부 인터럽트 : 외부 입출력 장치에 의해 발생
- 전원 이상 인터럽트 : 정전, 파워 이상
- 기계 착오 인터럽트 : CPU 기능 오류
- 외부 신호 인터럽트 : 타이머, 키보드, 외부 장치 인터럽트
- 입출력 인터럽트 : 입출력 데이터 오류, 입출력 장치의 데이터 전송 요구, 다음 동작 수행 요구
-
내부 인터럽트 : 잘못된 명령이나 잘못된 데이터 사용할 때 발생 (Trap)
- 프로그램 검사 입터럽트 : 0으로 나눈 경우, Overflow/Underflow, 기타 예외 상황
소프트웨어 인터럽트
: 프로그램 처리 중 명령 요청에 의해서 발생
- SVG : 복잡한 입출력 처리, 사용자가 프로그램 실행 / 감시 프로그램 호출 동작 수행
처리 과정
- 인터럽트 요청 발생
-
프로그램 수행 중단
- 현재 수행 중인 명령의 수행이 완료된 시점에서 중단
- 현재 실행 중인 프로그램 상태 보관
-
인터럽트 처리 실행
- 원인 판단
- 서비스 루틴 결정 & 호출
-
인터럽트 서비스 루틴(ISR) 수행
- 인터럽트 해결
- 상태 복구
- 중단된 프로그램 실행 재개
우선순위
→ 보류 중인 인터럽트 세트 중 어느 것이 먼저 서비스되는지
전원 이상 > 기계 착오 > 외부 신호 > 입출력 > 명령어 잘못 > 프로그램 검사 > SVC