中断管理
中断是 CPU 响应外部和内部事件的核心机制。当中断信号到达时,CPU 暂停当前执行流程,保存上下文,转而执行对应的中断处理函数,完成后再恢复被打断的工作。Linux 内核将中断分为硬件中断和软件中断两大类,并建立了统一的中断管理框架来屏蔽底层硬件差异。
硬件中断由外部设备(如网卡、键盘、磁盘控制器)或 CPU 内部单元(如 Local APIC 定时器、页错误)触发,信号通过中断控制器路由到目标 CPU 核心。软件中断由内核代码主动触发(如 int 0x80 系统调用指令、软中断机制),用于实现异步执行和系统调用。
从内核管理的角度看,中断子系统的核心工作包括:中断控制器的初始化和配置、中断路由和亲和性管理、中断处理函数的注册和分发、以及上下半部机制将中断处理拆分为紧急和可延迟两部分。
中断控制器
中断控制器是 CPU 与外部设备之间的中断信号路由枢纽。x86 平台使用 APIC 体系(Local APIC + I/O APIC),ARM 平台使用 GIC。内核通过 irq_chip 驱动抽象了不同中断控制器的硬件差异。
中断处理
内核将中断处理拆分为顶半部(hardirq)和底半部(softirq/tasklet/workqueue)。顶半部在中断上下文中执行,必须快速完成;底半部在进程上下文中执行,可以处理耗时任务。驱动通过 request_irq 注册中断处理函数。