인터럽트 요청
인터럽트 요청 (Interrupt Request, IRQ), 줄여서 인터럽트는 CPU (중앙 처리 장치)가 현재 수행 중인 작업을 일시 중단하고, 특정 사건 또는 조건에 대한 처리를 우선적으로 수행하도록 요청하는 신호 또는 메커니즘이다. 인터럽트는 하드웨어 또는 소프트웨어에 의해 발생할 수 있으며, 시스템의 효율성과 응답성을 향상시키는 데 중요한 역할을 한다.
개념 및 작동 원리
인터럽트는 CPU가 외부 장치 또는 프로그램으로부터 발생하는 예상치 못한 이벤트에 대응할 수 있도록 한다. 일반적인 작동 방식은 다음과 같다:
- 인터럽트 발생: 주변 장치 (예: 키보드, 마우스, 네트워크 카드) 또는 프로그램이 인터럽트 요청을 발생시킨다.
- 인터럽트 처리: 인터럽트 컨트롤러는 인터럽트 요청을 우선순위에 따라 CPU에 전달한다.
- 현재 작업 중단: CPU는 현재 실행 중인 작업을 일시 중단하고, 현재 상태 (레지스터 값, 프로그램 카운터 등)를 스택에 저장한다.
- 인터럽트 핸들러 실행: CPU는 인터럽트 벡터 테이블을 참조하여 해당 인터럽트에 대한 인터럽트 핸들러 (Interrupt Handler) 또는 인터럽트 서비스 루틴 (Interrupt Service Routine, ISR)을 실행한다. 인터럽트 핸들러는 인터럽트를 발생시킨 이벤트에 대한 특정 작업을 수행한다.
- 작업 재개: 인터럽트 핸들러의 실행이 완료되면, CPU는 스택에 저장된 이전 상태를 복원하고 중단되었던 작업을 재개한다.
인터럽트의 종류
인터럽트는 발생 원인에 따라 크게 다음과 같이 분류할 수 있다:
- 하드웨어 인터럽트 (Hardware Interrupt): 외부 장치가 CPU에 보내는 신호로, 키보드 입력, 마우스 클릭, 네트워크 패킷 도착 등이 있다.
- 소프트웨어 인터럽트 (Software Interrupt): 프로그램 실행 중에 발생하는 인터럽트로, 시스템 호출 (System Call), 예외 (Exception) 등이 있다. 시스템 호출은 사용자 프로그램이 운영체제의 서비스를 요청할 때 사용되며, 예외는 0으로 나누기, 잘못된 메모리 접근 등과 같은 비정상적인 상황에서 발생한다.
- 타이머 인터럽트 (Timer Interrupt): 주기적으로 발생하는 인터럽트로, 운영체제가 스케줄링, 시간 관리 등을 수행하는 데 사용된다.
인터럽트의 중요성
인터럽트는 시스템의 효율성과 응답성을 향상시키는 데 필수적인 요소이다. 인터럽트가 없다면, CPU는 외부 장치가 준비될 때까지 끊임없이 상태를 확인해야 하며, 이는 CPU 자원의 낭비를 초래한다. 인터럽트를 통해 CPU는 다른 작업을 수행하다가 필요한 시점에만 외부 장치에 응답할 수 있으므로, 시스템 전체의 효율성을 높일 수 있다.
관련 용어
- 인터럽트 컨트롤러 (Interrupt Controller): 인터럽트 요청을 관리하고 우선순위를 결정하는 하드웨어 장치.
- 인터럽트 벡터 테이블 (Interrupt Vector Table): 각 인터럽트에 대한 인터럽트 핸들러의 주소를 저장하는 테이블.
- 인터럽트 핸들러 (Interrupt Handler) / 인터럽트 서비스 루틴 (Interrupt Service Routine, ISR): 특정 인터럽트에 대한 처리 루틴.
- 마스크 인터럽트 (Maskable Interrupt): 인터럽트 컨트롤러에 의해 무시될 수 있는 인터럽트.
- 비마스크 인터럽트 (Non-Maskable Interrupt, NMI): 반드시 처리해야 하는 인터럽트로, 전원 오류, 메모리 오류 등과 같은 심각한 시스템 오류를 나타낸다.