Linux kernel 什么是内核计时器系统,它与调度器的关系如何?
我很难理解这一点Linux kernel 什么是内核计时器系统,它与调度器的关系如何?,linux-kernel,x86,scheduler,interrupt,Linux Kernel,X86,Scheduler,Interrupt,我很难理解这一点 调度程序如何知道某个时间段已经过去 它是否为此使用某种系统调用或中断 用常数代替秒有什么意义 系统计时器与调度程序有什么关系 调度程序如何知道某个时间段已经过去 调度器参考系统时钟 它是否为此使用某种系统调用或中断 由于系统时钟经常更新,调度程序只需读取其当前值即可。调度程序已处于内核模式,因此读取时钟时不涉及系统调用接口 是的,存在触发ISR的定时器中断,ISR是一种中断服务例程,它读取硬件寄存器并提升系统时钟的当前值 用恒频代替秒有什么意义 曾几何时,调用ISR的成本很
- 调度程序如何知道某个时间段已经过去
- 它是否为此使用某种系统调用或中断李>
- 用常数代替秒有什么意义
- 系统计时器与调度程序有什么关系
此外,当进程自愿放弃其时间片时,调度程序会运行,例如,在发出系统调用或出现页面错误时。我建议您可以阅读Robert Love的Linux内核开发第11章(计时器和时间管理)@Varun:这是最新的吗?但这可能是个好建议。这个问题似乎太宽泛了。你也许可以对每一个项目给出简短的答案,但前提是你假设了一系列的先验知识,并且没有真正回答时间和日程安排如何工作的总体问题。您是否了解一般的先发制人多任务?如果没有,请阅读您最喜欢的操作系统教科书。相关:(特别是)在现代x86Linux上,“系统时钟”是
rdtsc
+一些指令来扩展它。所以是的,它变化非常快;当连续读取两次时,不可能从中获得相同的值。(在这种情况下,现代意味着在过去8年左右的时间里,如Nehalem,其TSC以固定速度运行,不考虑涡轮/省电(constant\u TSC
),并且在核心时钟停止时不会停止(nonstop\u TSC
).Core 2可能丢失了nonstop\u tsc
,这使得它不是一个有用的挂钟时间,因此Linux回到了HPET)