1. interrupt란?
- 사전적 의미 : 끼어들다, 중단시키다
- CPU의 정상적인 프로그래밍 실행을 방해했다.
- 프로그램을 실행하는 동안 예기치 못한 상황이 발생했을 때 현재 진행중인 작업을 중단하고 상황 처리 후, 다시 실행중인 작업으로 복귀하는 것
시스템프로그래밍 교수님께서
인생은 인터럽트 처리(훼방, 방해)
가 가장 중요하다고 했던 말씀이 떠올랐다...
옛날에 공부를 소홀히 한 나를 반성하면서 계속 공부해보자🥺
2. interrupt의 종류
하드웨어 인터럽트
- 일반적으로 하드웨어 장치의 컨트롤러가 CPU의 서비스를 요청하기 위해 발생시키는 인터럽트
- 타이머 인터럽트
-> 운영체제에서는 각 프로그램들이 공평한 시간 동안 CPU를 할당 받을 수 있도록 세팅된 시간 동안 CPU를 사용하고, 시간이 종료되면 인터럽트를 발생시킨다.
소프트웨어 인터럽트
트랩(Trap)
이라고도 사용된다.
- 예외(Exception) : 메모리 참조 오류, 0으로 나누기, Overflow, underflow등의 경우에서 발생
- 시스템 콜(System Call) : 사용자가 의도적으로 일으킨 인터럽트
3. interrupt 처리순서
1) 인터럽트 요청 신호 발생
2) 현재 실행 중이던 명령어까지 수행하고 프로그램 실행 중단
3) 다음에 실행할 명령어의 번지 PC에 보관
-> 현재 실행중인 프로그램 상태 보관
4) 인터럽트 처리 루틴 실행
-> 인터럽트를 요청한 장치 식별
5) 인터럽트 서비스 루틴 처리
-> 인터럽트 원인 파악 및 작업 수행
-> 우선순위가 더 높은 인터럽트가 발생하면 1) ~ 5)과정 수행
6) 상태 복구
-> 보관한 PC의 값을 다시 PC에 저장
7) 중단된 프로그램 실행 재개
-> PC의 값을 이용하여 수행중이던 프로그램 계속 실행
잠깐만!! 용어 정리!!
PC(Program Counter)
- CPU 내부에 있는 레지스터로서, 다음에 실행될 명령어의 주소를 가지고 있어 실행할 기계어 코드의 위치를 지정한다.
인터럽트 핸들러(interrupt handler)
- 인터럽트를 처리하는 루틴으로
인터럽트 서비스 루틴
이라고도 한다.
- CPU 에서 인터럽트가 접수되면, 해당 인터럽트 핸들러의 코드의 위치를 찾고 실행에 옮긴다. 실행 중이던 레지스터 와 PC를 보관함으로써 CPU의 상태를 보존한다. 인터럽트가 핸들링이 완료되면 이전의 상태로 복귀된다.
인터럽트 벡터(interrupt vector)
- 인터럽트 요청이 발생했을 때, CPU는 인터럽트 소스가 무엇이며, 해당 인터럽트가 어디에 보관 되어있는지를 확인해야한다. 이 때, CPU는 인터럽트 벡터를 활용
- 인터럽트가 발생했을 때, 그 인터럽트를 처리할 수 있는 서비스 루틴들의 주소를 가지고 있는 공간이다.
참고자료