当前位置: 首页 > news >正文

Linux--内核进程O(1)调度队列

⼀个CPU拥有⼀个runqueue

如果有多个CPU就要考虑进程个数的负载均衡问题

优先级

  • 普通优先级:100〜139(我们都是普通的优先级,想想nice值的取值范围,可与之对应!)
  • 实时优先级:0〜99(不关心)

活动队列

时间⽚还没有结束的所有进程都按照优先级放在该队列

nr_active: 总共有多少个运⾏状态的进程

queue[140]:⼀个元素就是⼀个进程队列,相同优先级的进程按照FIFO规则进⾏排队调度,所以, 数组下标就是优先级!

从该结构中,选择⼀个最合适的进程,过程是怎么的呢?

  • 1. 从0下表开始遍历queue[140]
  • 2. 找到第⼀个⾮空队列,该队列必定为优先级最⾼的队列
  • 3. 拿到选中队列的第⼀个进程,开始运⾏,调度完成!
  • 4. 遍历queue[140]时间复杂度是常数!但还是太低效了!

bitmap[5]:⼀共140个优先级,⼀共140个进程队列,为了提⾼查找⾮空队列的效率,就可以⽤ 5*32个⽐特位表⽰队列是否为空,这样,便可以⼤⼤提⾼查找效率!

过期队列

  • 过期队列和活动队列结构⼀模⼀样
  • 过期队列上放置的进程,都是时间⽚耗尽的进程
  • 当活动队列上的进程都被处理完毕之后,对过期队列的进程进⾏时间⽚重新计算

active指针和expired指针

  • active指针永远指向活动队列
  • expired指针永远指向过期队列
  • 可是活动队列上的进程会越来越少,过期队列上的进程会越来越多,因为进程时间⽚到期时⼀直 都存在的。
  • 没关系,在合适的时候,只要能够交换active指针和expired指针的内容,就相当于有具有了⼀批 新的活动进程!

在系统当中查找⼀个最合适调度的进程的时间复杂度是⼀个常数,不随着进程增多⽽导致时间成 本增加,我们称之为进程调度O(1)算法!

少年没有乌托邦,心向远方自明朗!

如果这个博客对你有帮助,给博主一个免费的点赞就是最大的帮助
欢迎各位点赞,收藏关注
如果有疑问或有不同见解,欢迎在评论区留言
后续会继续更新大连理工大学相关课程和有关Linux的内容和示例
点赞加关注,学习不迷路,好,本次的学习就到这里啦!!!

ok,我们下次再见!

相关文章:

  • 20分钟上手DeepSeek开发:SpringBoot + Vue2快速构建AI对话系统
  • 画册相册图库摄影画廊H5开源版开发
  • 论文阅读:SCI 1区 RADAR: Robust AI-Text Detection via Adversarial Learning
  • TypeScript + Vue:类风格组件如何引领前端新潮流?
  • 植物知识分享论坛毕设
  • Python基础语法全解析:从入门到实践
  • Qt中打开windows的cmd窗口并显示
  • Git 使用SSH登陆
  • 工厂方法模式和抽象工厂模式详解
  • 【从零开始学习计算机科学与技术】计算机网络(六)传输层
  • 调整iptables规则,解决无法ssh连接服务器的问题
  • Linux中安装Git
  • Javascript 日期相关计算
  • halcon几何测量(二)计算距离和角度的函数
  • Linux主机持久化技术
  • 日常学习开发记录-input组件
  • 数据库设计实验(3)—— 分离与附加、还原与备份
  • 【Java面试场景题搜集总结】
  • Redis和MongoDB的区别
  • 【数学建模】熵权法
  • 新华时评:博物馆正以可亲可近替代“高冷范儿”
  • 小雨伞保险经纪母公司手回集团通过港交所聆讯
  • 梅花奖在上海|话剧《主角》:艺术与人生的交错
  • 李公明︱一周书记:当前科学观中的盲点、危机与……人类命运
  • 广州一饮品店取名“警茶”?市监局:取名没问题,但图像会产生误解
  • 网信部门曝光网络谣言典型案例,“AI预测彩票号码百分百中奖”等在列