首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >内核调度程序是如何知道时间流逝的?

内核调度程序是如何知道时间流逝的?
EN

Unix & Linux用户
提问于 2018-07-22 21:40:21
回答 1查看 1.1K关注 0票数 4

在我之前的问题内核调度程序如何知道如何抢占进程?中,我得到了一个关于先发制人是如何发生的答案。

现在我想知道,内核调度程序是如何知道时隙已经过去的?我阅读了硬件定时器解决方案,这对我来说是有意义的,但随后我读到了大多数当前的操作系统(如Windows、Linux等)。不要使用硬件计时器,而是使用软件计时器。

如何使用软件定时器来抢先一个过程,一旦它占用了它的时间(例如,它没有先发制人)。似乎需要一些硬件计时器吗?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2018-07-23 09:12:56

似乎需要一些硬件计时器吗?

是的,内核依赖于硬件来定期生成中断。在个人电脑上,这是历史上的8253/8254可编程间隔定时器,或者它的模仿,然后是本地APIC定时器,然后是HPET

可以构建当前的Linux内核,以便在可能的情况下运行“无痒”:内核将只在必要时将计时器编程为只触发,如果给定的CPU正在运行单个进程,则很可能“永远不会”。在大多数情况下,动态时钟是被使用的,因此内核根据其需求以不同的时间间隔设置定时器--较少的中断意味着较少的唤醒,这意味着空闲CPU可以在低功耗模式下保持较长的时间,从而节省能源。

票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/457831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档