인터럽트란?
cpu가 동작과정 중 예기치 않은 문제가 발생했을 때, 다음 fetch를 멈추고 이를 처리하는 것.
현재상태(PSW / PC)를 control stack에 푸쉬하여 저장한 뒤, interrupt handler라는 운영체제 자체 내장 프로그램을 이용
I/O 디바이스의 처리속도가 느리므로, I/O처리가 끝났음을 알려줄때에도 이용
Enabled?
cpu가 중단되어서는 안되는 중요한 일을 처리 중인 경우 Control & status register의 interrupt Enabled/Disabled 레지스터를 이용하여 interrupt check를 skip할 수 있다.
Interrupt 전 Stage 저장하기
ⓐ 스택 포인터에 저장된 위치부터 현재 레지스터까지의 정보를 저장
ⓑ 새로운 stack pointer값을 저장
ⓒ Program Counter에 interrupt handler의 주소 값 저장
ⓓ Interrupt handler 실행
--- interrupt 처리 routine 실행 ---
ⓔ Stack pointer에 저장된 위치부터 원래 register값들을 복원하고 다시 스택포인터에 저장되어있던 위치를 저장
ⓕ 다음 Fetch & Execute 동작 실행
인터럽트의 종류
- 하드웨어 인터럽트
CPU가 아닌 다른 하드웨어 장치가 cpu에 어떤 사실을 알려주는 경우
예) 전원끊김 / IO인터럽트 / 외부 프로그램에 의한 인터럽트
- 소프트웨어 인터럽트
소프트웨어 내부에서 동작할 수 없는 문제가 생겼을 때 발생
예) segmentation fault / divide by zero
Short/Long IO interrupt
- Short I/O interrupt
: 먼저 발생한 I/O 과정이 다음 I/O 명령을 만나기 전에 끝날 경우를 말하며 실질적인 CPU입장에서 공백기가 없는 상태가 된다
- Long I/O interrupt
:먼저 발생한 I/O 과정이 다음 I/O 명령을 만났음에도 계속 처리중인 경우를 말함.
I/O 명령이 끝나기 전에 새로운 I/O 명령이 들어온다면? : I/O명령이 섞여 interrupt를 기다렸다가 I/O 명령을 실행해야 됨
-> CPU가 아무것도 하지 않는 경우가 발생하며, 이 경우 멀티프로그래밍으로 문제가 생긴 program대신 다른 program을 우선순위에 따라 실행한다.(CPU가 의미있는 일을 수행하기만 하면 되기 때문에 다시 원래 프로그램으로 돌아가지 않을 수도 있다.)
--> 효율성이 높아지지만 관리가 매우 복잡해짐
'컴퓨터이론 > 운영체제' 카테고리의 다른 글
OS -4 : 메모리와 캐시 (0) | 2023.01.19 |
---|---|
OS -2 : 명령어의 실행 (0) | 2021.09.14 |
OS -1 : 컴퓨터의 구성 (0) | 2021.09.14 |