Featured image of post 인터럽트 (interrupt)

인터럽트 (interrupt)

하드웨어가 운영체제와 상호 작용하는 주요 방법인 인터럽트에 대하여

인터럽트

인터럽트는 컴퓨터 시스템에서 비동기적 이벤트를 처리하는 중요한 메커니즘이다.

하드웨어 장치나 외부 이벤트가 발생할 때, CPU가 현재 작업을 중단하고 새로운 작업을 처리하도록 유도한다.

예를 들어, 키보드 입력이나 디스크 작업 완료 등의 사건이 발생하면 해당 장치 컨트롤러는 인터럽트를 발생시킨다.

인터럽트 처리 과정

  1. CPU가 인터럽트를 수신하면 실행 중이던 프로그램의 작업을 즉시 중단한다.

  2. 인터럽트 번호를 인터럽트 벡터의 인덱스로 사용하여 ISR(Interrupt Service Routine)의 시작 주소를 가져온다.

  3. CPU는 PC(Program Counter) 및 레지스터 상태를 스택에 저장하여 보관하고, ISR 코드가 위치한 주소로 제어를 넘긴다.

  4. 진행 중인 프로그램의 레지스터 값들도 스택 또는 지정된 저장 공간에 대피시킨다.

  5. ISR(인터럽트 서비스 루틴)이 실행되어 요청된 작업을 처리한다.

  6. ISR 작업이 끝나면, CPU는 스택에서 이전 프로그램의 레지스터 상태와 PC 값을 복원한다.

  7. IRET(Interrupt Return) 명령어를 실행하여 원래의 프로그램 수행 위치로 복귀한다.

인터럽트 분류

인터럽트는 크게 세 가지 종류로 나눌 수 있다.

내부 인터럽트 (Internal Interrupt, Exception)

내부 인터럽트는 CPU가 명령어를 실행하는 도중에 내부적으로 발생하는 인터럽트다. 크게 트랩(Trap)과 폴트(Fault), 어보트(Abort) 세 가지 유형으로 나뉜다.

트랩 (Trap)

프로그래머가 의도적으로 만든 인터럽트. 주로 디버깅 또는 특정 시스템 콜 호출 시 사용된다.

  • breakpoint(중단점)

폴트 (Fault)

실행 중인 명령어에서 오류가 발생하여 이를 바로잡기 위해 발생한다. 문제가 해결되면 다시 명령을 재실행할 수 있다.

  • 페이지 폴트(Page Fault)
  • 일반 보호 예외(General Protection Fault)

어보트 (Abort)

프로그램의 심각한 오류가 발생해 복구할 수 없을 때 CPU가 강제로 실행을 중단시키기 위한 인터럽트이다. 일반적으로 프로그램 종료로 이어진다.

  • 더블 폴트(Double Fault)

외부 인터럽트 (External Interrupt, Hardware Interrupt)

컴퓨터 시스템 외부의 하드웨어 장치가 발생시키는 인터럽트다. 예를 들어, 키보드 입력, 마우스 클릭, 타이머 시간 초과, 디스크 입출력 완료 등이 해당된다.

  • 타이머 인터럽트: 정기적으로 일정 시간 간격마다 CPU에게 인터럽트를 발생시켜 작업을 전환하게 해준다.
  • 입출력 장치 인터럽트: 키보드, 마우스 등 주변 장치 입력 처리

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

소프트웨어가 의도적으로 명령어로 인터럽트를 발생시키는 경우다. 주로 운영체제 서비스 호출이나 시스템 호출(system call)을 요청할 때 사용된다.

  • 시스템 콜 인터럽트: 사용자 프로그램이 운영체제의 특정 기능을 사용하고자 인터럽트를 발생시킨다. (예: INT 0x80 리눅스 시스템 콜)

인터럽트의 우선순위

인터럽트가 여러 개 동시에 발생하면 CPU는 인터럽트의 우선순위(priority)에 따라 처리 순서를 결정한다. 일반적으로 더 중요하거나 긴급한 인터럽트가 우선 처리된다.

예를 들어, 타이머 인터럽트는 낮은 우선순위를 가질 수 있지만, 치명적인 하드웨어 오류를 나타내는 인터럽트(예: 더블 폴트)는 높은 우선순위를 가진다.

인터럽트 종류

벡터 번호설명
0나눗셈 에러
1디버그 예외
2Null 인터럽트
3중단점(breakpoint)
4INTO-검출 오버플로
5제한 범위 예외
6유효하지 않은 opcode
7장치 사용하지 않음
8더블 폴트
9부처리기 세그먼트 침범(예약됨)
10유효하지 않은 태스크 상태 세그먼트
11존재하지 않는 세그먼트
12스택 폴트
13일반 보호
14페이지 폴트
32-255Maskable 인터럽트