
정의
- 인터럽트는 컴퓨터에 연결된 장치나 컴퓨터 내의 프로그램에서 발생하는 신호다.
- 인터럽트는 서비스나 현재 프로세스를 일시적으로 중지하거나 종료한다.
- 운영 체제를 중지하고 다음에 수행할 작업을 파악해야 한다.
- 우선적으로 처리해야 할 일이 발생하였을 때 그것을 처리하고 원래 동작으로 돌아온다.
- 대부분의 I/O 장치에는 ISR(Interrupt Service Rutine)이라는 버스 제어 라인이 있으며 이를 통해 서비스나 프로세스를 중지 및 종료하는 작업을 제어한다.
- 인터럽트 신호는 계획될 수도(프로그램에 의한 요청), 계획되지 않을 수도(시스템에서 실행 중인 프로그램과 관련되지 않은 이벤트로 인해 발생) 있다.
- 오늘날 거의 모든 컴퓨팅 시스템은 인터럽트 기반으로 이루어져 있다. 컴퓨팅 시스템은 프로그램의 컴퓨터 명령어 목록을 따르고 끝에 도달하거나 인터럽트 신호를 감지할 때까지 명령어를 실행한다.
- 인터럽트 신호가 감지되면 컴퓨터는 현재 프로그램 실행을 재개하거나 다른 프로그램 실행을 시작한다. 두 경우 모두 다음 작업을 결정하는 동안 작업을 중지해야 한다.
- 장치 프로세서는 인터럽트를 처리할 때 IRQ(인터럽트 요청, Interrupt ReQuest)이 인식되었음을 신호를 보내는 장치에 알린다. 그 뒤 장치는 IRQ 신호 전송을 중지한다.
- OS에는 일반적으로 인터럽트의 우선 순위를 지정하고 둘 이상이 처리 대기 중인 경우 대queue에 저장하는 Interrupt handler 코드가 포함되어 있다. 또한, 제어할 다음 프로그램을 결정하는 scheduler 프로그램도 있다.
- 인터럽트가 발생하면 관련 서비스가 즉시 시작되지 않을 수 있으며, 인터럽트가 발생한 시간과 ISR 실행이 시작되는 시간 사이의 간격을 인터럽트 대기 시간이라고 한다.
- 일반적으로 내부 장치 및 소프트웨어 프로그램에서 발생하는 인터럽트 신호를 소프트웨어 인터럽트, 외부 장치 및 I/O 장치에서 발생하는 인터럽트 신호와 CPU에 대한 인터럽트를 하드웨어 인터럽트라고 한다.
<aside>
💡
ISR(Interrupt Service Routine) : 모든 인터럽트마다 ISR이 존재한다. 각 ISR의 주소는 메모리의 고정된 위치에 저장된다. ISR은 비동기 인터럽트를 호출하고 Maskable Interrupts와 Non-Maskable Interrupts를 모두 처리할 수 있다.
실행 시작 시 ISR은 다른 장치 인터럽트 서비스를 비활성화한다. ISR 실행이 완료된 후 인터럽트 서비스를 다시 초기화한다.
어떤 소프트웨어나 하드웨어가 인터럽트를 발생시켰는지 알아내고, 이에 대해 CPU에 알리는 역할을 담당한다.
</aside>
특징
- 오늘날 거의 모든 컴퓨팅 시스템은 인터럽트 기반이다.
- 장치가 프로세스 i에서 인터럽트를 발생시키면 프로세서는 먼저 명령 i의 실행을 완료한다.
- 그 다음, ISR의 첫 번째 명령어 주소로 프로그램 카운터(PC)를 로드한다.