Computer Science/운영체제

인터럽트(Interrupt)의 종류와 처리과정

양찬우 2021. 5. 26. 17:05
728x90

1. 인터럽트란?

하드웨어(I/O device)는 언제든지 CPU에 신호를 (일반적으로 시스템 버스를 통해) 보내서 Interrupt를 발생시킨다.
하드웨어(I/O device)와 CPU가 의사소통하는 방식 

마이크로프로세서에서 인터럽트(interrupt)란 마이크로프로세서(CPU)가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치에 예외상황이 발생하여 처리가 필요할 경우에 마이크로프로세서에게 알려 처리할 수 있도록 하는 것을 말한다.

2. 인터럽트의 종류

하드웨어 인터럽트(Hardware Interrupt)

  • Timer, Keyboard 입력, mouse 입력, DMA 등
  • 인터럽트는 시스템 버스를 통해 전달됩니다.

소프트웨어 인터럽트(Software Interrupt)

  • system call로써 구현될 수 있습니다.
  • 인터럽트 핸들링(Interrupt handling)은 CPU의 중요한 기능 중 하나입니다.
  • 인터럽트 요청 신호에 따라 수행하는 루틴이 인터럽트 처리 프로그램, 즉 ISR 인터럽트 서비스 루틴입니다. 쉽게 말하면 인터럽트 함수들을 말합니다.
  • 인터럽트 벡터(Interrupt vector)인터럽트 서비스 루틴의 주소 배열입니다. 이 인터럽트 벡터들로 이루어진 테이블을 ‘인터럽트 벡터 테이블’ 혹은 ‘인터럽트 디스크립터 테이블’ 이라고 합니다.
  • 프로그램이 돌다가 인터럽트 발생 시 발생 전에 실행 중인 그 정보를 저장하고 있어야(스택 영역에) 다음에 다시 돌아와서 이전 프로그램을 실행할 수 있습니다.

3. 인터럽트의 처리과정 

인터럽트 처리과정

인터럽트 원천인 하드웨어에서 또는 예외상황이 발생하거나 소프트웨어 인터럽트가 걸리면:

(명령어 실행단계를 마칠 때마다 중앙처리장치는 반복적으로 인터럽트 요청이 있는지 확인한다.) 

  1. 현재 진행 중인 기계어 코드를 완료한다. (명령어 사이클인 인출과 실행 단계를 일단 마친다.)  
  2. CPU의 특수레지스터 중, 하이로인터럽트 마스크 비트를 보고 마스크 되면 인터럽트 무시 한다.
  3. 인터럽트 벡터를 읽고
  4. ISR(인터럽트 서비스 루틴, 인터럽트 핸들러)주소값을 얻는다.
  5. ISR로 점프 한다. 이때 PC(Program Counter, IP) 값은 자동 대피 저장된다.
  6. 현재 진행중인 프로그램의 레지스터를 대피한다.
  7. 해당 코드를 실행한다.
  8. 해당 일을 다 처리하면, 대피시킨 레지스터를 복원한다.
  9. ISR의 끝에 IRET 명령어에 의해 인터럽트가 해제 된다.
  10. IRET 명령어가 실행되면, 대피시킨 PC 값을 복원하여 이전 실행 위치로 복원한다.

보통 ISR로 들어가면서 CPU코어의 인터럽트 마스크 비트를 자동 설정하고 시작되기 때문에 다른 인터럽트 처리는 대기 상태로 되는 경우가 일반적이다. 따라서 ISR 내에서 다른 인터럽트를 처리하고 싶을 경우 이 마스크 비트를 해제 해야 한다.

참고문헌

 

[컴퓨터구조] 인터럽트(Interrupt)란?

인터럽트 개요 2017년 컴퓨터구조 과목을 수강하면서 가장 많이 나온 단어가 인터럽트 가 아닐까 싶다. 외부 인터럽트, 내부 인터럽트 인터럽트 서비스, 인터럽트 서비스 루틴, 인터럽트 핸들러,

whatisthenext.tistory.com

 

 

 

인터럽트 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 마이크로프로세서에서 인터럽트(interrupt, 문화어: 중단, 새치기)란 마이크로프로세서(CPU)가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치에 예외상

ko.wikipedia.org

 

728x90