Skip to content
Nam Koong Kwon edited this page Nov 28, 2019 · 1 revision

interrupt

  • 컨트롤러들이 CPU의 서비스가 필요할 때 이를 통보하는 방법을 뜻합니다.
  • 기본적으로 CPU는 매 시점 메모리에서 명령을 하나씩 읽어 와서 수행하게 됩니다.
  • 이 때, CPU 옆에는 interrupt line이 있어서 CPU가 자신의 작업을 하던 중간에 interrupt line에 신호가 들어오면 하던 일을 멈추고 interrupt와 관련된 일을 처리하게 됩니다.
  • 운영체제 커널에는 interrupt가 들어왔을 때 해야 할 일을 미리 다 프로그래밍해서 보관하고 있습니다.

interrupt handling ?

  • interrupt가 발생한 경우에 처리해야 할 일의 절차를 의미합니다.
  • 운영체제 커널 영역에는 현재 시스템 내에서 수행되는 프로그램들을 관리하기 위한 자료구조인 PCB(Process Control Block)을 두고 있습니다.
  • 그 자료구조 중 일부분은 interrupt가 발생했을 때 프로그램의 어느 부분이 수행되던 중이었는지를 저장하기 위한 자료구조로 사용됩니다.
  • 이 부분에 저장되는 내용으로는 현재 수행 중이던 메모리 주소와 레지스터 값, 그리고 하드웨어 상태 등이 있습니다. - 이러한 정보가 저장되었다가 interrupt 수행이 끝나면 저장된 값을 CPU 상에 다시 복원해 interrupt 당하기 직전의 명령을 계속 수행할 수 있게 되는 것입니다.

interrupt 종류

H/W interrupt

  • 예상할 수 없는 시기에 주변 장치에서 발생된 일에 대해서 주변 장치가 처리를 요청하는 경우. 주변 장치에 긴급 상황이나 CPU로 처리를 요구하여야 하는 상황이 발생되었을 때 그 상태를 CPU에 전달하는 통로가 IQR입니다.
  1. Maskable interrupt

    • 처리할 것인지, 말 것인지를 설정할 수 있는 인터럽트를 뜻합니다.
  2. Non-Maskable interrupt

    • 처리 여부를 묻지 않고 CPU가 무조건 처리하는 인터럽트를 뜻합니다.
    • 예로, 메모리 패리티 에러와 I/O channel check가 있습니다.
  3. interrupt controller

    • 주변 기기의 인터럽트를 받아들이는 몇 개의 인터럽트 입력 단자가 마련되어 있으며, CPU로 요청하기 위한 인터럽트 단자가 별도로 마련되어 있습니다.
    • 주변 장치에서 발생된 인터럽트는 CPU로 바로 전달되지 않고 일단 interrupt Controller에 전달됩니다.
    • interrupt Controller는 CPU로 전달하기 전에 인터럽트의 종류를 알아내고 CPU에게 인터럽트 종류를 알려줍니다.
    • CPU는 인터럽트의 종류에 따라 인터럽트를 발생시킨 장치를 제어하게 됩니다.

S/W interrupt

  • 통상적으로 interrupt라고 하면 H/W interrupt를 의미합니다.

  • S/W interrupt는 trap이라는 용어로 주로 불립니다.

  • S/W interrupt는 다음과 같은 경우에 발생시킵니다.

    • 프로세스가 0으로 나누는 연산 등 불가능한 작업을 시도하는 경우
    • 자신의 메모리 영역 바깥을 접근하려는 경우
  • H/W처럼 컨트롤러가 발생시키는 인터럽트가 아니라 프로그램 수행 도중 CPU에 IRQ를 세팅하여 발생시키게 됩니다.

  • S/W interrupt가 발생한다면?

    1. 현재까지의 수행 지점을 저장
    2. interrupt 처리루틴으로 가서 interrupt 발생과 관련한 작업을 수행
    3. 다시 인터럽트 당한 지점으로 돌아와 프로그램을 계속 수행

interrupt 중에 interrupt가 발생한다면?

  • 원칙적으로는 interrupt 처리 중에 또 다른 interrupt가 발생하는 것을 허용하지 않습니다.

  • 그 이유는 interrupt 처리 중에 다른 interrupt를 처리하게 되면 데이터의 일관성이 유지되지 않는 경우가 발생할 수 있기 때문입니다.

  • 하지만 interrupt마다 중요도가 다르기 때문에 상대적으로 낮은 중요도를 가진 interrupt 작업 수행 중에 중요도가 더 높은 interrupt가 발생하는 것을 허락할 필요가 있습니다.

  • 그렇게 된다면 현재 처리 중이던 interrupt 코드의 수행 지점을 커널 스택에 저장하고 우선순위가 높은 interrupt를 처리하게 됩니다.


컨트롤러

  • 일종의 작은 CPU입니다.
  • 컴퓨터 전체에 CPU라는 중앙 처리가 있듯이 각 하드웨어 장치마다 존재하면서 이들을 제어합니다.

interrupt_line

  • IRQ(Interrupt request lines)라고도 합니다.
  • 컴퓨터 주변장치마다 고유의 IRQ번호를 가지고 CPU로부터 서비스를 원할 때 각 기기는 신호를 보내고 기다립니다.
IRQ Bus Type Typically used by
IRQ0 none Non-maskable Interrupt(NMI)
IRQ1 none Keyboard port
IRQ2 none Programmable Interrupt Controller(PIC)
IRQ3 8/16 bit Communications Port2(COM2:)
IRQ4 8/16 bit Communications Port1(COM1:)
IRQ5 8/16 bit Sound card; printer port(LPT2:)
IRQ6 8/16 bit Floppy disk controller
IRQ7 8/16 bit Printer port(LPT1:)
IRQ8 none System CMOS/real-time clock
IRQ9 8/16 bit Redirected from IRQ 02; network interface
IRQ10 16 bit Netwrok interface; USB host controller
IRQ11 16 bit Video adapter; USB host controller
IRQ12 16 bit PS/2 mouse port
IRQ13 none Numeric data processor(math coprocessor)
IRQ14 16 bit Primary IDE interface
IRQ15 16 bit Secondary IDE interface

출처

NMI

  • highest priority interrupt
  • 심각한 오류가 발생했는지 확인하거나 실패로 인해 모든 작업을 중지하는 데에만 사용됩니다.
  • 예시로 컴퓨터가 멈췄을 때 Ctrl + Alt + Del를 누르면 NMI가 CPU로 전송됩니다.

PS/2

IDE

  • Integrated Drive Electronics
  • 하드 디스크 드라이브를 PC에 연결하는데 사용되는 기본 인터페이스

커널

PCB

JAVA

OS

Database

Network

WEB

Node.js

ETC

Clone this wiki locally