Linux本地定时器中断是什么?

15

标题已经说清楚了。欢迎提供好的文档链接。

4个回答

12
本地定时器中断是在APIC上实现的一个计时器,它仅中断特定的CPU而不是引发可以由任何CPU处理的中断。参考《理解Linux内核》(Bovet & Cesati)的讨论,该书摘录如下:
本地APIC存在于最近的80x86微处理器中(请参见第4章“中断和异常”中的部分),它提供了另一种计时设备:CPU本地定时器。
CPU本地定时器类似于可编程间隔定时器,可以发出一次性或周期性中断。但是,有几点不同:
- APIC的计时器计数器长度为32位,而PIT的计时器计数器长度为16位; 因此,本地计时器可以被编程为以非常低的频率发出中断(计数器存储必须在发出中断之前经过的时钟周期数)。 - 本地APIC定时器仅向其处理器发送中断,而PIT引发全局中断,可以由系统中的任何CPU处理。 - APIC的计时器基于总线时钟信号(或旧机器中的APIC总线信号)。 它可以被编程为以每1、2、4、8、16、32、64或128个总线时钟信号减少计时器计数器。 相反,使用自己的时钟信号的PIT可以以更灵活的方式编程。

1
谢谢你的回答。我有这本书,但内核版本是2.2 :-( 我还有一个问题,内核如何使用这些中断?它们的目的是什么?与调度相关吗?还是其他方面? - Manuel Selva
1
是的,调度与定时器有关。 - Basile Starynkevitch
1
@Manuel:我对内核使用这些时间的细节并不是很清楚。书的第三版涵盖了2.6内核,并似乎对该主题有很好的覆盖,同时提供了特定的函数名称,您可以用它来锁定相关的源代码。我认为值得借阅第三版,看看它是否具有您正在寻找的详细信息水平。 - Michael Burr
1
实际上,您可以通过浏览O'Reilly在销售该书的页面上提供的内容来获取所需的内容 - 单击书籍图像上方的“浏览内容”选项:http://shop.oreilly.com/product/9780596005658.do,并搜索“时间管理架构”。 - Michael Burr
1
谢谢你的回答,我在线上读了这一章节,但是并没有找到太多答案。关于调度,/proc/interrupts 中也有一行叫做“重新调度中断”,带有很多中断,这些中断是用于调度的吗? - Manuel Selva
显示剩余2条评论

10

比Michael Burr更简单易懂的答案:

有些事情需要每个jiffy都做,无论在哪个CPU上执行都一样。
其他事情需要在每个CPU上每个jiffy都做。例如,检查是否需要切换到另一个进程。

本地定时器中断存在于第二种情况下,每次执行时我们检查它们并执行必要的操作。


3
谢谢您的问题。关于调度,/proc/interrupts 中还有一行叫做“Rescheduling interrupts”,它包含很多中断。这些中断是否用于调度呢? - Manuel Selva

1
在SMP系统中,apic计时器用于调度/重新调度线程。
在UP系统中,pit计时器用于调度/重新调度线程。
通常,在SMP系统中不再使用PIT。

0

我觉得本地计时器用于处理与IPI相关的功能。我可能猜错了,需要查看代码以确定它们的配置和处理程序包含什么。 但我感觉系统计时器和jiffies与GP计时器之一相关联,因此在SMP ARM中,来自该计时器的中断通过GIC亲和力注册与单个核心关联。 稍后会详细介绍本地计时器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接