文章目录

  • 一、实时运行队列 rt_rq 源码
  • 二、实时运行队列 rt_rq 结构体字段分析
    • 1、active 字段
    • 2、rt_nr_running 字段
    • 3、curr 字段
    • 4、next 字段

一、实时运行队列 rt_rq 源码


在 【Linux 内核】实时调度类 ② ( 实时调度实体 sched_rt_entity 源码分析 | run_list、timeout、watchdog_stamp、time_slice 字段 ) 博客中 , 简单介绍了 在 linux-5.6.18\include\linux\sched.h 头文件中定义的 实时调度实体 sched_rt_entity 源码 ,

struct sched_rt_entity {struct list_head     run_list;       // 用于将 " 实时调度实体 " 加入到 优先级队列 中的unsigned long           timeout;        // 用于 设置 调度 超时时间unsigned long           watchdog_stamp; // 用于 记录 jiffies 的值unsigned int         time_slice;     // 时间片unsigned short            on_rq;          unsigned short          on_list;struct sched_rt_entity      *back;      // 用于 由上到下 连接 " 实时调度实体 "
#ifdef CONFIG_RT_GROUP_SCHEDstruct 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;

其中的 rt_rqmy_q 字段 , 分别表示一个 " 实时运行队列 " , 是 rt_rq 结构体类型的 ;

rt_rq 结构体 , 定义在 Linux 内核源码 linux-5.6.18\kernel\sched\sched.h 头文件中 ;

/* Real-Time classes' related field in a runqueue: */
struct rt_rq {struct rt_prio_array  active;unsigned int     rt_nr_running;unsigned int      rr_nr_running;
#if defined CONFIG_SMP || defined CONFIG_RT_GROUP_SCHEDstruct {int      curr; /* highest queued rt task prio */
#ifdef CONFIG_SMPint        next; /* next highest */
#endif} highest_prio;
#endif
#ifdef CONFIG_SMPunsigned long      rt_nr_migratory;unsigned long       rt_nr_total;int         overloaded;struct plist_head    pushable_tasks;#endif /* CONFIG_SMP */int           rt_queued;int           rt_throttled;u64            rt_time;u64         rt_runtime;/* Nests inside the rq lock: */raw_spinlock_t        rt_runtime_lock;#ifdef CONFIG_RT_GROUP_SCHEDunsigned long       rt_nr_boosted;struct rq     *rq;struct task_group   *tg;
#endif
};

二、实时运行队列 rt_rq 结构体字段分析


1、active 字段

" 实时运行队列 " rt_rq 结构体中的 active 字段 , 表示 " 优先级队列 " ;

struct rt_prio_array active;

2、rt_nr_running 字段

" 实时运行队列 " rt_rq 结构体中的 rt_nr_running 字段 , 表示在 " 实时运行队列 " 中 , 所有 活动的 任务数量 ;

unsigned int     rt_nr_running;

3、curr 字段

" 实时运行队列 " rt_rq 结构体中的 curr 字段 , 表示在 " 实时运行队列 " 中 , 所有 实时任务 中的 最高优先级 ;

int      curr; /* highest queued rt task prio */

4、next 字段

" 实时运行队列 " rt_rq 结构体中的 next 字段 , 表示在 " 实时运行队列 " 中 , 所有 实时任务 中的 第二高优先级 ; 如果前两个最高的优先级相同 , 则 currnext 字段值相等 ;

int      next; /* next highest */

【Linux 内核】实时调度类 ④ ( 实时运行队列 rt_rq 源码分析 | 实时运行队列 rt_rq 结构体字段分析 | active、rt_nr_running、curr、next 字段 )相关推荐

  1. 在linux内核3.14.43添加自己的驱动源码,linux内核如何加入自己的驱动

    linux添加自己的驱动,内核源码版本:3.14.43 1. 添加自己的文件夹 在驱动里面加入自己的文件夹,例如我在driver/char/文件夹里面加入自己的pwm驱动,我需要在char目录下,新建 ...

  2. 【Linux 内核】实时调度类 ⑤ ( 实时调度类 rt_sched_class 源码分析 | 结构体字段及函数指针分析 )

    文章目录 一.rt_sched_class 结构体变量类型 sched_class 二.next 字段值 三.enqueue_task 函数指针值 四.dequeue_task 函数指针值 五.yie ...

  3. 【Linux 内核】实时调度类 ③ ( 实时调度类 rt_sched_class 源码 | 调度类 sched_class 源码 )

    文章目录 一.调度类 ( 停机调度类 | 限期调度类 | 实时调度类 | 公平调度类 | 空闲调度类 ) 二. 实时调度类 rt_sched_class 源码 一.调度类 ( 停机调度类 | 限期调度 ...

  4. 【Linux 内核】调度器 ③ ( sched_class 调度类结构体分析 | next 字段 | enqueue_task 函数 | dequeue_task 函数 )

    文章目录 一.next 字段 ( 指向链表中的下一个调度类 ) 二.enqueue_task 函数 ( 将进程加入执行队列 ) 三.dequeue_task 函数 ( 从执行队列中删除进程 ) Lin ...

  5. 【Linux 内核】实时调度类 ② ( 实时调度实体 sched_rt_entity 源码分析 | run_list、timeout、watchdog_stamp、time_slice 字段 )

    文章目录 一.sched_rt_entity 源码分析 1.run_list 字段 2.timeout 字段 3.watchdog_stamp 字段 4.time_slice 字段 5.back 字段 ...

  6. 【Linux 内核】实时调度类 ① ( 进程分类 | 实时进程、普通进程 | Linux 内核 SCHED_FIFO、SCHED_RR 调度策略 | 实时调度实体 sched_rt_entity )

    文章目录 一.进程分类 ( 实时进程 | 普通进程 ) 二.Linux 内核调度策略 1.SCHED_FIFO 调度策略 2.SCHED_RR 调度策略 三.实时调度实体 sched_rt_entit ...

  7. Linux进程管理 (9)实时调度类分析,以及FIFO和RR对比实验

    关键词:rt_sched_class.SCHED_FIFO.SCHED_RR.sched_setscheduler().sched_setaffinity().RR_TIMESLICE. 本文主要关注 ...

  8. 【Linux 内核】调度器 ② ( sched_class 调度类结构体源码 | 源码路径 linux-5.6.18\kernel\sched\sched.h )

    文章目录 一.调度器 二.sched_class 调度类结构体 一.调度器 上一篇博客 [Linux 内核]调度器 ( 调度器概念 | 调度器目的 | 调度器主要工作 | 调度器位置 | 进程优先级 ...

  9. Android实现车辆检测(含Android源码 可实时运行)

    Android实现车辆检测(含Android源码 可实时运行) 目录 Android实现车辆检测(含Android源码 可实时运行) 1. 前言 2. 车辆检测数据集说明 3. 基于YOLOv5的车辆 ...

  10. Android实现红绿灯检测(含Android源码 可实时运行)

    Android实现红绿灯检测(含Android源码 可实时运行) 目录 Android实现红绿灯检测(含Android源码 可实时运行) 1. 前言 2. 红绿灯检测数据集说明 3. 基于YOLOv5 ...

最新文章

  1. jittor和pytorch生成网络对比之dcgan
  2. 自定义jstl函数标签
  3. 网交会引发的新交易机会
  4. arthas jvm相关命令使用示例:sysenv、getstatic、vmoption、ognl
  5. ICLR 2021 | 使用CVAE学习干扰集,增强OOD以及对抗防御的能力
  6. C++用模板元编程进行循环展开的性能测试
  7. 吉首大学2019年程序设计竞赛-F 天花乱坠
  8. Windows 10环境下如何安装CMake?(更新时间:2021.9.13)
  9. python anaconda和pycharm_Python 、Pycharm、Anaconda三者的区别与联系、安装过程及注意事项...
  10. weex scroller
  11. 作业三——求左部分中的最大值减去右部分最大值的绝对值,最大是多少...
  12. 【NOIP 2016】组合数问题
  13. 十四周二次课(3月27日)
  14. 《解决nPlayer卡顿,玩转WebDAV》
  15. c++STL库最详细介绍(保姆级教学)
  16. 省市区随机获取 java_随机获取省市区-Groovy
  17. EXP-00091: Exporting questionable statistics
  18. 计算机更改虚拟内存有用吗,电脑虚拟内存有什么用(小白必知虚拟内存作用及设置技巧)...
  19. 乐高大颗粒作品24:金蟾
  20. bcdedit添加linux引导,强大的BCDEdit工具-启动项等相关问题-设置默认开机启动项

热门文章

  1. 【数字设计与计算机体系结构】2021-09-26-数字设计与计算机体系结构课程(四)
  2. JavaScript系列之去掉字符串前后的空格
  3. 酒店PMS变革之路:开放互联、模块化配置
  4. 区块链DAO vs. 股份制:生产关系革命的原因和意义
  5. Java - 为什么Java不支持运算符重载?
  6. java 解密pdf文件,PDFBox加密和解密PDF文件
  7. mysql 联合主键 自增_mysql联合主键,自增长(要区分数据库引擎)
  8. 如何安装浏览器插件,一篇文章全搞定
  9. C语言读取GPT分区信息
  10. BW随手记-项目上零碎总结(SAP销售,开票,获利能力分析)