본문 바로가기
운영체제/컴퓨터 시스템 구조

인터럽트(Interrupt)와 실행 과정, 역할

by Dev.Andy 2023. 4. 9.

프로세스에 대한 상태(Process State)를 공부하는데 인터럽트에 대해 더 자세히 알고 싶어서 이번 블로그를 작성했다.

인터럽트가 무엇인지 알아보고 이에 대한 종류와 실행 과정, 역할에 대해 알아 보자.

 

 

📌 인터럽트의 정의

인터럽트(Interrupt)는 시스템의 내부 또는 외부에서 발생하는 예기치 못한 사건에 의해, 프로세서(흔히 CPU)가 실행 중인 프로그램의 작업을 중단시키고 다른 프로그램을 수행하도록 하는 명령어이다.

여기서 말하는 예기치 못한 사건은 입출력(Input/Output or I/O)이나 에러의 발생, 타이머의 시간 만료 등을 의미한다.

 

📌 인터럽트의 종류

인터럽트의 종류는 두 가지인데, 하드웨어 인터럽트와 소프트웨어 인터럽트가 있다. 말 그대로 '하드웨어에 의한 인터럽트냐, 소프트웨어에 의한 인터럽트냐'이다.

  1. 하드웨어 인터럽트(hardware interrupts): 컴퓨터의 외부 하드웨어 기기인 키보드나 마우스, 네트워크 카드에 의한 인터럽트를 가리킨다.
  2. 소프트웨어 인터럽트(software interrupts): CPU에 의해 실행 되고 있는 프로그램에 의한 인터럽트를 가리킨다.

 

📌 인터럽트 핸들러 또는 인터럽트 서비스 루틴(interrupt handler or interrupt service routine)

인터럽트를 실제로 처리하기 위한 프로그램을 의미한다. 인터럽트는 다양한 유형이 있어서 그에 맞는 서비스 루틴이 작동한다.

 

 

📌 인터럽트의 실행 과정과 문맥 교환

(1) 실행 과정

인터럽트의 실행 과정

구현회, 『운영체제 개정 3판』 (서울: 한빛아카데미, 2016), 39.

  1. 인터럽트 신호에 의하여 현재 실행 중인 명령어를 종료
  2. 레지스터의 모든 정보를 스택 영역(또는 프로세스 제어 블록/PCB)에 전송
  3. 프로그램 카운터에 인터럽트 처리 프로그램(인터럽트 핸들러/서비스 루틴)의 시작 위치를 저장
  4. 제어권이 인터럽트 처리 프로그램을 실행
  5. 4번이 완료되면 스택 영역(또는 PCB)에 위치한 내용을 다시 레지스터에 저장
  6. 프로그램 카운터에 중단된 프로그램의 시작 위치를 저장
  7. 중단된 프로그램을 재실행

(2) 문맥 교환

이렇게 운영체제가 현재 프로세스를 스택이나 PCB에 저장하고 다른 프로세스를 레지스터에 저장하여, 다른 프로그램이 CPU를 이용하도록 하는 것을 문맥 교환(Context Switch)이라 한다. 문맥 교환은 인터럽트말고도 시스템 호출 등에 의해서도 일어난다.

 

📌 인터럽트의 역할

  1. 인터럽트는 현대의 운영체제가 하드웨어와의 상호작용을 향상시켜, CPU가 멀티 프로그래밍을 가능하게 하는 핵심적인 역할을 한다.
  2. 인터럽트는 갑작스러운 컴퓨터의 전류 공급 중단이나, 사용자의 입력, 입출력 작업의 완료, 운영체제에 의한 긴급 요청 등과 같은 긴급한 상황에 대처하기 위해서도 필요하다.

만약 인터럽트가 없다면 CPU는 장치의 상태를 수시로 점검해야 하는 상황이 발생하는데, 그동안 다른 작업을 수행할 수 없어서 CPU의 사용성(utilization)을 낭비시킨다.

댓글