프로그램을 실행하는 도중에 예기치 않은 상황이 발생할 경우 현재 실행 중인 작업을 즉시 중단하고, 발생된 상황을 우선 처리한 후 실행 중이던 작업으로 복귀하여 계속 처리하는 것
#하드웨어 인터럽트
하드웨어가 발생시키는 인터럽트로, CPU가 아닌 다른 하드웨어가 CPU에 어떤 사실을 알려주거나 CPU 서비스를 요청해야 할 경우 발생시킨다.
입출력 장치, 타이밍 장치, 전원 등 외부적인 요인으로 주로 발생
#소프트웨어 인터럽트
소프트웨어가 발생시키는 인터럽트로, 소프트웨어(사용자 프로그램)가 스스로 인터럽트 라인을 세팅한다. = 프로그램 처리 중 시스템 콜이나 예외 상황 등의 인터럽트를 발생시키는 것.
주 프로그램이 실행되다가 인터럽트가 발생했다.
현재 수행 중인 프로그램을 멈추고, 상태 레지스터와 PC 등을 스택(PCB)에 잠시 저장한 뒤에 인터럽트 서비스 루틴으로 간다.
(잠시 저장하는 이유는, 인터럽트 서비스 루틴이 끝난 뒤 다시 원래 작업으로 돌아와야 하기 때문)
만약 인터럽트 기능이 없었다면, 컨트롤러는 특정한 어떤 일을 할 시기를 알기 위해 계속 체크를 해야 한다. (풀링)
풀링을 하는 시간에는 원래 하던 일에 집중할 수 없게 되어 많은 기능을 제대로 수행하지 못하는 단점이 있다.
컨트롤러가 입력을 받아들이는 방법(우선순위 판별방법)에는 풀링과 인터럽트 방식이 있다. 둘의 차이는 이벤트를 기다리는 방식이다.
#풀링 방식
사용자가 명령어를 사용해 입력 핀의 값을 계속 읽어 변화를 알아내는 방식 (정기적으로 상태를 조사하는 방식)
#인터럽트 방식
마이크로컨트롤러(MCU) 자체가 하드웨어적으로 변화를 체크하여 변화 시에만 일정한 동작을 하는 방식
- Daisy Chain (직렬 우선순위 부여 방식): 인터럽트가 발생하는 모든 장치를 한 개의 회선에 직렬로 연결하며 우선순위가 높은 장치를 맨 앞에 위치시켜서 우선 순위에 따라 연결한다.
- 병렬 우선순위 부여: 각 장치마다 별개의 회선으로 연결한다.
인터럽트 방식은 하드웨어로 지원을 받아야 하는 제약이 있지만, 폴링에 비해 신속하게 대응하는 것이 가능하다. 따라서 실시간 대응이 필요할 때는 필수적인 기능이다.