【发布时间】:2020-05-20 22:50:07
【问题描述】:
来自http://www.embeddedlinux.org.cn/essentiallinuxdevicedrivers/final/ch02lev1sec1.html
它说
在启动过程中,内核计算处理器的次数 可以在一瞬间执行一个内部延迟循环,这是时间 系统计时器的两个连续滴答之间的间隔。
从《Understanding Linux Kernel》一书中说
内核执行 calibrate_delay() 函数,它决定如何 许多“循环”适合一个刻度
我对 jiffie 和 loops_per_jiffie 感到困惑。我们已经可以从 CONFIG_HZ 中知道分辨率。例如,如果 CONFIG_HZ 为 250,则意味着一个 jiffie 增量将花费 1/250 = 4 ms
谁能解释一下这个 calibrate_delay() 它实际计算的是什么?
【问题讨论】:
-
will cost 1/250 = 4 ms- 是的,但是 CPU 在这 4 毫秒内会执行多少条指令? 1000条指令? 100000条指令?您必须知道,要在ndelay之类的函数中实现测量。 -
那么,loops_per_jiffie 是每个 jiffie 的指令数?
-
我认为每个 jiffie 有数百万条指令。
-
所以,假设我想要 1 微秒延迟,我如何使用这个 loops_per_jiffie 值
标签: linux time linux-kernel linux-device-driver timing