from:http://oenhan.com/task-group-sched

https://blog.csdn.net/u014089131/article/details/54865073

1.RT组调度策略:

实时进程的优先级是设置固定,调度器总是选择优先级最高的进程运行。而在组调度中,调度单元的优先级则是组内优先级最高的调度单元的优先级值,也就是说调度单元的优先级受子调度单元影响,如果一个进程进入了调度单元,那么它所有的父调度单元的调度队列都要重排。实际上我们看到的结果是,调度器总是选择优先级最高的实时进程调度,那么组调度对实时进程控制机制是怎么样的?

在前面的rt_rq实时进程运行队列里面提到rt_time和rt_runtime,一个是运行累计时间,一个是最大运行时间,当运行累计时间超过最大运行时间的时候,rt_throttled则被设置为1,见sched_rt_runtime_exceeded函数。

if (rt_rq->rt_time > runtime) {

rt_rq->rt_throttled = 1;

if (rt_rq_throttled(rt_rq)) {

sched_rt_rq_dequeue(rt_rq);

return 1;

}

}

设置为1意味着实时队列中被限制了,如__enqueue_rt_entity函数,不能入队。

static inline int rt_rq_throttled(struct rt_rq *rt_rq){

return rt_rq->rt_throttled && !rt_rq->rt_nr_boosted;

}

static void __enqueue_rt_entity(struct sched_rt_entity *rt_se, bool head)

{

if (group_rq && (rt_rq_throttled(group_rq) || !group_rq->rt_nr_running))

return;

.....

}

其实还有一个隐藏的时间片的概念,即sched_rt_period_us,意味着sched_rt_period_us时间内,实时进程可以占用CPU

rt_runtime时间,如果实时进程每个时间周期内都没有调度,则在do_sched_rt_period_timer定时器函数中将rt_time减去一个周期,然后比较rt_runtime,恢复rt_throttled。

//overrun来自对周期时间定时器误差的校正

rt_rq->rt_time -= min(rt_rq->rt_time, overrun*runtime);

if (rt_rq->rt_throttled && rt_rq->rt_time < runtime) {

rt_rq->rt_throttled = 0;

enqueue = 1;

2.进程执行期间调度器周期性地启动,其负责更新一些相关数据,并不负责进程之间的切换:

(1)timer_tick();

(2)update_process_times();

(3)scheduler_tick();

(4)task_tick_rt();//RT调度器实现

(5)update_curr_rt();

linux进程调度周期,Linux进程组调度机制学习相关推荐

  1. Linux内核中的进程组及会话

    Linux内核中的进程组及会话 将阐述Linux内核中的如下几个概念 1) 进程组 2) 会话 3) 控制终端 前面的概念来源于前人,我只是站在前人的肩膀上结合内核中的实现加深概念理解. 1.概念: ...

  2. linux 进程组id 错乱,【Linux】终端,进程组,作业,会话及作业控制

    终端 概念 在UNIX系统中,用用户通过终端登录系统后得到一一个Shell进程,这个终端成为Shell进程的控制终端 (Controlling Terminal),控制终端是保存在PCB中的信息,而我 ...

  3. linux的基础知识——进程组

    文章目录 1.进程组的概念 2.进程组操作函数 1.进程组的概念 2.进程组操作函数

  4. linux 进程调度卡死,linux进程调度之总章:一些片汤话

    最近几天结合源码看了很多linux进程调度的文章,虽然掌握了个大概,但是越看,细节越多,写这篇文章的信心也就越不足,曾有系列文章叫鼠眼看linux进程调度,很符合我现在的心境,就像盲人摸象,学到一些东 ...

  5. linux 进程调度 内存,linux学习的任督二脉-进程调度和内存管理

    转自 宋宝华老师的博客 原文:https://blog.csdn.net/21cnbao/article/details/77505330 内功心法 学习或遇到问题时,反过来主动思考如果我是设计者,我 ...

  6. 深入理解Linux进程调度(0.4)

    学习方法论 写作原则 标题括号中的数字代表完成度与完善度 0.0-1.0 代表完成度,1.1-1.5 代表完善度 0.0 :还没开始写 0.1 :写了一个简介 0.3 :写了一小部分内容 0.5 :写 ...

  7. Linux进程调度 - 组调度及带宽控制 LoyenWang

    背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本: ...

  8. (5)Linux进程调度-CFS调度器

    目录 背景 1. 概述 2. 数据结构 2.1 调度类 2.2 rq/cfs_rq/task_struct/task_group/sched_entity 3. 流程分析 3.1 runtime与vr ...

  9. Linux进程调度 - CFS调度器 LoyenWang

    背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本: ...

最新文章

  1. IListT和ListT区别
  2. python 笔记 :Gym库 (官方文档笔记)
  3. 20应用统计考研复试要点(part25)--简答题
  4. java没有对象可以调用方法吗_在没有括号的情况下调用Java中的新对象的方法:操作顺序违规?...
  5. 【springboot】之自动配置原理
  6. oracle dg物理和逻辑,Oracle DG介绍(物理无实例)
  7. mysql5.5客户端_MySQL 5.5/5.6——概述 MySQL 客户端程序
  8. 学习IOS开发UI篇--UIView\UIButton\UILabel\UIImageView\UITextField
  9. lisp励遍图块中的实体_lisp励遍图块中的实体_「AutoCAD之图块编辑」八仙过海各显神通——图块编辑方法综述......
  10. chainmaker-go-sdk 查看客户端日志
  11. iOS逆向工程整理 HOOK微信抢红包
  12. 【YY手机】用AVR单片机制作手机系列教程-基础篇
  13. 登录时记住密码的实现
  14. mysql存特殊符号失败_mysql存储符号表情失败
  15. vue2.0 唤起百度地图app_高德地图公测“你好小德”语音助手:解决十大驾车导航痛点...
  16. exls表格搜索快捷键_excel搜索快捷键 常用的excel快捷键有哪些
  17. python分割图片、合并图片
  18. 计算机适合用mac吗,原神能用苹果电脑玩吗
  19. 哔哩哔哩(B站)暑期实习面经(已OC)
  20. 正版软件 Directory Opus 12 Pro Windows 平台上的资源管理器,定是功能完全、可定制化程度高的那款。

热门文章

  1. html 形成打印数据,用HTMLTestRunner生成报告,无法打印print的内容
  2. just函数 python_在python里写Monad
  3. 启明云端分享| ESP32-S3点480*480分辨率的RGB 2.1寸旋钮屏刷新效果到底会怎么样呢
  4. 启明云端分享| 盘点 ESP32-S3到底有哪些功能特性
  5. 程序员的520--8ms给你无法复制的花式告白
  6. python测试udp端口_Linux系统的ECS实例中TCP/UDP端口测试及验证方法说明
  7. 直播|实时音视频抗弱网技术揭秘
  8. 算法题-大数相乘问题
  9. D - Connect the Cities (HDU - 3371)
  10. SQLServer无法打开用户默认数据库,登录失败,错误4064的解决办法