오퍼레이팅 시스템 [2] - Interrupt 란?
‘Interrupt 와 Exception에 대한 정의와 작동원리’
INTERRUPT
- 인터럽트란 말그대로 현재 하는 일을 멈추게 하는 “방해”라고 보면된다.
OS에게 현재 실행중인 Process를 중지시키고, Interrupt를 해결하기위해 Interrupt Handler를 실행시키도록 하는 Event.
I/O 장치에게 신호가 들어왔을때, 계속해서 polling (대기) 하지않고, CPU에 신호를 보내 먼저 처리할 수 있도록 한다. ex) system timer interrupt
이때, Interrupt를 처리하기 위해서는 CPU는 커널모드로 전환되어야 한다.
*커널모드 : CPU가 유저모드에서는 사용권한이 없었던 부가기능과 메모리를 사용할 수 있는 모드
Interrupt 매커니즘
PIC (Programmable Interrupt Controller)
- Interrupt 신호를 보내는 I/O 장치들의 요청(Interrupt)은 PIC에 의해 고유의 IRQ(Interrupt Request) number로 전환되어 CPU로 전달된다.
- Interrupt를 Mask 가능하다. = 비활성화 하여 Interrupt간 우선순위를 설정할 수 있다.
- 많은 수의 장치가 있는 경우 더욱 효율적인 Interrupt 처리가 가능하다.
ISR (Interrupt Servie Routine)
Main program 사이에서 실행되는 요청받은 Interrupt를 처리하기 위해 실행되어야 하는 일련의 Instruction들의 집합.
Interrupt Handler -> Save all -> Interrupt instructions -> Restore all
- Interrupt Handler 를 호출하기 위해 미리 수정된 PC, PSW 레지스터를 제외한 모든 사용중인 레지스터 값을 Save 하며 시작되고 Restore 하며 종료된다.
Interrupt 처리과정
좌측 상단부터 순서대로,
- PIC에 의해 Interrupt 신호가 전달된다.
- 실행중인 Instruction을 종료시킨다.
- Interrupt를 받았다는 ack신호를 PIC에게 보낸다.
- PSW, PC 레지스터에 있는 정보를 stack 메모리에 저장한다.
- PC를 해당 interrupt handler 주소로 변경한다.
Hardward에서 처리
- 그외 레지스터에 있는 DATA를 모두 저장한다.(SAVE ALL)
- Interrupt 를 처리한다.
- 완료후, 이전의 정보를 복구한다.(RESTORE ALL)
- STACK에 저장해둔 PSW와 PC값을 다시 가져온다.
Softward 에서 처리 (1 ~ 3의 과정 = ISR)
Execption
- Interrupt 에는 2종류가 있다.
- Interrupt : Asynchronous(비동기화) Interrupts이며, 다른 H/W 장치에서 발생됨(CPU external).
- Exception : Synchronous(동기화) Interrupts이며, CPU자체에서 발생됨(CPU internal). System call을 포함한다.
ex) devied by zero, segmentation faults, page faults
Interrupt | Exception |
---|---|
Cause:External to CPU | Cause:External to CPU (현재 instruction 실행중) |
Asynchronous to CPU clock | Synchronous to CPU clock |
After current Instruction complete | Current Instruction may not complete |
ex) I/O device, timer | ex) Program |
Asynchronous to CPU clock한 Interrupt는 현재의 Instruction이 마무리될때까지 대기해야 하므로 발생 시기와 처리 시기가 일치하지 않지만, Synchronous to CPU clock한 Exception은 발생되는 그 즉시 처리된다.
Linux 에서는 Interrput, Exception 모두 같은 과정으로 작동한다.
Multiple Interrupt
- Sequential Interrupt Processing (직렬처리)
- Interrupt 하나가 처리중일때, 다른 Interrupt 신호는 비활성화된다.
- 단점 : Interrupt 간의 우선순위나 시간중요도를 무시하게된다.
- Nested Interrput Processing (중첩처리)
- Interrupt 간의 우선순위를 고려한다.
- Interrupt ISR 실행중, 우선순위가 더 높은 Interrupt 신호 발생시 해당 ISR을 실행한다. 우선순위가 낮을경우 도중에 발생하더라도 Pending한다.
Interrupt의 장단점 분석
- 단점 : Interrupt Handler 내부의 추가적인 Instruction실행이 필요하다.
- 레지스터를 백업, 복구하는 과정
- Interrupt 특성을 파악하고, 어떤 행동을 취해야할지 결정하는 과정
- 장점 : 프로세서가 더 효율적으로 작동될 수 있다.
- 추가적인 Instruction 실행 필요에도 불구하고, 현재 작업이 모두 마무리될때까지 I/O 작동을 기다리는 것 보다는 소요시간이 짧기때문에 상대적으로 더 효율적이라고 볼 수 있다.