在上一篇博文中进行了原理性分析之后,本文举出一个实例进行分析(假设所有的cpu处于同一个cpuset中)。

当前系统中cpu的情况如下如所示:

说明:0~99代表的是进程的实时优先级,cpu的状态与该cpu上最高实时进程的优先级+2.

在linux系统中用一个2维map表示各个cpu的状态,其中1个维度代表了-1~99这几个状态,另一个维度代表了处于该状态下的cpu。那么我们不难计算出当前系统中所有cpu的状态为:

假设发生如下事件:

1、cpu0上有一个高优先级的任务被唤醒(T3)

2、cpu3的T7执行完毕

发生事件1,触发一个push操作,因为T3任务的优先级高于当前进程T2,那么T2必然被换出,那么换出的T2应该放置到哪个cpu上呢?

经分析发现,最低优先级的是C1

虽然此时c1仍旧处于超载状态,但是没有满足条件的cpu可以让其执行push操作。此时cpu的状态为:

此时发生事件2,会发生push操作,因为cpu0和cpu1处于超载状态所以push操作会在cpu0和cpu1上发生生。

对于rq0而言,T1>T6,则满足push的条件,

虽然此时T6被换出,但是因为T6不满足push条件(其他cpu的状态都高于T6),因此此时T6只能呆在cpu3上。接下来,C1仍然满足push条件,继续执行push操作。

从这里我们发现,经过push/pull操作,使得cpu3的负载更加严重了。不过随着其他cpu上的rq逐渐变为空,cpu3的超载将很快得到缓解。

linux什么是实时调度,Linux 实时调度 示例相关推荐

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

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

  2. 【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 字段 ...

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

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

  4. linux 进程状态显示dl,Linux系统中的实时调度器DL调度器的原理是什么?详细概述...

    一.概述 实时系统是这样的一种计算系统:当事件发生后,它必须在确定的时间范围内做出响应.在实时系统中,产生正确的结果不仅依赖于系统正确的逻辑动作,而且依赖于逻辑动作的时序.换句话说,当系统收到某个请求 ...

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

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

  6. 【Linux 内核】CFS 调度器 ⑤ ( CFS 调度器类 fair_sched_class 源码 | next 赋值 | enqueue_task 赋值 | dequeue_task 赋值 )

    文章目录 一.调度器类 sched_class 简介 二.CFS 调度器类源码 三.next 赋值 四.enqueue_task 赋值 五.dequeue_task 赋值 一.调度器类 sched_c ...

  7. 【Linux 内核】调度器 ① ( 调度器概念 | 调度器目的 | 调度器主要工作 | 调度器位置 | 进程优先级 | 抢占式调度器 | Linux 进程状态 | Linux 内核进程状态 )

    文章目录 一.调度器 0.调度器概念 1.调度器目的 2.调度器主要工作 3.调度器位置 4.进程优先级 5.抢占式调度器 二.Linux 内核进程状态 API 简介 三.Linux 进程状态 一.调 ...

  8. linux内核调度,Linux内核的三种调度策略

    一 Linux内核的三种调度策略: 1,SCHED_OTHER 分时调度策略, 2,SCHED_FIFO实时调度策略,先到先服务.一旦占用cpu则一直运行.一直运行直到有更高优先级任务到达或自己放弃 ...

  9. Linux调度器 - deadline调度器

    一.概述 实时系统是这样的一种计算系统:当事件发生后,它必须在确定的时间范围内做出响应.在实时系统中,产生正确的结果不仅依赖于系统正确的逻辑动作,而且依赖于逻辑动作的时序.换句话说,当系统收到某个请求 ...

  10. 【操作系统/OS笔记10】进程/线程的调度原则、调度算法、实时调度、多处理器调度、优先级反转

    本次笔记内容: 8.1 背景 8.2 调度原则 8.3 调度算法1 8.4 调度算法2 8.5 实时调度 8.6 多处理调度与优先级反转 文章目录 CPU调度背景 上下文切换 CPU调度 在进程/线程 ...

最新文章

  1. 值类型与引用类型的区别
  2. BinaryTree-学习二叉树的Python库
  3. docker 1.8.2 源代码编译
  4. Android --- 百度地图 SDK v3.6.0 以上版本找不到 PoiOverlay 类
  5. android制作闪动的红心
  6. c语言模板程序,模板模式 (C语言实现)
  7. 【数据库基础知识】plsql安装及配置
  8. app商城源码_海量的SpringBoot和SSM项目【附带源码+视频教程】快速成为全栈
  9. 业界常用的技术评估指标和方法,
  10. Unity5.0 Shader 极简入门(一)
  11. 北疆游记 - 照片在左边相册
  12. String---自我理解
  13. php微信公众号报修系统,微信公众号报修系统使用流程
  14. Python 算法:线性回归及相关公式推导
  15. 爱一个人,爱到八分最相宜
  16. 对校招生培养工作的建议_学校招生工作的几点建议
  17. git生成SSH秘钥
  18. 流利说AI刘扬:从教授到”AI虚拟老师“
  19. Qt 记住上次打开路径
  20. VC键盘VK键值列表

热门文章

  1. BZOJ 3277 串 BZOJ 3473 字符串 (广义后缀自动机、时间复杂度分析、启发式合并、线段树合并、主席树)...
  2. spring5源码解读
  3. 如何用java语言实现C#中的ref关键字(按引用传递参数)的效果
  4. iOS开发之Quzrtz2D 一:认识Quzrtz2D
  5. PHP 修改memory_limit方法
  6. 小米手机与魅族的PK战结果 说明了什么
  7. Ubuntu10.04系统调试TQ2440开发板之一《Ubuntu下搭建TQ2440的程序下载环境》
  8. windows live writer 插件 VSPaste 中文乱码和去空白链接方案
  9. [导入]人的一生能有几天?
  10. The Design and Implementation of Open vSwitch