프로그램을 실행하는 도중에 예기치 않은 상황 발생 시, 실행중인 작업을 즉시 중단하고,
발생된 상황에 대해 우선처리가 필요함을 CPU에게 알리는 것.
인터럽트에 대해 알아보기 전, 인터럽트와 대비되는 개념인 폴링
에 대해 간단히 알아보자.
폴링은 대상을 주기적으로 감시하여 상황이 발생한다면 해당처리 루틴을 실핼해 처리하는 방식이다.
폴링의 주기가 짧으면 성능에 부담이 생기며, 길면 실시간성이 떨어진다.
폴링은 직접 감시하여 일을 처리하고, 인터럽트는 상대가 일을 처리해달라고 요청하는 것이므로, 대비되는 개념이다.
-> 여기서 인터럽트는 필요할 때 신속하게 처리한다는 점에서 폴링보다 유리하다.
폴링방식은 인터럽트 요청플래그를 차례로 비교하여 우선순위가 가장 높은 인터럽트 자원을 찾아
이에 맞는 인터럽트 서비스 루틴(ISR)
을 수행한다.
폴링은 특정 주기마다 계속 확인해야 하기 때문에 리소스를 많이 먹는다는 단점이 존재하고 주기에 따른 오차가 있다.
하지만, 구현이 쉽다는 장점도 존재한다
인터럽트는 크게, 외부/내부 인터럽트, SW인터럽트로 나뉜다..
외부 인터럽트
내부 인터럽트(Trap)
SW 인터럽트
인터럽트 처리 순서는 다음과 같다.
인터럽트가 없다면 특정한 어떤 일을 할 시기를 알기 위해 계속 체크해야한다.(폴링방식) 이는 오버헤드의 증가를 일으키므로 성능저하의 원인이 된다.