【发布时间】:2016-08-12 02:22:33
【问题描述】:
我正在学习操作系统课程中 I/O 轮询和中断之间的区别,我的老师提到的一件事是 I/O 设备的速度可以影响哪种方法更好.他没有跟进,但我一直在为此绞尽脑汁,我不知道为什么。我觉得使用中断几乎总是更好,我只是不明白 I/O 设备的速度与它有什么关系。
【问题讨论】:
标签: operating-system
我正在学习操作系统课程中 I/O 轮询和中断之间的区别,我的老师提到的一件事是 I/O 设备的速度可以影响哪种方法更好.他没有跟进,但我一直在为此绞尽脑汁,我不知道为什么。我觉得使用中断几乎总是更好,我只是不明白 I/O 设备的速度与它有什么关系。
【问题讨论】:
标签: operating-system
当您不关心发生的每一个变化时,轮询的唯一优势就出现了。
假设您有一个实时系统来测量用于成型的熔融塑料桶的温度。假设您的设备可以测量到 1/1000 度的分辨率,并且可以每 1/10,000 秒测量一次新的温度。
但是,你只需要每秒的温度,你只需要知道1/10度以内的温度。
在那种环境中,轮询设备可能更可取。每秒发出一个轮询请求。如果您使用中断,当温度移动 +/- 1/1000 度时,您每秒可能会获得 10,000 次中断。
轮询过去在某些 I/O 设备中很常见,例如操纵杆和指针设备。
也就是说,几乎不需要轮询,而且它几乎已经消失了。
【讨论】:
通常您会希望使用中断,因为轮询会浪费大量 CPU 周期。但是,如果事件很频繁,同步(以及如果其他因素适用,例如短轮询时间......)轮询可能是一个很好的选择,特别是因为中断比轮询周期产生更多的开销。
您可能还想查看此线程以了解更多详细信息: Polling or Interrupt based method
【讨论】: