본문 바로가기
CS 지식/운영체제

[운영 체제] Interrupt(인터럽트)는 무엇인가

by CSEGR 2024. 8. 20.
728x90

✔️ 인터럽트란 무엇인가?

Interrupt(인터럽트)란?
프로그램을 실행하는 도중에 예기치 않은 상황이 발생한 경우 현재 실행 중인 작업을 즉시 중단하고, 발생된 상황을 우선 처리한 후 실행중이던 작업으로 복귀하여 계속 처리하는 것 (프로세서 즉, 흔히 CPU에 의해)

✔️ 인터럽트의 종류 

1️⃣ 하드웨어 인터럽트(hardware interrupt) = 외부 인터럽트 : CPU의 하드웨어(ex-키보드, 마우스 등)에 의해 발생

  • 입출력 장치, 타이밍 장치, 전원 등 외부적인 요인으로 발생
    ex) 전원 이상, 기계 착오, 외부 신호, 입출력 등

2️⃣ 소프트웨어 인터럽트(software interrupt) = 내부 인터럽트 : CPU에 의해 실행 되고 있는 프로그램에 의해 발생

  • Trap 이라고 부르며, 잘못된 명령이나 데이터를 사용할 때 발생
  • 예외 상황(Exception)
    : 프로그램이 허용되지 않은 연산을 수행하려 할 때, 자동적으로 발생
      ‣ 0으로 나누는 경우
      ‣ OverFlow 

+)  예외 상황은 사용자 프로세스로부터 CPU의 제어권이 OS에게 넘어가게 된다. 


✔️ 인터럽트 발생 처리 과정

A 프로그램이 CPU를 할당받고 명령을 수행하고 있을 때 인터럽트가 발생하면, A는 현재 수행중인 명령의 위치를 저장해놓는다. 

그 후, OS 내부 코드인 인터럽트 처리 루틴으로 넘어가서 

 

 

1. 인터럽트가 발생하면, 수행 중이던 프로세스 A는 현재 상태(명령 위치 등)를 프로세스 제어 블록(PCB)에 저장합니다.
    ➕) CPU 권한은 프로세스 A 에서 OS로 넘어가게 된다. 

2. 이후, 운영체제는 인터럽트 처리 루틴을 실행하여 인터럽트를 처리합니다. 

  • 인터럽트 처리가 끝나면, 프로세스 A의 PCB에 저장된 정보를 복원하여, A는 이전 작업 지점부터 실행을 계속합니다.

 

 

 

#참고 문헌 

https://gyoogle.dev/blog/computer-science/operating-system/Interrupt.html

https://velog.io/@nnnyeong/OS-인터럽트-Interrupt

https://yaelimeee.tistory.com/48

 

728x90