프로그램을 실행하는 도중에 예기치 않은 상황이 발생할 경우 현재 실행 중인 작업을 즉시 중단하고, 발생된 상황에 대한 우선 처리가 필요함을 CPU에게 알리는 것
지금 수행 중인 일보다 더 중요한 일(ex. 입출력, 우선 순위 연산 등)이 발생하면 그 일을 먼저 처리하고 나서 하던 일을 계속해야한다.
외부/내부 인터럽트는 CPU의 하드웨어 신호에 의해 발생
소프트웨어 인터럽트는 명령어의 수행에 의해 발생
입출력 장치, 타이밍 장치, 전원 등 외부적인 요인으로 발생
전원 이상, 기계 착오, 외부 신호, 입출력
Trap이라고 부르며, 잘못된 명령이나 데이터를 사용할 때 발생
0으로 나누기가 발생, 오버플로우, 명령어를 잘못 사용한 경우 (Exception)
프로그램 처리 중 명령의 요청에 의해 발생한 것 (SVC 인터럽트)
사용자가 프로그램을 실행시킬 때 발생
소프트웨어 이용 중에 다른 프로세스를 실행시키면 시분할 처리를 위해 자원 할당 동작이 수행된다.
주 프로그램이 실행되다가 인터럽트가 발생했다.
현재 수행 중인 프로그램을 멈추고, 상태 레지스터와 PC 등을 스택에 잠시 저장한 뒤에 인터럽트 서비스 루틴으로 간다. (잠시 저장하는 이유는, 인터럽트 서비스 루틴이 끝난 뒤 다시 원래 작업으로 돌아와야 하기 때문)
만약 인터럽트 기능이 없었다면, 컨트롤러는 특정한 어떤 일을 할 시기를 알기 위해 계속 체크를 해야 한다. (이를 폴링(Polling)이라고 한다)
폴링을 하는 시간에는 원래 하던 일에 집중할 수가 없게 되어 많은 기능을 제대로 수행하지 못하는 단점이 있었다.
즉, 컨트롤러가 입력을 받아들이는 방법(우선순위 판별방법)에는 두가지가 있다.
폴링은 일종의 루프를 실행하여 특정 조건을 주기적으로 체크하거나 확인하는 방식입니다. 예를 들어, CPU가 입출력 장치의 상태를 지속적으로 체크하여 해당 장치가 데이터를 받을 준비가 되었는지 아닌지를 확인하는 과정을 말합니다. 이 방식은 구현이 비교적 간단하다는 장점이 있지만, 장치가 준비되지 않은 상태일 때도 계속 상태를 체크하기 때문에 CPU의 시간을 많이 소모할 수 있습니다.
인터럽트는 입출력 장치나 다른 하드웨어가 CPU에게 특정 이벤트가 발생했음을 알리는 방식입니다. 이 방식을 사용하면, CPU는 일반적인 작업을 수행하다가 인터럽트 신호를 받으면 현재 작업을 중단하고 인터럽트를 처리한 후에 다시 원래 작업으로 돌아갑니다. 이 방식은 폴링에 비해 CPU의 시간을 훨씬 효율적으로 활용할 수 있다는 장점이 있습니다.
즉,폴링은 단순하고 이해하기 쉽지만, 자원을 비효율적
으로 사용할 수 있습니다. 반면 인터럽트는 효율적
이지만 처리 과정이 복잡하며, 인터럽트를 너무 자주 받게 되면 시스템이 과부하 상태
에 빠질 수 있다.
인터럽트 방식은 하드웨어로 지원을 받아야 하는 제약이 있지만, 폴링에 비해 신속하게 대응하는 것이 가능하다. 따라서 실시간 대응✨ 이 필요할 때는 필수적인 기능이다.