【问题标题】:Polling vs. Interrupts with slow/fast I/O devices轮询与慢速/快速 I/O 设备的中断
【发布时间】:2016-08-12 02:22:33
【问题描述】:

我正在学习操作系统课程中 I/O 轮询和中断之间的区别,我的老师提到的一件事是 I/O 设备的速度可以影响哪种方法更好.他没有跟进,但我一直在为此绞尽脑汁,我不知道为什么。我觉得使用中断几乎总是更好,我只是不明白 I/O 设备的速度与它有什么关系。

【问题讨论】:

    标签: operating-system


    【解决方案1】:

    当您不关心发生的每一个变化时,轮询的唯一优势就出现了。

    假设您有一个实时系统来测量用于成型的熔融塑料桶的温度。假设您的设备可以测量到 1/1000 度的分辨率,并且可以每 1/10,000 秒测量一次新的温度。

    但是,你只需要每秒的温度,你只需要知道1/10度以内的温度。

    在那种环境中,轮询设备可能更可取。每秒发出一个轮询请求。如果您使用中断,当温度移动 +/- 1/1000 度时,您每秒可能会获得 10,000 次中断。

    轮询过去在某些 I/O 设备中很常见,例如操纵杆和指针设备。

    也就是说,几乎不需要轮询,而且它几乎已经消失了。

    【讨论】:

    • 是的。在定时器中断中轮询键盘/小键盘并不少见,因为检查自上次以来是否有任何键状态发生变化非常快,并且通常需要多次读取以进行去抖动。除此之外,像你上面提到的某些场景,没有人会因为 CPU、内存带宽和能源浪费而投票。
    【解决方案2】:

    通常您会希望使用中断,因为轮询会浪费大量 CPU 周期。但是,如果事件很频繁,同步(以及如果其他因素适用,例如短轮询时间......)轮询可能是一个很好的选择,特别是因为中断比轮询周期产生更多的开销。

    您可能还想查看此线程以了解更多详细信息: Polling or Interrupt based method

    【讨论】:

    • 不仅仅是 CPU 周期。它是内存带宽(影响其他内核)和能源浪费(停止的 CPU 使用的功率要少得多)。
    猜你喜欢
    • 2021-08-17
    • 1970-01-01
    • 1970-01-01
    • 2012-06-11
    • 2011-03-28
    • 2017-01-05
    • 2021-11-17
    • 2021-08-24
    • 2017-09-20
    相关资源
    最近更新 更多