본문 바로가기
컴퓨터 공학/운영체제

인터럽트(Interrupt)

by Montmartree 2020. 4. 14.

운영체제는 컴퓨터 하드웨어를 관리하고 프로그램의 수행을 제어하는 역할을 수행한다.

 

운영체제의 첫 부분을 보면 인터럽트라는 개념이 나온다.

 

Interrupt의 뜻은 방해하다, 중단시키다 등의 의미가 있는데 해당 단어의 의미와 OS에서의 의미가 같다.

 

 

 

인터럽트란, 하드웨어 및 소프트웨어가 특정 업무를 수행하기 위하여 CPU에게 보내는 신호이다.

(※ 여기서 특정 업무란, 반드시 OS의 처리가 필요한 경우를 말한다.)

 

인터럽트를 받은 CPU는 현재까지 수행하던 프로그램의 상태를 저장하고 Program Counter가 Interrupt Vector를 가리키게 한다.

 

그 다음 Interrupt Vector에서 ISR(Interrupt Service Routine)의 주소 값을 읽어 ISR로 점프한 후  해당 루틴을 실행한다.

(Interrupt Vector : 인터럽트 발생 시 처리해야할 루틴의 주소를 담은 테이블)

(※ Interrupt Service Routine : Interrupt Handler 라고 부르며 실제 인터럽트를 처리하기 위한 루틴)

 

루틴이 종료되면 CPU는 이전에 수행했던 프로그램의 상태를 PC에서 읽어 다시 수행한다.

 

 

 

인터럽트에는 두 종류가 있는데, 하드웨어 인터럽트와 소프트웨어 인터럽트로 나눈다.

 

 

 

1. 하드웨어 인터럽트(Asynchronous)

 

컴퓨터 주변장치 및 CPU 외부의 디스크 컨트롤러 등으로부터 요구되는 신호이다.

 

컴퓨터 내부에 물리적으로 BUS를 연결하여 전기적인 신호로 보낸다.

 

대표적으로 입출력 인터럽트와 외부 인터럽트(Timer 인터럽트)가 있다.

 

 

 

2. 소프트웨어 인터럽트(Synchronous)

 

Trap이라고 부르며, 프로그램 실행 도중에 이벤트에 의해 발생된 명령 처리 과정의 결과로써 발생한다.

 

대표적으로 예외(Exception)와 시스템 콜(System call) 이 존재한다.

 

 

ㄱ. Exception

  • 0으로 나눔
  • 불법적인 기계 코드
  • 맞지 않는 메모리 주소 등

ㄴ. System call

 

       > 프로그램에서 Kernel 영역의 기능을 사용하기 위해 필요한 소프트웨어 인터럽트이다.

 

          시스템 콜은 내용이 많으므로 다음에 더 자세히 다룰 예정이다.