手动生成定时器中断

时间:2018-03-07 17:24:19

标签: linux timer interrupt

在我的机器上;

的/ proc /中断

Rx.Observable.interval(2000).debounceTime(1000).subscribe(x => console.log('here'))

我理解中断,我想了解定时器中断。 This page表示,每次发生计时器中断都会触发以下主要活动,例如更新自系统启动以来经过的时间。

在我的机器上它只显示了54但机器已经启用了几天。

我在这里缺少什么?

第二个问题是,如何手动生成中断,使计数从54变为55?

1 个答案:

答案 0 :(得分:1)

您不会生成计时器interrupts。硬件确实(每秒可能有数百个中断)。内核配置硬件来做到这一点。

另请阅读time(7),这是处理来自用户级Linux应用程序的时间相关内容的方法(这可能对您更重要)。

如果您关心处理中断,您可以编写自己的操作系统kernelscheduler(然后linux标记将偏离主题)。见Operating systems: Three Easy Pieces(可免费下载)。有关OS开发的实用提示,请参阅OSDEV wiki。

操作系统可以隐藏硬件详细信息,例如中断和管理硬件,并为您提供上面的抽象。 /proc/interrupts只是查询操作系统内核状态的一种方法。它的格式因内核版本和硬件而异(在我的系统上输出与你的完全不同),它主要用于系统管理员(例如,当一些奇怪的硬件发送大量中断时,提示硬件故障)。请参阅proc(5)

  

如何手动生成中断

在Linux系统中,你不能。

顺便说一句,Linux也有signal(7) - s(另见signal-safety(7) ...)但这些信号不是中断(即使某些中断可能间接触发信号) 。并且signals确实可以"中断" (以非常具象的方式,与硬件中断不同)你的process

(有可能在您的特定硬件和内核上,大多数"计时器"中断进入ioc0行)