Linux 内核实时调度类 ① ( 进程分类 | 实时进程普通进程 | Linux 内核 SCHED_FIFOSCHED_RR 调度策略 | 实时调度实体 sched_rt_entity )

Posted 韩曙亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 内核实时调度类 ① ( 进程分类 | 实时进程普通进程 | Linux 内核 SCHED_FIFOSCHED_RR 调度策略 | 实时调度实体 sched_rt_entity )相关的知识,希望对你有一定的参考价值。

文章目录





一、进程分类 ( 实时进程 | 普通进程 )



Linux 进程分为 " 实时进程 "" 普通进程 " 两类 ;

" 实时进程 " 优先级 高于 " 普通进程 " , 如果当前 Linux 系统的执行队列中有 " 实时进程 " , 调度器优先选择 " 实时进程 " 进行调度 ;

如果 执行队列 中有多个实时进程 , 调度器 会 选择 优先级最高 的 " 实时进程 " 执行 ;


进程分类 " 实时进程 " " 普通进程 "" 限期进程 " , 可以参考

博客 ;





二、Linux 内核调度策略



【Linux 内核】调度器 ⑨ ( Linux 内核调度策略 | SCHED_NORMAL 策略 | SCHED_FIFO 策略 | SCHED_NORMAL 策略 | SCHED_BATCH策略 ) 博客中 , 介绍了 Linux 内核相关的调度策略 ;


1、SCHED_FIFO 调度策略


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

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

SCHED_FIFO 调度策略中 , 被 调度器 调度运行后的 进程 , 其运行时长不受限制 , 可以运行任意长的时间 ;


2、SCHED_RR 调度策略


SCHED_RR " 实时进程调度策略 " , 使用的是 时间片轮转 机制 , 对应的 时间值 运行时会 减少 ;

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

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





三、实时调度实体 sched_rt_entity



实时调度实体 在 Linux 内核源码中通过 sched_rt_entity 结构体 表现 ,

sched_rt_entity 结构体 , 定义在 Linux 内核源码的 linux-5.6.18\\include\\linux\\sched.h 头文件中 ,

struct sched_rt_entity 
	struct list_head		run_list;
	unsigned long			timeout;
	unsigned long			watchdog_stamp;
	unsigned int			time_slice;
	unsigned short			on_rq;
	unsigned short			on_list;

	struct sched_rt_entity		*back;
#ifdef CONFIG_RT_GROUP_SCHED
	struct sched_rt_entity		*parent;
	/* rq on which this entity is (to be) queued: */
	struct rt_rq			*rt_rq;
	/* rq "owned" by this entity/group: */
	struct rt_rq			*my_q;
#endif
 __randomize_layout;

以上是关于Linux 内核实时调度类 ① ( 进程分类 | 实时进程普通进程 | Linux 内核 SCHED_FIFOSCHED_RR 调度策略 | 实时调度实体 sched_rt_entity )的主要内容,如果未能解决你的问题,请参考以下文章

Linux 内核实时调度类 ② ( 实时调度实体 sched_rt_entity 源码分析 | run_listtimeoutwatchdog_stamptime_slice 字段 )

Linux 内核CFS 调度器 ① ( CFS 完全公平调度器概念 | CFS 调度器虚拟时钟 Virtual Runtime 概念 | 四种进程优先级 | 五种调度类 )

Linux 内核进程优先级与调度策略 ① ( SCHED_FIFO 调度策略 | SCHED_RR 调度策略 | 进程优先级 )

Linux 内核进程优先级与调度策略 ① ( SCHED_FIFO 调度策略 | SCHED_RR 调度策略 | 进程优先级 )

Linux 内核进程管理 - 进程优先级 ① ( 限期进程 | 实时进程 | 普通进程 | 进程优先级相关字段 )

Linux 内核实时调度类 ⑦ ( 实时调度类核心函数源码分析 | dequeue_task_rt 函数 | 从执行队列中移除进程 )