이 글은 일명 공룡책 Operating System Concepts, 10th ed 를 읽고 정리한 것이다.
개념
하드웨어(디바이스 컨트롤러)가 소프트웨어(디바이스 드라이버)에 정보를 전달하는 방식. 버스에 시그널을 탑재하여 인터럽트를 생성한다.
CPU가 인터럽트를 감지하면 진행 작업을 즉시 중단하고, 인터럽트를 처리하기 위한 동작을 실시한다. 실행점execution을 서비스 루틴service routine; interrupt handler이라는 사전 고정점으로 이동시킨다.
인터럽트 처리가 완료되면 인터럽트 이전의 작업을 다시 수행하기 위해, 서비스 루틴으로 실행점을 옮기기 전 하드웨어에 있던 정보를 모두 이전하고, 서비스 루틴이 종료되면 이를 다시 되돌려야 한다.
CPU에 연결된 회선 Interrupt-request line은 CPU가 매번 명렁어를 수행하고 나서 확인된다. 신호가 있으면 인터럽트 번호를 읽어 적절한 인터럽트 핸들러 루틴으로 점프한다.
Interrupt Vector인터럽트마다 해결방법이 다르므로 인터럽트 각각은 고유의 서비스 루틴이 필요하며 이로 인해 관리해야 할 서비스 루틴의 수가 늘어난다.
인터럽트에 매긴 번호를 인덱스index로 삼는, 인터럽트 핸들러의 주소를 저장하는 배열을 로 메모리low memory에 저장한다.
interrupt chaining이라고 한다.raise 디바이스 컨트롤러가 인터럽트를 발생시키다.
catch CPU가 인터럽트 발생을 알아채다.
dispatch CPU가 인터럽트에 적절한 서비스 루틴으로 컨트롤을 넘기다.
clear 인터럽트를 처리하다.
trap혹은 예외 Exception
소프트웨어에 의한 인터럽트.
프로그램 실행 중 발생한 에러, 이를테면 '0으로 나누기' 등의 산술적 오류도 가능하며, 사용자가 직접 정의한 에러도 가능하다.
예외처리에는 시스템 콜system call이 사용된다.