오퍼레이팅 시스템 [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로 전달된다.
  • InterruptMask 가능하다. = 비활성화 하여 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 처리과정

좌측 상단부터 순서대로,

  1. PIC에 의해 Interrupt 신호가 전달된다.
  2. 실행중인 Instruction을 종료시킨다.
  3. Interrupt를 받았다는 ack신호PIC에게 보낸다.
  4. PSW, PC 레지스터에 있는 정보를 stack 메모리에 저장한다.
  5. PC를 해당 interrupt handler 주소로 변경한다.

Hardward에서 처리

  1. 그외 레지스터에 있는 DATA를 모두 저장한다.(SAVE ALL)
  2. Interrupt 를 처리한다.
  3. 완료후, 이전의 정보를 복구한다.(RESTORE ALL)
  4. STACK에 저장해둔 PSWPC값을 다시 가져온다.

Softward 에서 처리 (1 ~ 3의 과정 = ISR)

Execption

  • Interrupt 에는 2종류가 있다.
    1. Interrupt : Asynchronous(비동기화) Interrupts이며, 다른 H/W 장치에서 발생됨(CPU external).
    2. Exception : Synchronous(동기화) Interrupts이며, CPU자체에서 발생됨(CPU internal). System call을 포함한다. ex) devied by zero, segmentation faults, page faults
InterruptException
Cause:External to CPUCause:External to CPU (현재 instruction 실행중)
Asynchronous to CPU clockSynchronous to CPU clock
After current Instruction completeCurrent Instruction may not complete
ex) I/O device, timerex) Program
  • Asynchronous to CPU clockInterrupt는 현재의 Instruction이 마무리될때까지 대기해야 하므로 발생 시기와 처리 시기가 일치하지 않지만, Synchronous to CPU clockException은 발생되는 그 즉시 처리된다.

  • Linux 에서는 Interrput, Exception 모두 같은 과정으로 작동한다.

Multiple Interrupt

  1. Sequential Interrupt Processing (직렬처리)
    • Interrupt 하나가 처리중일때, 다른 Interrupt 신호는 비활성화된다.
    • 단점 : Interrupt 간의 우선순위시간중요도를 무시하게된다.
  2. Nested Interrput Processing (중첩처리)
    • Interrupt 간의 우선순위를 고려한다.
    • Interrupt ISR 실행중, 우선순위가 더 높은 Interrupt 신호 발생시 해당 ISR을 실행한다. 우선순위가 낮을경우 도중에 발생하더라도 Pending한다.

Interrupt의 장단점 분석

  • 단점 : Interrupt Handler 내부의 추가적인 Instruction실행이 필요하다.
    • 레지스터를 백업, 복구하는 과정
    • Interrupt 특성을 파악하고, 어떤 행동을 취해야할지 결정하는 과정
  • 장점 : 프로세서가 더 효율적으로 작동될 수 있다.
    • 추가적인 Instruction 실행 필요에도 불구하고, 현재 작업이 모두 마무리될때까지 I/O 작동을 기다리는 것 보다는 소요시간이 짧기때문에 상대적으로 더 효율적이라고 볼 수 있다.