3.4实时调度

3.4.1实现实时调度的基本条件

1、提供必要的信息

  • 就绪时间:该任务成为就绪状态的时间。
  • 开始截止时间或完成截止时间:只需知道一个。
  • 处理时间:从开始执行到完成所需时间。
  • 资源要求:任务执行时所需的一组资源。
  • 优先级:根据任务性质赋予不同优先级。

2、系统处理能力强

假如系统中有m个周期性的硬实时任务,处理时间为Ci,周期时间表示为Pi;

  • 则单机系统中必须满足条件:
    ∑( Ci / Pi )≤1
  • 多处理机系统:
    ∑( Ci / Pi )≤N

3、采用抢占式调度机制

  • 硬实时任务: 广泛采用抢占机制。
  • 小的实时系统: 可采用非抢占调度机制(简化调度程序和对任务调度时所花费的系统开销)。

4、具有快速切换机制

  • 对外部中断的快速响应能力。
  • 快速的任务分派能力。

3.4.2实时调度算法的分类

可以按照不同方式对实时调度算法加以分类:

  • 按照实时任务性质:

    • 针对硬实时任务的调度算法
    • 针对软实时任务的调度算法
  • 按照调度方式:
    • 非抢占式
    • 抢占式

1、非抢占调度算法

  • 非抢占式轮转调度算法:适用于要求不太严格的场合!

  • 非抢占式优先调度算法:适用于要求较为严格的场合!

2、抢占式调度算法

  • 基于时钟的抢占式优先权调度算法:

    • 某高优先级任务到达后并不立即抢占,而等下一个时钟中断时抢占。
  • 立即抢占的优先权调度算法:

    • 一旦出现外部中断,只要当前任务未处于临界区,就立即抢占处理机。

3.4.3最早截至时间优先算法EDF(Earliest Deadline First)

  • 该算法是根据任务的截止时间确定任务的优先级;
  • 具有最早截止时间的任务排在队列的前面。

1.非抢占式调度方式用于非周期性实时任务

2.抢占式用于周期性实时任务

  • 假如在一个实时系统中,有两个周期性实时任务A和B;

    • 任务A要求每20ms执行一次,执行时间为10ms;
    • 任务B要求每50ms执行一次,执行时间为25ms。
    • 计算是否可调度
      10/20+25/50=1, 可调度!
  • 采用最早截至时间优先调度过程

    与固定优先级算法对比:

3.4.4最低松弛度优先LLF(Least Laxity First)算法

  • 最短空闲时间优先;
  • 用松弛度来表示任务紧急程度;
  • 松弛度=完成截止时间-运行时间-当前时间;
    • 例如,任务A在200ms时必须完成,本身运行时间100ms,则必须在100ms之前调度执行,A任务的紧急(松弛)程度为100ms;
      任务B在400ms时必须完成,需运行150ms,其松弛程度为250ms。
  • 该算法主要用于可抢占调度方式中。
  • 假如在一个实时系统中,有两个周期性实时任务A,B,任务A要求每20ms执行一次,执行时间为10ms;任务B要求每50ms执行一次,执行时间为25ms;
    由此可得知AB任务每次必须完成的时间分别为A1、A2、A3…和B1、B2、B3…如下图:

    采用最低松弛度优先

3.4.5优先级倒置

1.优先级倒置的形成

  • ★ “优先级倒置”的现象
    高优先级进程(或线程)被低优先级进程(或线程)延迟或阻塞。
  • ★例子
    • 有三个完全独立的进程P1、P2和P3,P1的优先级最高,P2次之,P3最低。
    • P1和P3通过共享的一个临界资源进行交互。下面是一段代码:
      P1: …P(mutex); CS-1; V(mutex);…
      P2: … program2…;
      P3: …P(mutex); CS-3; V(mutex) ;…

2.优先级倒置的解决方法

一种简单的解决方法-中断禁止:

  • 假如进程P3在进入临界区后,P3所占用的处理机就不允许被抢占。
  • 如果系统中的临界区都较短且不多,该方法是可行的。
  • 反之,如果P3临界区非常长,则高优先级进程P1仍会等待很长的时间,其效果是无法令人满意的。
  • 还要防止P3在临界区出现死循环。

一个比较实用的解决方法-优先级继承

  • 当高优先级进程P1要进入临界区使用临界资源R时,如果已有一个低优先级进程P3正在使用该资源;
  • 此时一方面P1被阻塞,另一方面由P3继承P1的优先级,并一直保持到P3退出临界区

处理机调度之实时调度相关推荐

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

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

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

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

  3. 【Linux 内核】实时调度类 ⑦ ( 实时调度类核心函数源码分析 | dequeue_task_rt 函数 | 从执行队列中移除进程 )

    文章目录 一.dequeue_task_rt 函数 ( 从执行队列中移除进程 ) 二.update_curr_rt 函数 ( 更新调度信息 ) 本篇博客中 , 开始分析 struct sched_cl ...

  4. 【Linux 内核】实时调度类 ⑥ ( 实时调度类核心函数源码分析 | 插入进程到执行队列 | 从执行队列中选择优先级最高的进程 )

    文章目录 一.enqueue_task_rt 函数 ( 插入进程到执行队列 ) 二.pick_next_task_rt 函数 ( 从执行队列中选择优先级最高的进程 ) 本篇博客中 , 开始分析 str ...

  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 实时调度 示例

    在上一篇博文中进行了原理性分析之后,本文举出一个实例进行分析(假设所有的cpu处于同一个cpuset中). 当前系统中cpu的情况如下如所示: 说明:0~99代表的是进程的实时优先级,cpu的状态与该 ...

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

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

  8. Linux---进程调度及CFS调度器

    Linux的调度算法 (1)O(N)调度器 O(N)调度器发布于1992年,从就绪队列中比较所有进程的优先级,然后选择一个最高优先级的进程作为下一个调度进程. 优点:操作简单,便于理解. 缺点:时间消 ...

  9. Linux进程核心调度器之主调度器schedule--Linux进程的管理与调度(十九)

    日期 内核版本 架构 作者 GitHub CSDN 2016-06-30 Linux-4.6 X86 & arm gatieme LinuxDeviceDrivers Linux进程管理与调度 ...

最新文章

  1. DHTML中style的display和visibility属性
  2. 用eval在txt中存储list,dict,tuple
  3. windows挂载linux网络文件系统NFS
  4. JavaScript中使Promise模式进行异步编程
  5. 做安全操作系统,这位技术老兵是认真的!
  6. 用阿里开源的 Nacos 搞微服务真香!
  7. 数据结构实现时所需的成员变量、标准对外接口
  8. TCP三次握手/四次分手详解
  9. ubuntu终止terminal中下载任务以及继续下载
  10. BOOST升压电路原理详解
  11. Java的身份证号码工具类
  12. 推荐几个好的粉碎文件的软件?这3款软件让你彻底摆脱无法删除文件的烦恼
  13. 如何不用电脑安装ipa
  14. 深入RxJava2 源码解析(一)
  15. c++小游戏 走迷宫
  16. java 矩阵求逆_详解用java描述矩阵求逆的算法
  17. 【LM】电池电量水平低 保留电池电量 关键级别电池电量水平
  18. 【Echarts】折线图/趋势图区间框选计算
  19. 谷歌浏览器 android 69,如何将谷歌浏览器69及以上版本切换回旧版UI界面
  20. Java如何读取和操作上G文本数据

热门文章

  1. 刷脸支付服务商促进数字化时代来临
  2. 数据结构与算法(003):线性表-概述
  3. firnbsp;提交的版本的iphone4amp;nbs…
  4. J2me项目实例------网络通讯录(1) (转)
  5. 排球计分规则功能说明书
  6. 管理及使用Web系统:管理Discuz!论坛系统
  7. 用友U8案例教程库存管理前台操作
  8. 【PS实例】轻松打造梦幻的照片
  9. Supervisor的使用方法
  10. t检验自由度的意义_两独立t检验的自由度为n-2()