프로그램을 실행하는 도중에 예기치 않은 상황이 발생할 경우 현재 실행 중인 작업을 즉시 중단하고, 발생된 상황에 대한 우선 처리가 필요함을 CPU에게 알리는 것이다.
지금 수행 중인 일 보다 더 중요한 일(ex. 입출력, 우선순위 연산 등)이 발생하면 그 일을 먼저 처리하고 나서 하던 일을 계속 한다.
외부 / 내부 인터럽트는 CPU의 하드웨어 신호에 의해 발생
소프트웨어 인터럽트는 명령어의 수행에 의해 발생
주 프로그램이 실행되다가 인터럽트가 발생했다.
만약 인터럽트 기능이 없다면, 컨트롤러는 특정한 어떤 일을 할 시기를 알기 위해 계속 체크를 해야한다(Polling).
폴링을 하는 시간에는 원래 하던 일에 집중할 수가 없게 되어 많은 기능을 제대로 수행하지 못하는 단점이 있다.
인터럽트 요청 플래그를 차례로 비교하여 우선순위가 가장 높은 인터럽트 자원을 찾아 이에 맞는 인터럽트 루틴을 수행한다.
장점: 우선순위 변경이 쉽고, 회로가 간단하며 융통성이 있으며, 별도의 하드웨어가 필요 없다.
단점: 많은 인터럽트가 있을 경우 하드웨어적인 방법에 비해서 우선순위 판단 속도가 느리다.
인터럽트 방식(하드웨어적 방식)
MCU 자체가 하드웨적으로 변화를 체크하여 변화 시에만 일정한 동작을 하는 방식
장점 : 별도의 소프트웨어가 필요없이 하드웨어로 처리되므로 속도가 빠르다.소프트웨어적인 방법에 비해 비경제적이다.
단점 : 소프트웨어적인 방법에 비해 비경제적, 회로가 복잡하고 융통성이 없음.
인터럽트 방식은 하드웨어로 지원을 받아야 하는 제약이 있지만, 폴링에 비해 신속하게 대응하는 것이 가능하다. 따라서 실시간 대응이 필요할 때는 필수적인 기능이다.
즉, 인터럽트는 발생시기를 예측하기 힘든 경우에 컨트롤러가 가장 빠르게 대응할 수 있는 방법이다.
https://gyoogle.dev/blog/computer-science/operating-system/Interrupt.html