linux进程调度周期,Linux进程组调度机制学习
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进程组调度机制学习相关推荐
- Linux内核中的进程组及会话
Linux内核中的进程组及会话 将阐述Linux内核中的如下几个概念 1) 进程组 2) 会话 3) 控制终端 前面的概念来源于前人,我只是站在前人的肩膀上结合内核中的实现加深概念理解. 1.概念: ...
- linux 进程组id 错乱,【Linux】终端,进程组,作业,会话及作业控制
终端 概念 在UNIX系统中,用用户通过终端登录系统后得到一一个Shell进程,这个终端成为Shell进程的控制终端 (Controlling Terminal),控制终端是保存在PCB中的信息,而我 ...
- linux的基础知识——进程组
文章目录 1.进程组的概念 2.进程组操作函数 1.进程组的概念 2.进程组操作函数
- linux 进程调度卡死,linux进程调度之总章:一些片汤话
最近几天结合源码看了很多linux进程调度的文章,虽然掌握了个大概,但是越看,细节越多,写这篇文章的信心也就越不足,曾有系列文章叫鼠眼看linux进程调度,很符合我现在的心境,就像盲人摸象,学到一些东 ...
- linux 进程调度 内存,linux学习的任督二脉-进程调度和内存管理
转自 宋宝华老师的博客 原文:https://blog.csdn.net/21cnbao/article/details/77505330 内功心法 学习或遇到问题时,反过来主动思考如果我是设计者,我 ...
- 深入理解Linux进程调度(0.4)
学习方法论 写作原则 标题括号中的数字代表完成度与完善度 0.0-1.0 代表完成度,1.1-1.5 代表完善度 0.0 :还没开始写 0.1 :写了一个简介 0.3 :写了一小部分内容 0.5 :写 ...
- Linux进程调度 - 组调度及带宽控制 LoyenWang
背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本: ...
- (5)Linux进程调度-CFS调度器
目录 背景 1. 概述 2. 数据结构 2.1 调度类 2.2 rq/cfs_rq/task_struct/task_group/sched_entity 3. 流程分析 3.1 runtime与vr ...
- Linux进程调度 - CFS调度器 LoyenWang
背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本: ...
最新文章
- IListT和ListT区别
- python 笔记 :Gym库 (官方文档笔记)
- 20应用统计考研复试要点(part25)--简答题
- java没有对象可以调用方法吗_在没有括号的情况下调用Java中的新对象的方法:操作顺序违规?...
- 【springboot】之自动配置原理
- oracle dg物理和逻辑,Oracle DG介绍(物理无实例)
- mysql5.5客户端_MySQL 5.5/5.6——概述 MySQL 客户端程序
- 学习IOS开发UI篇--UIView\UIButton\UILabel\UIImageView\UITextField
- lisp励遍图块中的实体_lisp励遍图块中的实体_「AutoCAD之图块编辑」八仙过海各显神通——图块编辑方法综述......
- chainmaker-go-sdk 查看客户端日志
- iOS逆向工程整理 HOOK微信抢红包
- 【YY手机】用AVR单片机制作手机系列教程-基础篇
- 登录时记住密码的实现
- mysql存特殊符号失败_mysql存储符号表情失败
- vue2.0 唤起百度地图app_高德地图公测“你好小德”语音助手:解决十大驾车导航痛点...
- exls表格搜索快捷键_excel搜索快捷键 常用的excel快捷键有哪些
- python分割图片、合并图片
- 计算机适合用mac吗,原神能用苹果电脑玩吗
- 哔哩哔哩(B站)暑期实习面经(已OC)
- 正版软件 Directory Opus 12 Pro Windows 平台上的资源管理器,定是功能完全、可定制化程度高的那款。
热门文章
- html 形成打印数据,用HTMLTestRunner生成报告,无法打印print的内容
- just函数 python_在python里写Monad
- 启明云端分享| ESP32-S3点480*480分辨率的RGB 2.1寸旋钮屏刷新效果到底会怎么样呢
- 启明云端分享| 盘点 ESP32-S3到底有哪些功能特性
- 程序员的520--8ms给你无法复制的花式告白
- python测试udp端口_Linux系统的ECS实例中TCP/UDP端口测试及验证方法说明
- 直播|实时音视频抗弱网技术揭秘
- 算法题-大数相乘问题
- D - Connect the Cities (HDU - 3371)
- SQLServer无法打开用户默认数据库,登录失败,错误4064的解决办法