Enterprise Infrastructure Intelligence ● Certified engineers online · Fast response guaranteed
리눅스/OS

Interrupt Bottom Half: Linux 인터럽트 분리 메커니즘의 실제 동작 원리

리눅스 커널의 인터럽트 핸들링은 실시간성과 작업 처리의 균형을 맞추기 위해 Top Half와 Bottom Half로 분리됩니다. Bottom Half는 인터럽트 이후 지연된 작업을 인터럽트 활성화 상태에서 실행하는 메커니즘으로, Softirq, Tasklet, Workqueue 등의 구현 방식을 통해 CPU 효율성과 시스템 반응성을 동시에 보장합니다.

2026.09.28  ·  17회  · 

Interrupt Bottom Half란?

Interrupt Bottom Half는 리눅스 커널이 인터럽트 처리를 두 단계로 나누는 아키텍처의 두 번째 부분입니다. 하드웨어 인터럽트 발생 시 즉시 실행되는 Top Half(상반부)와 달리, Bottom Half는 인터럽트 처리 이후 인터럽트가 다시 활성화된 상태에서 실행되는 지연 작업(Deferrable Actions)입니다. 시간 임계적이지 않은 무거운 작업을 분리함으로써 인터럽트 비활성화 시간을 최소화하고 전체 시스템 성능을 향상시킵니다.

핵심 아키텍처: 3가지 구현 메커니즘

리눅스 커널은 Bottom Half를 구현하기 위해 세 가지 주요 메커니즘을 제공합니다. Softirq는 컴파일 타임에 정적 할당되며 네트워킹과 블록 I/O 같은 극도로 시간 임계적인 작업 전용으로 예약되어 있습니다. Softirq는 여러 CPU에서 동시 실행 가능하지만 동기화를 개발자가 명시적으로 관리해야 합니다. Tasklet은 Softirq 위에 구축되어 동적 할당이 가능하고, 동일한 Tasklet은 한 번에 하나의 CPU에서만 실행되는 직렬화 보장을 제공합니다. Workqueue는 커널 스레드 기반으로 프로세스 컨텍스트에서 실행되어 sleep, 세마포어, 사용자 메모리 접근이 가능한 유연성을 제공합니다.

실제 동작 흐름 및 실무 고려사항

인터럽트 발생 시 CPU는 먼저 인터럽트를 비활성화한 상태에서 Top Half 핸들러를 실행합니다. Top Half는 하드웨어 상태 확인, 인터럽트 승인, 그리고 Bottom Half 예약만 수행한 후 즉시 반환합니다. 그 후 커널은 인터럽트를 다시 활성화하고 예약된 Bottom Half를 실행합니다. 만약 Softirq가 MAX_SOFTIRQ_TIME을 초과하거나 MAX_SOFTIRQ_RESTART 횟수를 넘으면 ksoftirqd 커널 스레드가 깨어나 나머지 작업을 처리하여 일반 프로세스 기아 상태를 방지합니다. 드라이버 개발 시에는 Top Half를 최소한으로 유지하되 필수 작업만 처리하고, 무거운 I/O나 버퍼 관리는 적절한 Bottom Half 메커니즘으로 미루는 것이 중요합니다.

WIKIDATA WORKSTATION
AI·렌더링에 최적화된
전문가용 워크스테이션
NVIDIA RTX GPU · 최대 192GB 메모리 · ECC 지원