개발관련/컴퓨터구조론

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

고통받는다 2023. 7. 10. 04:05

이번 시간에는 여러분이 개발하면서 많이 듣게될 용어중 하나인 인터럽트에 대해 설명하겠습니다.

인터럽트?

 

인터럽트란 컴퓨터 시스템에서 현재 실행 중인 프로세스나 스레드의 정상적인 흐름을 중단시키고, 특정 이벤트에 대한 처리를 수행하는 것을 말합니다.

머...멈춰!!!!

인터럽트는 크게 하드웨어 인터럽트와 소프트웨어 인터럽트 두가지 종류로 나뉩니다.

 

인터럽트의 종류

하드웨어 인터럽트

 

하드웨어 장치로부터의 신호나 요청으로 발생하는 인터럽트입니다. 하드웨어 인터럽트는 입출력(I/O) 인터럽트, 타이머 인터럽트, 외부 인터럽트 등이 있습니다. 입출력 인터럽트는 입출력 장치에서 데이터의 입출력 요청이 발생할 때, 타이머 인터럽트는 정해진 시간 간격으로 발생하는 타이머 신호 등이 이에 해당합니다. 하드웨어 인터럽트는 하드웨어 컨트롤러에 의해 감지되고, 인터럽트 컨트롤러가 이를 처리하여 운영체제에 알려줍니다.

 

소프트웨어 인터럽트

 

소프트웨어에서 명시적으로 발생시키는 인터럽트입니다. 소프트웨어 인터럽트는 시스템 콜(System Call), 예외(Exception), 트랩(Trap) 등으로 발생할 수 있습니다. 시스템 콜은 운영체제의 기능을 호출하는 인터럽트로, 사용자 프로그램이 운영체제의 서비스를 요청할 때 사용됩니다. 예외는 프로세스가 실행 중에 예기치 않은 상황이 발생할 때 발생하는 인터럽트로, 예외 상황을 처리하기 위해 예외 핸들러가 호출됩니다. 트랩은 명령어나 상태에 의해 인위적으로 발생시키는 인터럽트로, 주로 디버깅이나 프로그램의 특정 동작을 수행하기 위해 사용됩니다.

인터럽트 구성 요소

 

인터럽트 원인

 

인터럽트를 발생시키는 원인으로, 주로 하드웨어 장치나 소프트웨어 이벤트가 해당됩니다. 하드웨어 인터럽트의 경우 입출력 장치의 데이터 도착, 타이머 만료, 외부 신호 등이 인터럽트 원인이 될 수 있습니다. 소프트웨어 인터럽트의 경우는 주로 시스템 콜, 예외, 트랩 등이 인터럽트 원인이 됩니다.

 

인터럽트 컨트롤러

 

하드웨어 인터럽트의 경우 하드웨어 인터럽트 컨트롤러가 인터럽트를 감지하고 처리합니다. 인터럽트 컨트롤러는 인터럽트 우선순위 관리, 인터럽트 벡터 할당, 인터럽트 핸들링 등의 기능을 수행합니다. 인터럽트 컨트롤러는 하드웨어에 내장되어 있을 수도 있고, 별도의 칩 또는 모듈로 구성될 수도 있습니다.

 

인터럽트 핸들러

 

인터럽트가 발생했을 때 실행되는 코드로, 해당 인터럽트를 처리하는 역할을 합니다. 인터럽트 핸들러는 인터럽트 서비스 루틴(Interrupt Service Routine, ISR) 또는 인터럽트 루틴(Interrupt Routine) 등으로 불리기도 합니다. 인터럽트 핸들러는 인터럽트가 발생한 후, 현재 실행 중인 작업을 중단하고 인터럽트에 대한 적절한 처리를 수행한 후 원래의 작업으로 복귀합니다.

 

인터럽트 벡터

 

인터럽트 발생 시 어떤 인터럽트 핸들러를 실행해야 하는지를 결정하는 주소나 식별자입니다. 인터럽트 벡터는 인터럽트 발생 시 인터럽트 컨트롤러에 의해 참조되어 해당 인터럽트 핸들러로의 분기가 이루어집니다. 각 인터럽트에 대해 고유한 인터럽트 벡터가 할당되어야 합니다.

인터럽트 동작 절차