文章目录
- 一、Linux 内核调度策略源码
- 二、SCHED_NORMAL 策略
- 三、SCHED_FIFO 策略
- 四、SCHED_NORMAL 策略
- 五、SCHED_BATCH 策略
- 六、SCHED_IDLE 策略
- 七、SCHED_DEADLINE 策略
一、Linux 内核调度策略源码
" Linux 应用进程 " 可以根据 " Linux 内核 " 提供的 " 调度策略 " 选择 " 调度器 " ;
Linux 内核 " 调度策略 " 源码在 linux-5.6.18\include\uapi\linux\sched.h
头文件中 ,
/*
* Scheduling policies
*/
/* SCHED_ISO: reserved but not implemented yet */
/* Can be ORed in to make sure the process is reverted back to SCHED_NORMAL on fork */
注意 : 停机调度器 和 限期调度器 只能在内核中使用 , 应用进程无法使用这两个调度器 ;
二、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 调度器 进行 进程调度 ;