1

我想实现非忙等待机制,以在 linux 内核模块中创建以纳秒为单位的延迟。

现在我在看函数

ndelay(ns);

但是https://www.kernel.org/doc/Documentation/timers/timers-howto.txt

这里提到了ndelay函数是一个忙等待机制。

但我想要非忙等待延迟。所以,我在考虑这样nop的linux内核模块:

asm volatile ("nop");

我研究过 nop 需要一个周期来执行。因此,我将实施嵌套 nop 以获得所需的延迟。我的问题是——

通过使用 nop 我会以非忙等待的方式实现纳秒延迟吗?任何人都可以确认这一点吗?参考一些期刊和资源也会有所帮助。

4

1 回答 1

1

顾名思义,“NOP”是一种不会修改机器状态的操作,但这并不意味着处理器在执行 NOP 时处于空闲或“非忙碌”状态。与任何其他指令一样,NOP 在执行时仍会占用处理器的一些资源。

显然,现代超级流水线处理器很复杂,通常同时执行许多操作,因此 NOP 可能会比分支、字符串比较或浮点操作等更复杂的操作使用更少的资源,但假设 NOP 并不安全像你说的那样不忙。

于 2016-04-01T18:00:07.833 回答