【Linux 内核】实时调度类 ① ( 进程分类 | 实时进程、普通进程 | Linux 内核 SCHED_FIFO、SCHED_RR 调度策略 | 实时调度实体 sched_rt_entity )
文章目录
一、进程分类 ( 实时进程 | 普通进程 )
Linux 进程分为 " 实时进程 " 和 " 普通进程 " 两类 ;
" 实时进程 " 优先级 高于 " 普通进程 " , 如果当前 Linux 系统的执行队列中有 " 实时进程 " , 调度器 会 优先选择 " 实时进程 " 进行调度 ;
如果 执行队列 中有多个实时进程 , 调度器 会 选择 优先级最高 的 " 实时进程 " 执行 ;
进程分类 " 实时进程 " 、 " 普通进程 " 、" 限期进程 " , 可以参考
- 【Linux 内核】进程管理 - 进程优先级 ① ( 限期进程 | 实时进程 | 普通进程 | 进程优先级相关字段 )
- 【Linux 内核】调度器 ⑧ ( 进程优先级源码 include\linux\sched\prio.h | 进程分类 | 实时进程 | 普通进程 | 进程优先级数值 | 0 ~ 99 实时进程 )
博客 ;
二、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升级内核方法)
- Linux搜索最新文件的方法(linux查找最新的文件)
- Linux下远程快速复制文件的方法(linux远程复制文件)
- Linux中轻松删除文件夹的方法(linux文件夹删除)
- Linux终端运行程序:轻松进入命令行世界(linux终端运行程序)
- Linux添加路径的方法分享(linux加入路径)
- Linux下如何进入命令行界面(linux怎么进入命令行)
- Linux内核无线子系统:创新构建无线未来(linux内核无线子系统)
- 提高 Linux 内核性能:打补丁的秘诀(linux内核打补丁)
- Linux系统上网快速设置指南(linux系统上网设置)
- 如何利用Linux修改系统时区(修改系统时区linux)
- 原理Linux内核工作队列:实现原理及应用(linux内核工作队列)
- 研究Linux内核网络:一种超越专业界限的体验(精通linux内核网络)
- 给Linux用户组设置新的权限(修改用户组linux)
- 开启Linux之旅:在手机上运行Linux(linux手机)
- 学习Linux内核视频学习:轻松掌握英本网培训课程(英本网linux内核视频)
- Linux中使用Top命令查看系统状态(linux中的top命令)
- 掌握Linux内核:走向成功之路(熟悉linux内核)
- GCC与Linux内核:强强联手推动开源生态(gcc与linux内核)
- 改善Linux内核:驱动模块的重要性(linux内核驱动模块)
- Linux系统的分支及其应用(linux的分支)
- Linux发展历程:从系统内核到分支构建(linux的分支)
- 强行关闭Linux:必要的不得不做(linux强制退出)
- Linux系统使用情况实时查看(linux查看使用情况)
- 操作系统关闭Linux的防火墙(关闭linux的防火墙)
- Linux创建内核线程:构建高性能系统(linux创建内核线程)
- Linux系统下查看虚拟IP地址(linux虚拟ip查看)
- Linux源码位置:探索内核实现的奥秘(linux源码位置)
- 让你轻松部署Linux虚拟机的教程(虚拟机装linux教程)
- Linux操作系统:全新的内核体验(linux操作系统 内核)
- Linux实时查看最新文件内容(linux动态查看文件)