핵심 인사이트 (3줄 요약)

  1. 본질: 인터럽트 벡터 (Interrupt Vector)는 인터럽트가 발생했을 때 CPU (Central Processing Unit)가 어떤 ISR (Interrupt Service Routine)로 들어가야 하는지를 빠르게 찾게 해 주는 번호+주소 매핑 규칙이다.
  2. 가치: 장치 원인을 일일이 조사하는 탐색 과정을 없애고, IVT (Interrupt Vector Table) 또는 IDT (Interrupt Descriptor Table)를 인덱스 방식으로 바로 참조하게 만들어 인터럽트 지연 시간과 제어 복잡도를 크게 줄인다.
  3. 판단 포인트: 실무에서는 벡터 자체보다도 벡터 할당 정책, 우선순위, 예외 벡터와 장치 벡터의 분리, 멀티코어 분산 처리가 성능과 안정성을 가르는 핵심이 된다.

Ⅰ. 개요 및 필요성

인터럽트 벡터 (Interrupt Vector)는 인터럽트 원인과 처리 루틴의 시작점을 연결하는 식별 체계다. 어떤 장치나 예외가 발생했는지 알게 된 뒤, CPU가 “그다음 어디로 가야 하는가”를 즉시 결정하게 해 주는 주소 안내판이라고 볼 수 있다.

이 개념이 필요한 이유는 인터럽트의 세계가 본질적으로 비동기적이기 때문이다. 키보드 입력, 타이머 만료, 디스크 완료, 0으로 나누기 예외처럼 사건은 예고 없이 들어오는데, CPU가 매번 모든 원인을 순서대로 확인하면 응답 시간은 장치 수와 검사 순서에 따라 길어지고, 고속 시스템에서는 그 오버헤드가 곧 병목이 된다. 그래서 현대 시스템은 “누가 불렀는지”와 “어디로 가야 하는지”를 분리해, 인터럽트 컨트롤러가 원인 식별을 맡고 벡터가 분기 주소 결정을 맡는다.

아래 그림은 왜 벡터가 필요한지를 보여준다. 핵심은 탐색형 처리인덱스형 처리로 바꾸는 데 있다.

┌──────────────────────────────────────────────────────────────────────┐
│              인터럽트 원인 식별 방식의 차이: 탐색 vs 인덱스           │
├───────────────────────────────┬──────────────────────────────────────┤
│ 비벡터/탐색형 처리            │ 벡터 기반 처리                        │
├───────────────────────────────┼──────────────────────────────────────┤
│ 인터럽트 발생                 │ 인터럽트 발생                         │
│   │                           │   │                                  │
│   ▼                           │   ▼                                  │
│ 장치 A 확인                   │ 벡터 번호 수신                       │
│   │                           │   │                                  │
│ 아니면 장치 B 확인            │   ▼                                  │
│   │                           │ 테이블 인덱스 계산                   │
│ 아니면 장치 C 확인            │   │                                  │
│   │                           │   ▼                                  │
│ ...                           │ ISR 주소 즉시 획득                   │
│   ▼                           │   │                                  │
│ 원인 찾은 뒤 분기             │   ▼                                  │
│                               │ ISR 실행                             │
└───────────────────────────────┴──────────────────────────────────────┘

이 구조 덕분에 인터럽트 처리는 “누가 문제를 일으켰는지 찾는 시간”보다 “정해진 번호로 점프하는 시간”이 중심이 된다. 즉 인터럽트 벡터는 단순한 주소 목록이 아니라, 시스템이 사건을 예측 가능한 시간 안에 처리하도록 만드는 시간 절약 장치다.

  • 📢 섹션 요약 비유: 인터럽트 벡터는 병원 응급실의 진료과 코드표와 같다. 증상을 듣고 모든 진료실 문을 열어보는 대신, 코드 7이면 바로 신경외과로 가듯이 사건과 대응 위치를 즉시 연결해 준다.

Ⅱ. 아키텍처 및 핵심 원리

인터럽트 벡터의 핵심 원리는 복잡하지 않다. 인터럽트 번호를 받으면, 그 번호를 테이블의 인덱스로 써서 ISR 진입 정보를 읽는다. 다만 실제 아키텍처에서는 단순 주소만 저장하는 경우도 있고, 권한·세그먼트·게이트 타입까지 담은 디스크립터를 저장하는 경우도 있다.

핵심 구성 요소

구성 요소역할설계 포인트
벡터 번호 (Vector Number)인터럽트/예외를 구분하는 식별자예외와 장치 번호가 충돌하지 않게 배치
IVT (Interrupt Vector Table)벡터 번호별 ISR 주소 테이블고정 크기 엔트리, 빠른 인덱싱
IDT (Interrupt Descriptor Table)보호 모드에서 ISR 진입 속성을 담는 테이블권한 수준, 게이트 타입, 보안 제어
PIC (Programmable Interrupt Controller) / APIC (Advanced Programmable Interrupt Controller)물리적 IRQ (Interrupt Request)를 벡터로 변환·전달우선순위, 마스킹, 멀티코어 라우팅
ISR (Interrupt Service Routine)실제 사건 처리 코드짧고 결정적으로 작성

아래 그림은 벡터 기반 분기의 최소 흐름을 보여준다.

┌──────────────────────────────────────────────────────────────────────┐
│                    인터럽트 벡터 참조 및 분기 흐름                    │
├──────────────────────────────────────────────────────────────────────┤
│ 장치/예외 발생                                                       │
│     │                                                                │
│     ▼                                                                │
│ 인터럽트 컨트롤러가 벡터 번호 전달                                   │
│     │                                                                │
│     ▼                                                                │
│ CPU가 테이블 기준 주소(Base) 확보                                    │
│     │                                                                │
│     ▼                                                                │
│ 엔트리 위치 계산 = Base + (Vector Number × Entry Size)               │
│     │                                                                │
│     ▼                                                                │
│ 해당 엔트리 읽기 ──▶ ISR 주소/속성 확인 ──▶ 해당 ISR로 분기           │
└──────────────────────────────────────────────────────────────────────┘

이때 중요한 것은 CPU가 인터럽트 원인을 “추론”하지 않는다는 점이다. 벡터 방식에서는 이미 번호가 결정되어 들어오므로, CPU는 조회만 하면 된다. 그래서 인터럽트 처리의 첫 분기 비용이 낮아지고, 예외/장치/소프트웨어 인터럽트를 같은 프레임으로 다루기 쉬워진다.

IVT와 IDT의 차이

초기 단순 구조에서는 IVT가 “번호 → 주소” 매핑만 제공했다. 반면 현대 x86 계열 보호 모드에서는 IDT가 인터럽트 게이트, 트랩 게이트, 권한 수준까지 기술한다. 즉 현대 시스템의 벡터는 주소 점프만이 아니라 안전한 진입 규약까지 포함한다.

예를 들어 x86 계열에서는 총 256개 벡터 공간을 두고, 보통 0~31은 CPU 예외, 32 이상은 외부 장치 인터럽트에 배치한다. 이 분리는 장치 인터럽트가 예외 처리 공간을 침범하지 않게 하며, 운영체제 설계에서 충돌을 피하는 기본 원칙이 된다.

┌──────────────────────────────────────────────────────────────────────┐
│                   x86 계열 벡터 공간의 대표적 배치                   │
├───────────────────────┬──────────────────────────────────────────────┤
│ 벡터 구간             │ 주 용도                                       │
├───────────────────────┼──────────────────────────────────────────────┤
│ 0  ~ 31               │ CPU 예외 (Divide Error, Page Fault 등)       │
│ 32 ~ 255              │ 외부 장치 인터럽트, 시스템 정의 벡터          │
└───────────────────────┴──────────────────────────────────────────────┘

즉 인터럽트 벡터는 단순한 “주소표”에서 끝나지 않는다. 어떤 벡터는 치명적 예외를, 어떤 벡터는 네트워크 수신 큐를, 어떤 벡터는 타이머 틱을 대표하며, 그 번호 배치 자체가 시스템 설계 철학을 반영한다.

  • 📢 섹션 요약 비유: 인터럽트 벡터는 아파트 동·호수 체계와 같다. “택배 왔습니다”라는 말만으로는 부족하지만, 103동 1204호까지 정해져 있으면 경비실은 더 묻지 않고 정확한 집으로 바로 보낸다.

Ⅲ. 비교 및 연결

인터럽트 벡터를 제대로 이해하려면 벡터 인터럽트비벡터 인터럽트를 비교해야 한다. 차이는 단순히 “빠르다/느리다”가 아니라, 인터럽트 원인 식별 책임이 어디에 있느냐에 있다.

비교 항목벡터 인터럽트 (Vectored Interrupt)비벡터 인터럽트 (Non-vectored Interrupt)
원인 전달 방식장치/컨트롤러가 벡터 번호 제공CPU가 추가 확인 필요
첫 분기 속도빠름, 인덱스 기반느림, 상태 확인 필요
확장성장치 수 증가에 유리공유 선로 증가 시 복잡도 상승
구현 복잡도컨트롤러/테이블 필요단순 구현 가능
적합 환경범용 OS, 서버, 고성능 시스템소규모 임베디드, 단순 장치

왜 이 차이가 중요한가? 벡터 방식은 인터럽트가 많아질수록 가치가 커진다. 장치 수가 적고 단순한 마이크로컨트롤러에서는 비벡터 방식도 충분할 수 있지만, 멀티코어 서버처럼 네트워크 카드·스토리지·타이머·가상화 이벤트가 동시에 발생하는 환경에서는 원인 탐색 시간이 곧 성능 저하와 지터 (Jitter)로 이어진다.

또한 인터럽트 벡터는 다른 개념과 자연스럽게 연결된다.

  1. ISR과 연결된다. 벡터는 결국 어느 ISR을 부를지 정하는 진입 키다.
  2. PIC/APIC와 연결된다. 물리적 IRQ를 논리적 벡터 번호로 바꿔 주기 때문이다.
  3. MSI (Message Signaled Interrupt)MSI-X (Message Signaled Interrupt eXtensions)와 연결된다. 현대 PCI Express 장치는 전기선 대신 메시지 쓰기 방식으로 벡터를 발생시킨다.
  4. OS (Operating System) 스케줄링과 연결된다. 타이머 벡터 하나가 시분할 스케줄링 전체를 움직일 수 있다.

특히 MSI-X는 장치가 여러 개의 벡터를 가져 여러 큐를 코어별로 나눠 처리하게 한다. 이때 인터럽트 벡터는 단순 예외 주소표가 아니라, 병렬 I/O 스케줄링 단위로 확장된다.

  • 📢 섹션 요약 비유: 벡터 인터럽트는 각 손님이 번호표를 뽑고 창구로 가는 은행 시스템이고, 비벡터 인터럽트는 안내 직원이 손님 한 명씩 무슨 업무인지 다시 물어보는 방식이다. 손님이 많아질수록 번호표 체계의 차이가 커진다.

Ⅳ. 실무 적용 및 기술사 판단

실무에서 인터럽트 벡터는 “개념을 아는가”보다 “어떻게 배치하고 운영하는가”가 더 중요하다. 서버, 스토리지, 고속 네트워크 시스템에서는 벡터 배치가 응답 시간과 처리량을 직접 좌우한다.

대표 판단 포인트

  1. 예외 벡터와 장치 벡터를 분리했는가?
    CPU 예약 영역을 침범하면 디버깅이 매우 어려워진다.
  2. 고속 장치에 충분한 벡터를 할당했는가?
    MSI-X 기반 네트워크 카드나 NVMe (Non-Volatile Memory Express) 장치는 큐 수만큼 벡터를 받으면 병렬성이 좋아진다.
  3. 인터럽트 친화성 (Interrupt Affinity)을 설정했는가?
    특정 벡터를 특정 코어에 매핑하면 캐시 지역성과 예측 가능성이 좋아진다.
  4. 벡터 부족과 공유 인터럽트 상황을 고려했는가?
    벡터 수는 유한하므로 장치가 많으면 공유나 재배치 전략이 필요하다.

아래 그림은 실무에서 자주 만나는 의사결정 흐름이다.

┌──────────────────────────────────────────────────────────────────────┐
│                 고속 장치 인터럽트 벡터 설계 판단 흐름               │
├──────────────────────────────────────────────────────────────────────┤
│ 장치가 고속·다중 큐 장치인가?                                        │
│        │                                                             │
│   ┌────┴────┐                                                        │
│   │   예    │                                                        │
│   ▼         │                                                        │
│ MSI-X 지원 확인                                                      │
│   │                                                                   │
│   ▼                                                                   │
│ 큐 수 기준으로 벡터 분산 할당                                         │
│   │                                                                   │
│   ▼                                                                   │
│ 코어 친화성/NUMA (Non-Uniform Memory Access) 배치 조정               │
│                                                                       │
│   └──── 아니오 ──▶ 단일 벡터 또는 공유 인터럽트 사용 검토            │
└──────────────────────────────────────────────────────────────────────┘

안티패턴

  • 모든 장치 인터럽트를 코어 0에 몰아넣는 설계
  • 고속 NIC (Network Interface Card)에 레거시 공유 인터럽트를 유지하는 구성
  • 벡터 번호만 보고 끝내고, 실제 ISR 실행 시간과 인터럽트 폭주를 측정하지 않는 운영

기술사 답안형 정리

인터럽트 벡터는 인터럽트 원인의 신속한 식별 이후, 적절한 서비스 루틴으로의 결정적 분기를 보장하는 메커니즘으로 정의할 수 있다. 설계 시에는 단순 주소 매핑을 넘어서, 우선순위 체계, 보호 모드 디스크립터, 멀티코어 분산, 메시지 기반 인터럽트 확장까지 함께 설명해야 답안의 완성도가 올라간다.

  • 📢 섹션 요약 비유: 인터럽트 벡터 운영은 공항 게이트 배정과 같다. 비행기가 많아질수록 아무 게이트나 쓰게 하면 활주로보다 탑승 동선이 먼저 막히므로, 항공편 성격과 시간대에 맞게 게이트를 배치해야 전체 공항이 부드럽게 돌아간다.

Ⅴ. 기대효과 및 결론

좋은 인터럽트 벡터 설계는 인터럽트 처리를 빠르게 만드는 데서 끝나지 않는다. 사건마다 진입점이 명확해지므로 장애 분석이 쉬워지고, 보호 모드에서는 잘못된 권한 진입을 막으며, 멀티코어 시스템에서는 장치 부하를 분산시키는 기준점이 된다. 즉 벡터는 인터럽트의 주소 체계이면서 동시에 운영 정책의 접점이다.

반대로 벡터 설계가 부실하면 장치 간 충돌, 공유 인터럽트 증가, 코어 편중, 디버깅 난이도 상승이 뒤따른다. 그래서 인터럽트 벡터는 “번호를 붙이는 작업”이 아니라, 예외·장치·코어·운영체제 정책을 일관되게 묶는 구조 설계로 이해해야 한다.

미래 방향도 분명하다. 장치 수가 많아지고 가상화·고속 네트워크·가속기가 늘어날수록 벡터는 더 정적인 표가 아니라, 메시지 기반 인터럽트와 코어 지역성을 고려한 동적 라우팅 자원으로 중요성이 커진다. 따라서 인터럽트 벡터는 “ISR 주소를 찾는 표”로만 외우지 말고, 이벤트를 정확한 처리 경로로 보내는 시스템의 교통 표지판으로 기억하는 것이 맞다.

  • 📢 섹션 요약 비유: 인터럽트 벡터는 도시의 도로 표지판과 같다. 표지판이 잘 설계되면 차가 막히지 않고 목적지로 바로 가지만, 표지판이 엉키면 도로는 넓어도 도시 전체가 혼잡해진다.

📌 관련 개념 맵

개념연결 포인트
인터럽트 (Interrupt)사건 자체를 CPU에 알리는 상위 개념
ISR (Interrupt Service Routine)벡터가 최종적으로 진입시키는 처리 코드
IVT (Interrupt Vector Table)벡터 번호를 주소로 매핑하는 가장 기본적인 테이블
IDT (Interrupt Descriptor Table)보호 모드에서 주소와 권한 속성을 함께 담는 확장형 테이블
PIC / APICIRQ를 수집하고 우선순위를 반영해 벡터를 전달하는 하드웨어
MSI / MSI-X메시지 기반으로 벡터를 발생시켜 병렬성과 확장성을 높이는 현대 인터럽트 방식
인터럽트 친화성 (Interrupt Affinity)특정 벡터를 특정 코어에 배정해 성능을 최적화하는 운영 기법

📈 관련 키워드 및 발전 흐름도

폴링 기반 원인 탐색
    │
    ▼
인터럽트 발생과 벡터 번호 분리
    │
    ▼
IVT (Interrupt Vector Table) 기반 주소 분기
    │
    ▼
IDT (Interrupt Descriptor Table) 기반 보호 모드 진입 제어
    │
    ▼
APIC · MSI · MSI-X 기반 멀티코어/다중 큐 벡터 분산

이 흐름은 인터럽트 처리가 탐색 중심 → 주소 매핑 중심 → 권한 제어 포함 → 병렬 분산 중심으로 발전해 온 과정을 보여준다.

👶 어린이를 위한 3줄 비유 설명

  1. 인터럽트 벡터는 학교에서 “무슨 일이 생기면 어느 선생님께 가야 하는지” 적어 둔 안내판이에요.
  2. 그래서 종이 울리면 모든 교실을 돌아다니지 않고, 바로 맞는 선생님 방으로 달려갈 수 있어요.
  3. 컴퓨터도 이 안내판 덕분에 급한 일을 빠르고 헷갈리지 않게 처리한답니다.