SpringBoot仓储管理系统全栈开发与毕业设计实践
2026/10/29 21:29:24
程序中断方式是一种由外设主动触发的 I/O 控制方式,核心逻辑是:外设准备好数据后,主动向 CPU 发送中断请求,CPU 暂停当前任务,转而执行专门的中断服务程序完成数据传输,传输结束后恢复原任务。
CPU 与外设的交互遵循“主动工作 + 被动响应”模式:
程序中断方式需要专门的硬件支持,核心组件包括:
| 硬件组件 | 作用 |
|---|---|
| 中断请求线 | 外设向 CPU 发送中断请求的物理信号线(如 x86 的 INTR 引脚) |
| 中断控制器 | 管理多个外设的中断请求,进行优先级判断(如 Intel 8259 中断控制器),避免多个中断同时冲突 |
| 中断向量表 | 存储不同外设中断服务程序的入口地址,CPU 可通过中断向量号直接跳转,无需逐个查询 |
| 外设状态 / 数据寄存器 | 与程序查询方式一致,状态寄存器标记外设就绪状态,数据寄存器暂存传输数据 |
程序中断方式的流程分为5 个核心步骤,核心是 “外设主动触发,CPU 被动响应”:
初始化阶段
CPU 执行指令,初始化外设(如启动键盘扫描、配置串口波特率),同时初始化中断控制器:
外设准备数据并触发中断
外设完成数据准备(如键盘检测到按键按下、ADC 完成采样)后:
CPU 响应中断
中断控制器收到请求后,进行两步处理:
执行中断服务程序(核心数据传输阶段)
CPU 响应中断后,按固定流程执行:
IRET(中断返回指令),回到主程序的中断断点处继续执行。外设继续工作数据传输完成后,外设可继续准备下一批数据,等待下一次触发中断。
| 优点 | 具体说明 |
|---|---|
| CPU 利用率大幅提升 | CPU 无需主动轮询,可在等待外设时执行主程序,仅在数据就绪时短暂响应中断 |
| 实时性较好 | 外设就绪后立即触发中断,CPU 能快速响应,适合需要及时处理的场景(如工业传感器数据采集) |
| 硬件复杂度适中 | 仅需中断控制器,无需 DMA 控制器等复杂硬件,成本低于 DMA 方式 |
| 支持多外设并行 | 中断控制器可管理多个外设的中断请求,CPU 可按优先级依次响应,适合多外设系统 |
| 缺点 | 具体说明 |
|---|---|
| 存在中断开销 | 每次中断都需要 “保存现场 → 查找入口 → 恢复现场”,这些操作会占用 CPU 时间 |
| 传输效率有限 | 每次中断仅能传输一个数据单元(字节 / 字),若需传输大批量数据(如硬盘读写),会产生频繁中断,反而降低 CPU 利用率 |
| 依赖中断控制器 | 必须配备中断控制器管理优先级和请求,硬件复杂度高于程序查询方式 |
| 可能出现中断嵌套冲突 | 高优先级中断可打断低优先级中断,若嵌套层数过多,可能导致栈溢出或现场混乱 |
程序中断方式适用于中低速外设、小批量数据传输、对实时性有一定要求的场景,典型案例包括:
反例:不适合高速、大批量数据传输场景(如 NVMe 硬盘读写、视频流采集),这类场景更适合 DMA 方式。