본문 바로가기
IT 일반, 컴퓨터

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

by jjongday 2024. 4. 2.
반응형

컴퓨터구조를 공부하다 보면,  '인터럽트'라는 단어에 대해 듣게 될 것이다. 이 인터럽트라는 단어는 무슨 의미이며, 프로그램이 실행되는 데에 어떤 영향을 미치는 걸까?

인터럽트의 정의

인터럽트는 단어부터 'Interrupt', '방해하다'라는 뜻을 지니고 있는 단어답게 CPU가 현재 진행중인 작업(우리는 이것을 프로세스라고 부른다) 을 일시적으로 중단하고, 더 우선순위가 높거나 긴급한 작업을 처리하는 것을 의미한다.

인터럽트의 종류

인터럽트는 크게 동기 인터럽트와, 비동기 인터럽트로 나뉜다. 이 두가지에 대해 알아보자.

첫번째로 동기 인터럽트이다. 이는 CPU가 현재 실행중인 명령어와 관련된 문제나 상황에 의해 발생하는 인터럽트를 의미한다. 동기 인터럽트는 CPU가 명령어를 정상적으로 수행할 수 없을 때 발생하며, 보통 프로그램이 오류나 예외를 발생시킬 때 나타난다. 이러한 이유로 동기 인터럽트는 예외, 혹은 소프트웨어 인터럽트로도 불린다. 동기 인터럽트의 '동기'라는 용어는 CPU의 명령 사이클과 인터럽트가 관련되어 나타나기 때문이다.

두번째로 비동기 인터럽트가 있다. 이는 주로 입출력 장치나 다른 하드웨어적 요소들로부터 신호를 받아서 발생하며, CPU의 내부 상태와 무관하게 언제든 일어날 수 있다는 것이 동기 인터럽트와의 차이라고 할 수 있을 것이다. 예를 들어 키보드의 키가 눌리거나, 네트워크 카드에서 데이터 패킷이 도착하는 등의 이벤트가 비동기 인터럽트를 발생시킬 수 있다. 이러한 경우 해당 하드웨어 장치는 CPU에 신호를 보내고, CPU는 현재 실행중인 작업을 일시 중단하여 인터럽트 처리 루틴을 실행한다.


비동기 인터럽트(하드웨어 인터럽트) 처리 순서


그러면 비동기 인터럽트가 어떻게 처리되는지를 알아보자. 아래와 같은 순서로 처리된다고 보면 된다.

입출력장치/하드웨어 등이 CPU로 인터럽트 요청 신호를 보낸다. 이는 현재 CPU가 인터럽트 가능한 상태인지를 묻는 것이다.

CPU가 실행 사이클을 거치고 인출 사이클로 돌아가기 전, 인터럽트 여부를 확인한다.

인터럽트 플래그(현재 인터럽트가 가능한지)를 통해 인터럽트를 받아들일 수 있는지 인터럽트 여부를 확인한다.

인터럽트가 가능하다면, 인터럽트를 진행하기 위해 현재 하던 작업을 백업한다(레지스터 값을 저장하는 등)

인터럽트 벡터(어떤 인터럽트 서비스 루틴을 실행해야 하는지에 대한 정보)를 통하여 인터럽트 서비스 루틴(인터럽트를 처리하기 위한 프로그램)을 실행한다.

인터럽트 서비스 루틴이 마쳐지면, 미리 4번 작업에서 백업해둔 작업을 복구해 다시 프로그램 실행을 재개한다.

반응형