Linux 内核调度器 ⑨ ( Linux 内核调度策略 | SCHED_NORMAL 策略 | SCHED_FIFO 策略 | SCHED_NORMAL 策略 | SCHED_BATCH策略 )
Posted 韩曙亮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 内核调度器 ⑨ ( Linux 内核调度策略 | SCHED_NORMAL 策略 | SCHED_FIFO 策略 | SCHED_NORMAL 策略 | SCHED_BATCH策略 )相关的知识,希望对你有一定的参考价值。
文章目录
- 一、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
*/
#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
注意 : 停机调度器 和 限期调度器 只能在内核中使用 , 应用进程无法使用这两个调度器 ;
二、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 调度器 进行 进程调度 ;
以上是关于Linux 内核调度器 ⑨ ( Linux 内核调度策略 | SCHED_NORMAL 策略 | SCHED_FIFO 策略 | SCHED_NORMAL 策略 | SCHED_BATCH策略 )的主要内容,如果未能解决你的问题,请参考以下文章
Linux 内核CFS 调度器 ⑤ ( CFS 调度器类 fair_sched_class 源码 | next 赋值 | enqueue_task 赋值 | dequeue_task 赋值 )
Linux 内核CFS 调度器 ① ( CFS 完全公平调度器概念 | CFS 调度器虚拟时钟 Virtual Runtime 概念 | 四种进程优先级 | 五种调度类 )