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





一、调度器类型



在 Linux 内核中 , sched_class 调度器 分为以下 5 5 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 1792 1792 ~ 1796 1796 1796 行 ;

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 ) , 引入 一个 完全公平调度算法 , 根据 " 虚拟运行时间 " 概念 , 调度进程 ;

虚 拟 运 行 时 间 = 实 际 运 行 时 间 ∗ N I C E _ 0 _ L O A D 进 程 权 重 \rm 虚拟运行时间 = \cfrac{实际运行时间 * NICE\_0\_LOAD}{进程权重} =NICE_0_LOAD

其中 N I C E _ 0 _ L O A D \rm NICE\_0\_LOAD NICE_0_LOADnice0 对应的权重 ;





七、空闲调度类 ( idle_sched_class )



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

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

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值