14赞
351
当前位置:  开发笔记 > 运维 > 正文

详解Linux进程调度策略

这篇文章主要介绍了详解Linux进程调度策略,以及代码实现中重要环节的指点,一起来学习下。

本文通过Linux进程调度的5类方式详细分析了策略以及实现过程中的详细讲解。

1、Linux 下进程分为5种类别,分别是停止类、截止类、实时类、公平类、空闲类,

每种类别都有一个运行队列,每次调度时,就是先按照类别优先级排序,再按照每个类别内的最高优先级任务调度运行。

  

文件:core.c (linux-4.6\kernel\sched)

    

解读:先看下面的for循环,可以看到实现思路是,遍历每种类别,选择下一个可运行的任务。由于大部分任务都属于公平队列,所以,绝大部分情况下,都在公平队列中进行选择,所以,内核开发者在上面的代码中加了likely()提高性能。

2、调度程序schedule()的调用次序。

schedule() --- > __schedule () --- > pick_next_task() 

文件:core.c (linux-4.6\kernel\sched) 

   

  。。。。。。(中间有省略)

推荐阅读
  • 本文介绍Thinkphp面试问题及答案,希望对大家有所帮助! ... [详细]
  • 本篇文章给大家介绍一下workerman,以及谈谈workerman中worker类的用法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 ... [详细]
  • 今天swoole栏目带大家介绍SwooleHTTP的内容,有需要的朋友可以看看,了解了解,有问题欢迎留言讨论。 ... [详细]
  • 下面由composer教程栏目给大家介绍composerinstall卡住了的解决办法,希望对需要的朋友有所帮助!执行phpcomposer.pharinstall提示Loadingcomposerrepositories.. ... [详细]
  • 首先需要确认Linux中有没有git,可以在电脑中端中使用git命令来查看,如果没有用命令sudoapt-getinstallgit命令进行安装。安装完成后对git进行配置,需要确保连接上是你的开源中国的账号,具体过程本栏目将详细介绍 ... [详细]
  • vscodeoutput乱码的解决办法:首先打开vscode软件;然后依次点击“File-References-Settings-Commonly-Used”;接着加入“code-runner.runInTerminal:true”即可。 ... [详细]
  • vscodedart输出乱码的解决办法:首先打开vscode软件;然后找到并打开“settings.json”配置文件;接着在该文件中添加代码为“"code-runner.runInTerminal":true,”;最后确定保存即可。 ... [详细]
  • linux升级内核的原因:docker应用容器引擎之类的新技术的部分功能在低版本的linux内核中是不支持的,如namespace、cgroup等,所以升级内核是很有必要的。 ... [详细]
  • ubuntu卸载软件有三种方法:1、使用Synaptic软件包管理器进行卸载;2、使用软件中心进行卸载;3、使用终端进行卸载。 ... [详细]
  • Linux企业运维人员最常用150个命令汇总,精心汇总,值得收藏!线上查询及帮助命令(2个):​man,查看命令帮助,命令的词典,更复杂的还有info,但不常用;help,查看Linux内置命令的帮助,比如cd命令。 ... [详细]
devbox
两斤
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved PHP1.CN 第一PHP社区 版权所有 京ICP备19059560号-4