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 内核调度策略源码



" 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 概念 | 四种进程优先级 | 五种调度类 )

深入理解Linux内核之主调度器(上)

万字详解Linux内核调度器极其妙用

万字详解Linux内核调度器极其妙用

Linux(内核剖析):08---进程调度之Linux调度算法(调度器类公平调度(CFS))