인터럽트란 하드웨어 장치가 CPU에게 어떤 사실을 알려주거나 CPU의 서비스를 요청해야할 경우 발생합니다. CPU내에는 인터럽트 라인이 있는데, 이를 세팅하여 인터럽트를 발생시키죠.
CPU는 매번 프로그램 카운터가 가리키고 있는 곳의 명령어를 수행한 뒤, 다음 명령어를 수행하기 직전에 인터럽트 라인을 체크합니다. 이를통해 인터럽트가 발생했으면 CPU는 현재 수행중이던 프로세스를 멈추고, 운영체제의 인터럽트 처리루틴에 따라 인터럽트를 처리하죠.
하드웨어 인터럽트(일반적인 인터럽트)
소프트웨어 인터럽트
A프로그램이 CPU를 할당받고 명령을 수행하고 있다고 가정해봅시다. 만약 이때 인터럽트가 발생하면 A는 현재 수행중인 명령의 위치를 저장하게 됩니다. 이후, 운영체제의 내부 코드인 인터럽트 처리 루틴으로 넘어가서 인터럽트 처리를 하고 돌아온 후, 이전 작업지점부터 수행을 이어나가게 됩니다.
→ 이때, 진행중이던 A프로세스의 정보는 PCB(프로세스 제어블록)에 저장됩니다. 이후, 인터럽트 처리를 모두 마치면 프로그램 A의 PCB에 저장된 주소를 복원시켜 원래 하던 일을 재개합니다.(컨텍스트스위칭)