加入收藏 | 设为首页 | 会员中心 | 我要投稿 平顶山站长网 (https://www.0375zz.cn/)- 分布式云、数据处理、媒体处理、图像分析、基础存储!
当前位置: 首页 > 站长资讯 > 评论 > 正文

CPU在做什么?

发布时间:2021-03-21 13:49:23 所属栏目:评论 来源:互联网
导读:持设计的一致性,OS开发人员创建了一个空闲任务,当没有其他工作时,该任务将被安排运行。我们在Linux 启动过程中已经看到,空闲任务是进程0,它是计算机首次打开时运行的第一条指令的直接后代。它在rest_init中 初始化,其中init_idle_bootup_task初始化空

持设计的一致性,OS开发人员创建了一个空闲任务,当没有其他工作时,该任务将被安排运行。我们在Linux 启动过程中已经看到,空闲任务是进程0,它是计算机首次打开时运行的第一条指令的直接后代。它在rest_init中 初始化,其中init_idle_bootup_task初始化空闲调度类。

简而言之,Linux支持不同的调度类,例如实时进程,常规用户进程等。当选择进程成为活动任务时,将按优先级顺序查询这些类。这样,“核反应堆控制代码”总是在Web浏览器之前运行。但是,这些类通常会返回NULL,这意味着它们没有合适的运行过程 - 它们都在睡觉。但是最后运行的空闲调度类永远不会失败:它总是返回空闲任务。

这一切都很好,但让我们来看看这个空闲任务究竟在做什么。cpu_idle_loop,如下:

cpu_idle_loop
经省略了很多细节,我们稍后会仔细研究任务切换,但是如果你阅读了代码,你会得到它的重要信息:只要不需要重新安排,即改变活动任务,CPU就会一直空闲。以经过的时间来衡量,这个循环及其在其他操作系统中的表兄弟可能是计算历史中执行最多的代码片段。对于英特尔处理器,传统上保持空闲意味着运停止处理器中的代码执行并将其置于暂停状态。奇怪的是,全世界数以百万计的类似英特尔的CPU正在花费大部分时间停止工作,即使在他们通电的情况下也是如此。它也不是非常有效的节约能源,这导致芯片制造商为处理器开发更深层次的睡眠状态,从而在更长的唤醒延迟中消耗更少的功耗。内核的cpuidle子系统负责利用这些节能模式。

现在,一旦我们告诉CPU停止或睡眠,我们需要以某种方式让它恢复活力。如果您已阅读过我以前的文章,您可能会怀疑涉及到中断,实际上它们也是如此。中断会刺激CPU退出暂停状态并恢复运行。所以把这些放在一起,这是你的电脑在阅读这篇文章时所做的大

(编辑:平顶山站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读