1. 轮询与中断机制概述
在计算机系统中,CPU与外部设备的交互方式主要有两种基本模式:轮询(Polling)和中断(Interrupt)。这两种机制构成了现代计算机I/O系统的基石,它们的本质区别在于"谁主动"的问题。
轮询就像一位焦虑的班主任不断检查每个学生是否完成了作业。CPU需要定期主动查询每个设备的状态寄存器,检查是否有数据需要处理。这种方式实现简单直接,但效率低下——就像班主任把大部分时间都花在挨个询问上,而没时间批改作业。
中断机制则更像学生举手提问的模式。设备在准备好数据或需要服务时,会主动通过中断信号线向CPU发出请求。CPU收到中断后暂停当前工作,转而处理设备需求。这种方式显著提高了CPU利用率,但实现复杂度更高——就像教室需要一套完善的学生提问管理规则。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心特性对比分析
2.1 工作机制差异
| 特性 | 轮询(Polling) | 中断(Interrupt) |
|---|---|---|
| 触发方式 | CPU周期性地主动检查设备状态 | 设备就绪时主动通知CPU |
| 硬件支持 | 仅需状态寄存器 | 需要中断控制器和中断向量表 |
| 典型应用 | 简单嵌入式系统、实时控制系统 | 通用计算系统、高吞吐量设备 |
在实际工程中,我曾为一个工业传感器项目选择I/O机制。初期使用轮询方式,代码简单到只需一个while循环检查GPIO状态。但当传感器数量增加到8个时,CPU负载明显上升。改为中断驱动后,系统响应时间从平均50ms降至5ms以内,同时CPU利用率下降了60%。
2.2 性能特征比较
CPU占用率:
- 轮询:持续占用CPU资源,即使设备空闲时也在做无用功
- 中断:仅在设备需要服务时占用CPU,空闲时可执行其他任务
响应延迟:
- 轮询:平均延迟为轮询间隔的一半,最坏情况等于完整轮询周期
- 中断:理
