文章目录






一、Linux 内核调度策略源码



" Linux 应用进程 " 可以根据 " Linux 内核 " 提供的 " 调度策略 " 选择 " 调度器 " ;



Linux 内核 " 调度策略 " 源码在 ​​linux-5.6.18\include\uapi\linux\sched.h​​ 头文件中 ,

/*
* 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

/* Can be ORed in to make sure the process is reverted back to SCHED_NORMAL on fork */
#define SCHED_RESET_ON_FORK 0x40000000

【Linux 内核】调度器 ⑨ ( Linux 内核调度策略 | SCHED_NORMAL 策略 | SCHED_FIFO 策略 | SCHED_NORMAL 策略 | SCHED_BATCH策略 )_进程调度

注意 : 停机调度器 和 限期调度器 只能在内核中使用 , 应用进程无法使用这两个调度器 ;






二、SCHED_NORMAL 策略



​SCHED_NORMAL​​ 是 " 普通进程调度策略 " , " 进程 " 选择 " CFS 调度器 " 进行调度运行 ;






三、SCHED_FIFO 策略



​SCHED_FIFO​​ 是 " 实时进程调度策略 " , 这是一种 先进先出 ( First In First Out ) 调度策略 ;

该策略 不涉及 CPU 时间片机制 ( 分时复用机制 ) , 在没有高优先级进程的前提下 , 只能 等待其它进程主动释放 CPU 资源 ;






四、SCHED_NORMAL 策略



​SCHED_RR​​ 是 " 实时进程调度策略 " , 使用的是 时间片轮转 机制 ;

进程 使用完 CPU 时间片 后 , 会加入到 与 进程优先级 相应的 执行队列 的 末尾 ;

同时 , 释放 CPU 资源 , CPU 时间片会被轮转给 相同进程优先级 的 其它进程 ;






五、SCHED_BATCH 策略



​SCHED_BATCH​​ 是 " 普通进程调度策略 " , 该策略 可以进行 批量处理 , 令 " 进程 " 选择 CFS 调度器 进行 进程调度 ;






六、SCHED_IDLE 策略



​SCHED_IDLE​​ 是 " 普通进程调度策略 " , 令 " 进程 " 以 最低优先级 选择 CFS 调度器 进行 进程调度 ; 完全公平调度器 ;






七、SCHED_DEADLINE 策略



​SCHED_DEADLINE​​ 是 " 限期进程调度策略 " , 令 " 进程 " 选择 Deadline 调度器 进行 进程调度 ;