-
인터럽트 종류
외부 인터럽트
- 전원 이상: 정전, 파워 이상
- 기계 착오: CPU의 기능적인 오류
- 외부: 자원 할당 시간 종료, 키보드로 강제 (control + Alt + Delete), 외부 장치로부터 인터럽트 요청
- 입출력 인터럽트: 입출력 장치의 데이터 전송 요구 or 전송 끝난 후 다음 동작 수행야 될 때, 입출력 데이터에 이상이 있는 경우
내부 인터럽트
- 잘못된 명령, 잘못된 데이터 사용
- 프로그램 검사: Division by zero, Overflow/Underflow
인터럽트 동작 순서
인터럽트 요청 → 프로그램 실행 중단 → 현재 상태 보존(PCB, PC) → 인터럽트 처리 루틴 실행 → 인터럽트 서비스 루틴 실행 → 상태복구(PC) → 중단된 프로그램 실행 재개(PCB)
PCB(Process control Block)
- 운영체제가 프로세스를 관리하기 위해 사용하는 자료 구조
- 프로세스의 실행 상태 및 관현 정보 저장, 추적
PC(Program Counter)
- CPU에서 현재 실행 중인 명령어의 위치를 가리키는 레지스터
- 다음에 실행할 명령어의 메모리 주소를 가지고 있고, 명령어가 실행되면 값이 업데이트
- 현재 프로그램이 어디서 무엇을 하고 있는지 알아야 하기 때문에 필요
ISR (Interrupt Service Routine)
- 하드웨어나 소프트웨어에 의해 인터럽트가 발생하면 이를 처리하기 위해 실행되는 코드 루틴
- 인터럽트 처리, 상태 보존 및 복원, 우선순위 관리, 인터럽트 중단 및 재진입 관리
인터럽트 우선순위
전원 이상 → 기계 착오 → 외부 신호 → 입출력 → 명령어 잘못 →프로그램 검사 → SVC
- 일반적으로 하드웨어 인터럽트 > 소프트웨어 인터럽트
- 일반적으로 내부 인터럽트 > 외부 인터럽트