인터럽트

Interrupt: CPU가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치 또는 예외상황이 발생하여 처리가 필요한 경우 CPU에게 알려 처리할 수 있도록 하는 것.

→ CPU의 작업을 방해하는 신호

종류

하드웨어 인터럽트

: CPU가 아닌 다른 하드웨어 장치가 CPU에 어떤 사실을 알려주거나 CPU 서비스를 요청해야할 경우 발생

  • 외부 인터럽트 : 외부 입출력 장치에 의해 발생

    • 전원 이상 인터럽트 : 정전, 파워 이상
    • 기계 착오 인터럽트 : CPU 기능 오류
    • 외부 신호 인터럽트 : 타이머, 키보드, 외부 장치 인터럽트
    • 입출력 인터럽트 : 입출력 데이터 오류, 입출력 장치의 데이터 전송 요구, 다음 동작 수행 요구
  • 내부 인터럽트 : 잘못된 명령이나 잘못된 데이터 사용할 때 발생 (Trap)

    • 프로그램 검사 입터럽트 : 0으로 나눈 경우, Overflow/Underflow, 기타 예외 상황



소프트웨어 인터럽트

: 프로그램 처리 중 명령 요청에 의해서 발생

  • SVG : 복잡한 입출력 처리, 사용자가 프로그램 실행 / 감시 프로그램 호출 동작 수행




처리 과정

인터럽트 동작 원리

  1. 인터럽트 요청 발생
  2. 프로그램 수행 중단

    • 현재 수행 중인 명령의 수행이 완료된 시점에서 중단
  3. 현재 실행 중인 프로그램 상태 보관
  4. 인터럽트 처리 실행

    • 원인 판단
    • 서비스 루틴 결정 & 호출
  5. 인터럽트 서비스 루틴(ISR) 수행

    • 인터럽트 해결
  6. 상태 복구
  7. 중단된 프로그램 실행 재개




우선순위

→ 보류 중인 인터럽트 세트 중 어느 것이 먼저 서비스되는지

전원 이상 > 기계 착오 > 외부 신호 > 입출력 > 명령어 잘못 > 프로그램 검사 > SVC