PLIC-中断控制器
PLIC (Platform Level Interrupt Controller) 是 RISC-V 架构中的中断路由器。
战术地位
外部设备(网卡、UART、磁盘)不能直接连到 CPU 核心,它们连接到 PLIC。PLIC 决定将中断转发给哪个 CPU 核(Hart)。
工作流程
- Claim (认领): 当 CPU 收到中断信号进入
kernelvec后,必须读取 PLIC 的 Claim 寄存器,询问:“是谁在找我?” PLIC 返回设备号(如 UART 是 10)。 - Handle (处理): CPU 调用对应的驱动程序 (
uartintr) 处理业务。 - Complete (完成): 处理完毕后,CPU 必须写回 PLIC 的 Claim 寄存器,以此通知 PLIC:“我处理完了,你可以发下一个了。”
xv6 实现
plicinit(): 在内核启动时配置 PLIC,允许 UART 和 Virtio 磁盘产生中断。plicinithart(): 每个 CPU 核启动时都要告诉 PLIC:“我准备好接收中断了”。