컴퓨터 공학/OS
인터럽트
menuhwang
2023. 11. 21. 11:23
인터럽트 (Interrupt)
프로그램을 실행하는 도중 예기치 않은 상황이 발생할 경우 현재 실행중인 작업을 중단하고 발생된 상황을 처리한 후 다시 실행중인 작업으로 복귀하는 것
종류
- 외부 인터럽트
- 내부 인터럽트
- 소프트웨어 인터럽트
외부 인터럽트
- 전원 이상 인터럽트: 파워, 전원 이상
- 기계 착오 인터럽트: CPU의 기능적인 오류
- 외부 신호 인터럽트:
- 타이머에 의한 인터럽트: 자원이 할당된 시간이 다 끝난 경우
- 키보드로 인터럽트 키를 누른 경우: 컨트롤 + 알트 + 딜리트
- 외부장치로부터 인터럽트 요청이 있는 경우 (I/O 인터럽트 x)
- 입출력 인터럽트
- 입출력 장치가 데이터 전송을 요구하거나 전송이 끝나 다음 동작이 수행되어야 할 경우
- 입출력 데이터에 이상이 있는 경우
내부 인터럽트
- 잘못된 명령이나 잘못된 데이터를 사용할 때 발생하며 Trap이라 부른다.
- 프로그램 검사 인터럽트
- 0으로 나눈 경우
- 오버플로우 / 언더플로우
- 기타 Exception
소프트웨어 인터럽트(SVC: SuperVisor Call)
- 사용자가 프로그램을 실행시키거나 감시프로그램을 호출하는 동작을 수행하는 경우
- 소프트웨어 이용중 다른 프로세스를 실행시키면 시분할 처리를 위해 자원 할당 등의 동작이 수행된다.
인터럽트 동작 순서
- 인터럽트 요청
- 프로그램 실행 중단: 현재 실행중인던 작업까지 수행.
- 현재의 프로그램 상태 보존
- PCB(Process Control Block)
- PC(Program Counter)
- 인터럽트 처리 루틴 실행: 인터럽트를 요청한 장치를 식별
- 인터럽트 서비스 루틴 실행 (ISR: Interrupt Service Rutine)
- 인터럽트 원인 파악 및 작업 수행.
- 우선순위가 더 높은 인터럽트가 발생하면 재귀적으로 1~5를 수행.
- 상태 복구: 저장해둔 PC를 다시 복구
- 중단된 프로그램 시행 재개: 이전에 수행중이던 프로그램 재개
인터럽트 우선순위
- 전원 이상
- 기계 착오
- 외부 신호
- 입출력
- 명령어가 잘못된 경우
- 프로그램 검사
- SVC (SuperVisor Call)
하드웨어 인터럽트가 소프트웨어 인터럽트보다 우선 순위가 높고 내부 인터럽트 보다 외부 인터럽트가 우선이다.