콘텐츠로 바로가기

Interrupts, Exceptions, and Trap Handling

외부 하드웨어 이벤트, 내부 오류, 그리고 의도된 시스템 요청이 CPU의 흐름을 어떻게 물리적으로 가로채고 커널의 제어권으로 넘기는지 그 중단과 복구의 물리 구조를 다루는 학습 노드입니다.

sys.entry
M

Me

hyunyoun's Blog

posts7 min read

1. Overview

인터럽트, 예외 및 트랩 처리(Interrupts, Exceptions, and Trap Handling, IET)는 CPU가 순차적인 실행 코드에서 벗어나 긴급하거나 특수한 상황에 대응하도록 만드는 하드웨어-OS 간의 '응급 호출 시스템'입니다.

운영체제는 가만히 앉아 기다리는 프로그램이 아닙니다. 외부 기기가 데이터를 보냈거나(Interrupt), 프로그램이 0으로 나누기를 시도했거나(Exception), 앱이 커널 서비스를 요청했을 때(Trap)만 CPU를 물리적으로 탈취하여 일을 처리합니다. 학습자는 이러한 물리적 가로채기 사건들이 발생했을 때 CPU가 현재의 레지스터 상태를 보호구역(Stack)으로 옮기고, **인터럽트 벡터 테이블(Interrupt Vector Table)**을 참조하여 대응 코드(ISR)로 점프하는 하드웨어 시퀀스를 배웁니다. 이를 통해 시스템의 실시간 반응성과 안정성을 지탱하는 근본적인 물리 실행 제어 구조를 이해합니다.

2. Scope & Boundaries

In-Scope

  • Hardware Interrupts: 외부 장치(타이머, 키보드)에 의한 비동기적 CPU 중단 물리
  • Software Exceptions: 잘못된 명령어, 메모리 위반 등 실행 중 발생하는 동기적 예외
  • Trap Mechanics: 시스템 콜을 구현하기 위해 의도적으로 유발하는 소프트웨어 인터럽트
  • Handler Execution: ISR(Interrupt Service Routine)의 컨텍스트 저장 및 복구 물리

Out-of-Scope

  • 특정 하드웨어 기기의 드라이버 상세 알고리즘 (03-04-XX 장치 노드에서 분담)
  • 고도의 실시간 스케줄링 이론 (02-06-XX 실시간 시스템 노드에서 분담)

Boundaries

  • IET vs. Signal: 시그널(Signal)이 '프로세스 간 소프트웨어적 알림'이라면, IET는 '하드웨어가 CPU의 명령어 포인터를 직접 바꾸는 물리적 강제성'으로 경계를 가릅니다.

3. Counterexample

  • 단순히 "에러가 나면 멈춘다"는 설명은 IET 학습이 아닙니다. 왜 인터럽트가 발생했을 때 **인터럽트 마스킹(Interrupt Masking)**이 특정 구간에서 왜 필수적인지 하드웨어 경쟁 상태(Race Condition) 관점에서 설명할 수 있어야 하며, **재진입성(Reentrancy)**이 결여된 ISR이 왜 시스템의 불규칙한 크래시를 유발하는지 물리적 호출 스택 관점에서 분석하지 못한다면 IET의 정수를 놓친 것입니다.

4. Prerequisites

  • Clocking & Timing Physics (Basic): CPU 타이밍 제어 기초가 필수입니다. (02-01-04 CTP)
  • Interrupt Latency & Jitter Physics (Recommended): 응답 지연의 하드웨어적 배경 이해가 권장됩니다. (02-05-03 ILJ)

5. Learning Map

  1. The Interruption Physics: 전류 신호나 명령어 오류가 어떻게 CPU의 발목을 물리적으로 잡는지 배웁니다.
  2. Jump Table Blueprint: 수백 가지 사건의 주소록(Vector Table)을 커널 메모리에 정교하게 배치합니다.
  3. Save and Conquer: 하던 일을 보관함에 넣고, 긴급 코드를 실행한 뒤, 다시 돌아오는 물리 회귀를 분석합니다.
  4. Hierarchy of Urgency: 인터럽트끼리 서로를 밀쳐내는 우선순위(Priority) 물리 전개도를 완성합니다.

6. Learning Topics

Basic

Core: 중단 이벤트의 분류와 하드웨어 감지 (Event Identification)

  • Why to Learn: 어떤 사건이 CPU를 멈추게 했는지 알아야 적절한 대응 물리 로직을 짤 수 있기 때문입니다.
  • What to Learn:
    • Asynchronous Interrupts: 하드웨어 기기에서 예고 없이 날아오는 핀 신호
    • Synchronous Exceptions: 실행 중인 명령어 자체에서 발생하는 물리적 결함(Fault)
    • Interrupt Request (IRQ) Line: 전선(Trace)을 타고 들어오는 전기적 트리거
  • How to Learn:
    • 타이머 인터럽트가 발생할 때마다 화면에 점이 찍히는 과정을 보고, CPU가 메인 루프 밖으로 나가는 물리적 증거 포착 실습
    • 잘못된 주소 접근 시 CPU가 'Page Fault' 예외를 어떻게 발생시키는지 수리적 감지 단계 추적
  • Implement: 특정 하드웨어 이벤트를 발생시켜 CPU가 강제로 특정 주소로 점프하게 만드는 테스트 코드

Core: 벡터 테이블과 ISR 진입 (Vector Table Mechanics)

  • Why to Learn: 하드웨어가 "어디로 가야 할지"를 찾는 나침반이자 시스템의 응답성을 결정하는 핵심 지도이기 때문입니다.
  • What to Learn:
    • IDT (Interrupt Descriptor Table): x86 등 주요 아키텍처의 핸들러 매핑 테이블
    • Privilege Switch in Handler: 유저 모드 인터럽트 시 커널 모드로의 강제 권한 상승 물리
    • Hardware Context Stacking: CPU가 자동으로 스택에 Push하는 레지스터 셋 분석
  • How to Learn:
    • 부팅 시 커널이 IDT를 초기화하는 메모리 주소 영역 분석 실습
    • 인터럽트 발생 직후의 스택 상단 값을 덤프하여 하드웨어가 무엇을 저장했는지 물리적으로 확인
  • Implement: 0으로 나누기(Divided by zero) 예외 발생 시 메시지를 출력하고 무사히 복귀하는 최소 기능 핸들러

Practical

Core: 인터럽트 콘텍스트와 재진입성 (Context & Reentrancy)

  • Why to Learn: ISR 내부에서 금기 사항을 지키지 않으면 시스템이 비결정론적인 물리 지옥에 빠지기 때문입니다.
  • What to Learn:
    • Atomic Operations in ISR: 인터럽트가 인터럽트를 방해하지 못하게 막는 물리적 불변성
    • Non-blocking Logic: ISR 내부에서 '잠들거나(Sleep)' '대기(Wait)'할 수 없는 물리적 제약
    • Reentrant Code: 여러 인터럽트가 동시에 호출해도 물리적 데이터 오염이 없는 코드 설계
  • How to Learn:
    • ISR 내부에서 공유 변수를 수정할 때, 메인 루프와 발생하는 데이터 레이스(Race) 현상 물리적으로 재현 실습
    • 인터럽트 중첩(Nested Interrupts) 시 스택 오버플로우가 발생하는 물리적 한계점 산출
  • Implement: 전역 변수를 쓰지 않고 오직 레지스터와 로컬 스택만 사용하여 동작하는 안전한 ISR

Advanced

Core: 하부 및 상부 반쪽 처리 (Top & Bottom Halves)

  • Why to Learn: 긴 작업을 ISR에서 다 하면 시스템이 '먹통'이 되므로, 물리적 작업을 지능적으로 분할하기 위함입니다.
  • What to Learn:
    • Hard Interrupt (Top Half): 최소한의 하드웨어 응대만 하고 즉시 복귀하는 물리 구간
    • Soft Interrupt / Tasklet (Bottom Half): 급하지 않은 데이터 처리를 나중으로 미루는 스케줄링 물리
    • Interrupt Latency Optimization: 지터를 줄이기 위해 처리를 지연(Defer)시키는 고도화 전략
  • How to Learn:
    • 네트워크 패킷 수신 시 패킷 복사(느림)와 수신 알림(빠름)을 각각 상/하부로 나누어 시스템 지연 시간 개선 실습
    • 리눅스의 workqueuetasklet이 실제 커널 물리 스레드와 맺는 관계 분석
  • Implement: 입력 알림은 즉각 처리하고, 데이터 가공은 백그라운드 스레드로 넘기는 하이브리드 인터럽트 처리기

7. Terminology

Term (EN / ko, abbr) 1문장 정의 단계(기본/권장/실무/심화) 역할/맥락 관련 개념 유사/대비/함께 사용 오해 포인트 Evidence(Primary/Secondary/Industry) Flags(core)
Interrupt 주변 장치가 CPU에 특정 서비스를 즉시 요구하기 위해 보내는 물리적 전기 신호 또는 하드웨어 이벤트입니다. 기본 외부 이벤트 IRQ / ISR Exception '에러'만을 의미하지 않음 P1:CS2023 core
Exception CPU 내부에서 명령어를 실행하던 중 잘못된 연산이나 권한 위반으로 인해 스스로 발생하는 동기적 방해 이벤트입니다. 기본 내부 결함 Fault / Trap Interrupt '프로그램 오류'가 전부는 아님 P1:CS2023 core
IDT / IVT 각 인터럽트 번호에 대응하는 처리기(Handler)의 시작 주소를 담고 있는 하드웨어 참조 테이블입니다. 추천 주소 사상 Vector / Gate Jump Table 단순한 배열이 아닌 보안 관문 Industry/ARM core
ISR (인터럽트 서비스 루틴) 인터럽트 발생 시 이를 처리하기 위해 실행되는 커널 공간의 특수 목적 함수입니다. 추천 대응 코드 Handler / Context Callback 일반 함수처럼 호출 불가 P2:SWEBOK core

8. References

Primary

Secondary

  • [Understanding the Linux Kernel] Bovet & Cesati — Interrupt handling in practice.
  • [Operating Systems: Three Easy Pieces] Remzi — The trap and return mechanism.

Industry

  • [ARM: Exception and Interrupt Handling in ARMv8-A] — Industry standard implementation.
  • [Intel: Interrupt and Exception Handling (Vol. 3A)] — Comprehensive x86 reference.

9. Final Checklist

Primary

  • '인터럽트'와 '예외'의 물리적 발생 기점(내부 vs 외부)과 동기성 차이를 명확히 구분하여 설명 가능한가? (P1)
  • 인터럽트가 발생했을 때 하드웨어가 왜 현재 수행 중인 코드의 '명령어 포인터(PC)'를 가장 먼저 저장해야 하는지 입증할 수 있는 가? (P1)

Secondary

  • ISR 내부에 'Print' 함수나 'Delay' 루틴을 넣었을 때 시스템 전체의 물리적 타이밍이 왜 무너지는지 소통 가능한가?
  • **인터럽트 마스킹(Masking)**을 통해 임계 영역(Critical Section)을 보호할 때, 이를 너무 길게 유지할 경우 발생하는 물리적 부작용을 도출할 수 있는 가?

Industry

  • 실시간 데이터 수집 시스템 설계 시, 인터럽트 지연 시간(Latency)을 측정하고 이를 최소화하기 위한 'Top/Bottom Half' 분리 방안을 제안할 수 있는 가? (SFIA)
  • 커널 보안 취약점 분석 시, 예외 처리기의 주소를 조작하여 권한을 탈취하는 'IDT Hooking'의 물리적 원리와 방어 기작을 기술할 수 있는 가?