Linux进程调度

linux调度类:
一共有5个调度类, 每个进程都对应一种调度策略, 每种策略又会对应一种调度类(每个调度类可以对应多种调度策略)
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;

rt_sched_class: 实时调度器(调度策略: SCHED_FIFO, SCHED_RR)
fair_sched_class: 完全公平调度器(调度策略: SCHED_NORMAL, SCHED_BATCH, SCHED_IDLE)

调度类优先级顺序: stop_sched_class>dl_sched_class>rt_sched_class>fair_sched_class>idle_sched_class

调度策略:
struct task中 unsigned int policy 保存进程的调度策略
SCHED_NORMAL: 用于普通进程, 通过CFS调度器实现
SCHED_BATCH: 相当于SCHED_NORMAL分化版本, 采用分时策略, 根据动态优先级, 分配CPU运行需要的资源
SCHED_IDLE: 优先级最低, 在系统空闲时才执行这类进程
SCHED_FIFO: 先进先出调度算法(实时调度策略), 相同优先级任务先到先服务, 高优先级的任务可以抢占低优先级的任务.
SCHED_RR: 轮流调度算法(实时调度策略)
SCHED_DEADLINE: 新支持的实时进程调度策略, 针对突发性计算
SCHED_BATCH用于非交互处理器消耗型进程, SCHED_IDLE是在系统负载很低时使用CFS
/*

  • Scheduling policies
    */

define SCHED_NORMAL 0

define SCHED_FIFO 1

define SCHED_RR 2

define SCHED_BATCH 3

/* SCHED_ISO: reserved but not implemented yet */

define SCHED_IDLE 5

define SCHED_DEADLINE 6

CFS调度
CFS调度器(1)—— 基本原理
https://www.cnblogs.com/hellokitty2/p/13171709.html
CFS调度器(2)——源码解析
http://t.zoukankan.com/hellokitty2-p-13195256.html
linux内核源码分析之CFS调度
https://blog.csdn.net/WANGYONGZIXUE/article/details/123456109
带你玩转linux内核源码分析之CFS调度
https://www.bilibili.com/read/cv16902712
Linux进程调度-CFS调度器原理分析及实现,懂了
https://zhuanlan.zhihu.com/p/395810060
操作系统调度算法3——CFS,完全公平调度器
https://zhuanlan.zhihu.com/p/372441187

Linux进程调度源码学习之调度策略与调度类工作流程
https://blog.csdn.net/xsjzn/article/details/124721909

你可能感兴趣的:(Linux进程调度)