본문 바로가기

컴퓨터이론/운영체제

OS -3 : Interrupt

인터럽트란?

cpu가 동작과정 중 예기치 않은 문제가 발생했을 때, 다음 fetch를 멈추고 이를 처리하는 것.

현재상태(PSW / PC)를 control stack에 푸쉬하여 저장한 뒤, interrupt handler라는 운영체제 자체 내장 프로그램을 이용

I/O 디바이스의 처리속도가 느리므로, I/O처리가 끝났음을 알려줄때에도 이용

인터럽트의 stage

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