前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Linux 内核】调度器 ⑦ ( 调度器类型 | 停机调度类 stop_sched_class | 限期调度类 dl_sched_class | 实时调度类 | 公平调度类 | 空闲调度类 )

【Linux 内核】调度器 ⑦ ( 调度器类型 | 停机调度类 stop_sched_class | 限期调度类 dl_sched_class | 实时调度类 | 公平调度类 | 空闲调度类 )

作者头像
韩曙亮
发布2023-03-30 13:56:57
1.4K0
发布2023-03-30 13:56:57
举报
文章被收录于专栏:韩曙亮的移动开发专栏

文章目录

一、调度器类型


在 Linux 内核中 , sched_class 调度器 分为以下

5

种类型 :

  • stop_sched_class : 停机调度类 ;
  • dl_sched_class : 限期调度类 ;
  • rt_sched_class : 实时调度类 ;
  • fair_sched_class : 公平调度类 ;
  • idle_sched_class : 空闲调度类 ;

上述每种 " 调度类 " 都有自己的 调度策略 ;

调度类 优先级 由高到低排列为 :

停机调度类 > 限期调度类 > 实时调度类 > 公平调度类 > 空闲调度类

二、调度器类型源码定义


调度器类型 , 定义在 Linux 内核源码 linux-5.6.18\kernel\sched\sched.h 头文件中的

1792

~

1796

行 ;

代码语言:javascript
复制
extern const struct sched_class stop_sched_class;
extern const struct sched_class dl_sched_class;
extern const struct sched_class rt_sched_class;
extern const struct sched_class fair_sched_class;
extern const struct sched_class idle_sched_class;
在这里插入图片描述
在这里插入图片描述

三、停机调度类 ( stop_sched_class )


停机调度类 ( stop_sched_class ) 优先级最高 , 用于 停止进程 , 该 调度类 可以抢占 系统进程 ;

" 停机进程 " 是 优先级最高的进程 ;

" 停机进程 " 可以 任意抢占 其它进程 , 但是 其它进程 不能抢占 停机进程 ;

四、限期调度类 ( dl_sched_class )


限期调度类 ( dl_sched_class ) 按照 优先算法 调度进程 , 将 进程 按照 绝对截止期限 从小到大 在 红黑树 中进行排序 ;

调度时 , 每次都选择 截止期限 最小的 " 进程 " 执行 ;

五、实时调度类 ( rt_sched_class )


实时调度类 ( rt_sched_class ) 为每个 " 调度优先级 " 维护一个 队列 ;

六、公平调度类 ( fair_sched_class )


公平调度类 ( fair_sched_class ) , 引入 一个 完全公平 的 调度算法 , 根据 " 虚拟运行时间 " 概念 , 调度进程 ;

\rm 虚拟运行时间 = \cfrac{实际运行时间 * NICE\_0\_LOAD}{进程权重}

其中

\rm NICE\_0\_LOAD

是 nice0 对应的权重 ;

七、空闲调度类 ( idle_sched_class )


空闲调度类 ( idle_sched_class ) , 每个 CPU 上都有一个 空闲线程 , 该空闲线程称为 0 号线程 ;

空闲调度类 优先级最低 , 只有在 其它类型的调度类进程都执行完毕后 , 才会执行 空闲调度类 对应的进程 ;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-03-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、调度器类型
  • 二、调度器类型源码定义
  • 三、停机调度类 ( stop_sched_class )
  • 四、限期调度类 ( dl_sched_class )
  • 五、实时调度类 ( rt_sched_class )
  • 六、公平调度类 ( fair_sched_class )
  • 七、空闲调度类 ( idle_sched_class )
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档