컴퓨터를 사용하기 시작한 초기의 프로그래밍 방식은 순차적 프로그래밍 방식이었다.
입출력을 요청하고 입출력이 완료되면 이벤트를 발생시켜 이를 알리게 되는데 이를 인터럽트라고 한다.
동기적 인터럽트 : 프로세스가 실행 중인 명령어로 인해 발생하는 동기적 인터럽트 (사용자 인터럽트)
프로그램상의 문제 때문에 발생하는 인터럽트(예 : 사용자의 메모리 영역에 접근하는 경우, 오버플로나 언더플로에 의해 발생하는 경우 등)
컴퓨터 작업자가 의도적으로 프로세스를 중단하기 위해 발생시킨 인터럽트( 예 : Ctrl + c)
입출력장치 같은 주변장치의 조작에 의한 인터럽트
산술 연산 중 발생하는 인터럽트(예 : 어떤 수를 0으로 나눔)
비동기적 인터럽트 : 실행중인 명령어와 무관하게 발생하는 비동기적 인터럽트
하드웨어적인 오류로 발생하는 인터럽트
인터럽트 벡터 :
인터럽트가 발생하면 현재 실행중인 프로세스는 일시 정지 상태가 되며, 재시작하기 위해 현재 프로세스 관련 정보를 임시로 저장한다.
인터럽트 컨트롤러가 실행되어 인터럽트의 처리 순서를 결정한다. 이때 여러 개의 인터럽트가 동시에 발생했다면 인터럽트의 우선순위를 고려하여 중요한 인터럽트부터 처리하도록 순서를 결정한다.
인터럽트가 결정되면 벡터에 등록된 인터럽트 핸들러가 실행된다.
인터럽트 벡터에 연결된 핸들러가 인터럽트 처리를 마치면 일시 정지된 프로세스가 다시 실행되거나 종료된다.