Post

인터럽트

인터럽트

인터럽트(Interupt)란

인터럽트는 처리 중인 작업을 중단하고
우선 처리가 필요한 일을 처리하는 것입니다.

인터럽트의 필요성

CPU와 주변 장치 사이에서
자원을 효율적으로 활용하기 위해 필요합니다.
또한, 예기치 못한 문제가 발생하였을 경우
효율적으로 빠르게 처리할 수 있기 때문에 필요합니다.

인터럽트 과정

인터럽트는 아래 그림과 같은 과정을 통하여 처리가 됩니다.

  1. CPU의 interrupt-request line에 인터럽트 요청
  2. CPU가 작업 하나를 처리
  3. CPU가 interrupt-request line을 통해 인터럽트 요청이 있는지 확인
  4. 인터럽트 요청이 있다면 작업 중지(PC, SR 저장)
  5. 인터럽트 벡터에서 발생한 인터럽트에 맞는 인터럽트 서비스 루틴을 찾아서 실행
  6. 저장된 PC와 SR을 복구하고 인터럽트 전에 처리 중이던 작업을 재개

Desktop View

우선 순위가 높은 인터럽트부터 처리됩니다.

인터럽트 종류

대표적인 인터럽트의 종류로는 내부 인터럽트와 외부 인터럽트가 있습니다.

내부 인터럽트

내부 인터럽트는 CPU 코어 내부에서 프로그램이 실행되면서 인터럽트 되는 경우로
Exception 인터럽트 혹은 Trap이라고 불립니다.
내부 인터럽트가 발생하는 이유로는
Division by zero와 Overflow/Underflow 등이 있습니다.

외부 인터럽트

외부 인터럽트는 CPU 코어 외부 요인으로 발생하는 것을 의미합니다.
외부 인터럽트가 발생하는 이유로는
전원 이상과 기계 착오, 외부 신호, 입출력 인터럽트 등이 있습니다.

마스크

인터럽트는 마스크 가능 인터럽트와 마스크 불가능한 인터럽트로 나뉩니다.

마스크 가능 인터럽트는 바로 처리하지 않아도 되는 무시할 수 있는 인터럽트를 뜻하고
마스크 불가능 인터럽트는 하드웨어 고장과 같이 바로 처리해야 하는 인터럽트를 뜻합니다.

This post is licensed under CC BY 4.0 by the author.