사전적 의미로는 (말 ・ 행동을) 방해해다 또는 (무엇을 잠깐) 중단시키다의 의미를 가진다.
이와 비슷하게 컴퓨터공학에서는 CPU가 프로그램을 실행하고 있을 때, 입출력 등의 장치나 예외상황이 발생하여 운영체제의 처리가 필요하여 작업을 중단하는 것을 의미한다.
그 후 CPU의 제어권이 운영체제로 넘어가 인터럽트를 처리하는 것이다.
인터럽트를 발생시킨 주체에 따라 하드웨어 인터럽트, 소프트웨어 인터럽트로 분류할 수 있다.
하드웨어 인터럽트는 입출력 장치나 타이밍 장치와 같은 하드웨어가 발생시킨 인터럽트를 말한다.
소프트웨어 인터럽트는 Trap이라고도 부르는데, 프로그램에 의한 Exception이나 System call에 의해 발생하는 인터럽트이다.
기본동작 방식은 다음과 같다.
I/O 요청과 완료 인터럽트가 발생했을 때, 기본동작을 바탕으로 각각의 처리 과정을 보며 이해해보자.
4번의 과정은 조금 특이하다.
만약 이때 운영체제가 제어권을 내놓지않는다면, I/O 작업 완료가되기까지 CPU는 아무작업도 하지못하고 놀고있게된다.
I/O 작업은 오래 걸리는 작업이므로 CPU가 기다리게하는 것은 대단한 자원 낭비를 하고있는 것이다.
결국 CPU 처리율을 극대화하기 위해 위와 같이 처리하게된다.
2번 과정의 경우 context switching이 발생하지 않는데도 PCB를 저장하고있다.
이는 운영체제가 인터럽트 처리 후 context switching의 발생 가능성이 있기 때문이다.
System call: 운영체제 서비스 사용을 위해 커널 함수를 호출하는 것
인터럽트 벡터: 해당 인터럽트에 대한 처리 루트 주소를 가지고 있는 정보
인터럽트 처리 루틴(ISR): 해당 인터럽트를 처리하는 커널 함수
인터럽트와 관련해 생각해볼만한 질문들에 대해 답변을 해보자.
그렇지 않다. 인터럽트 종류에 따라 다르다. 위의 예시 중 파일 읽기 과정에서 알 수 있듯이 모든 인터럽트에 대해 Context switching이 발생하진않는다.
I/O 요청이나 Timer에 의한 인터럽트 발생 시 Context switching이 발생한다.
운영체제마다 상황을 처리하는 방법은 다르다.
우선 순차적인 방식으로서 실행 중인 인터럽트 처리를 끝난 후에 새로 들어온 인터럽트를 처리하는 방법이 있다.
반면 우선순위 기반 처리 방식으로서 인터럽트에 우선순위가 부여되어, 현재 처리중인 인터럽트 보다 더 높은 우선순위의 인터럽트가 발생했다면 이를 먼저 처리하는 방식도 있다.