• 在实时系统中,可能存在着两类不同性质的实时任务,即HRT任务和SRT任务,它们都联系着一个截止时间。
  • 为保证系统能正常工作,实时调度必须能满足实时任务对截止时间的要求。
  • 实现实时调度应具备一定的条件。

实现实时调度的基本条件

  • 提供必要的信息

    • 就绪时间,是指某任务成为就绪状态的起始时间,在周期任务的情况下,它是事先预知的一串时间序列。
    • 开始截止时间和完成截止时间,对于典型的实时应用,只须知道开始截止时间,或者完成截止时间。
    • 处理时间,一个任务从开始执行,直至完成时所需的时间。
    • 资源要求,任务执行时所需的一组资源。
    • 优先级,如果某任务的开始截止时间错过,势必引起故障,则应为该任务赋予“绝对”优先级;如果其开始截止时间的错过,对任务的继续运行无重大影响,则可为其赋予“相对”优先级,供调度程序参考。
  • 系统处理能力强

    • 在实时系统中,若处理机的处理能力不够强,则有可能因处理机忙不过,而致使某些实时任务不能得到及时处理,从而导致发生难以预料的后果。
    • 假定系统中有m个周期性的硬实时任务HRT,它们的处理时间可表示为Ci,周期时间表示为Pi,则在单处理机情况下,必须满足下面的限制条件系统才是可调度的:
    • 提高系统处理能力的途径有二:一是采用单处理机系统,但须增强其处理能力,以显著地减少对每一个任务的处理时间;二是采用多处理机系统。假定系统中的处理机数为N,则应将上述的限制条件改为:
  • 采用抢占式调度机制:

    • 剥夺方式:一般都采用此
    • 非剥夺方式(实现简单):一般应使实时任务较小,以及时放弃CPU。
  • 具有快速切换机制:

    • 对中断的快速响应能力。对紧迫的外部事件请求中断能及时响应,要- 求系统具有快速硬件中断机构,还应使禁止中断的时间间隔尽量短,以免耽误时机(其它紧迫任务)。
    • 快速的任务分派能力。为了提高分派程序进行任务切换时的速度,应使系统中的每个运行功能单位适当的小,以减少任务切换的时间开销。

实时调度算法的分类

  • 非抢占式调度算法

    • 时间片轮转 秒级
    • 非抢占优先权(协同) 秒~毫秒级
  • 抢占式调度算法
    • 时钟中断抢占优先权 毫秒级

      • 基于抢占点抢占
    • 立即抢占immediate preemption 毫秒~微秒级
      • 只要不在临界区即抢占(中断引发)

最早截止时间优先 EDF调度算法

  • 根据任务的截止时间来确定任务的优先级
  • 截止时间越早,优先级越高
  • 可以是抢占式或非抢占式

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

抢占式调度方式用于周期实时任务

  • 任务A和任务B的周期时间分别为20 ms和50 ms,每个周期的处理时间分别为10ms和25ms。

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

  • 该算法在确定任务的优先级时,根据的是任务的紧急(或松弛)程度。

  • 任务紧急程度愈高,赋予该任务的优先级就愈高,以使之优先执行。

  • 主要用于可抢占调度方式中。

  • 实用于周期性的调度任务。

  • 系统中有一个按松弛度排序的实时任务就绪队列,松弛度最低的任务排在队列最前面,调度程序总是选择就绪队列中的队首任务执行。

  • 松弛度也是一种优先级,它反映的是任务的紧急程度。

  • 松弛度=必须完成时间-其本身运行时间-当前时间

操作系统 实时调度相关推荐

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

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

  2. 实时操作系统主流调度方法RMS

    操作系统的调度方法有很多种,这里主要介绍主流的调度算法,像EDF这种调度算法就不表述了.目前几乎所有的商业实时操作系统的调度理论都基于RMS理论. 以下是基于RMS的一些假设理论: 1 各个任务之间没 ...

  3. 操作系统--处理机调度

    操作系统–处理机调度 三个层次 高级调度(作业调度):按照某种规则,从后备队列中选择合适的作业将其调入内存,并为其创建进程 中级调度(内存调度):按照某种规则,从挂起队列中选择合适的进程将其数据调回内 ...

  4. linux内核实时调度,基于Linux内核的实时调度机制的研究和实现

    摘要: 实时操作系统在当前的各个领域得到广泛应用,越来越引起人们的重视.Linux操作系统的源代码开放.内核模块化设计及内核的高度可裁减性使其在嵌入式实时操作系统研究领域备受重视.但其面向通用多任务分 ...

  5. 嵌入式操作系统内核原理和开发(实时调度)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 和很多通用的操作系统相比, 实时操作系统有自己的一个特点,那就是实时调度.通用操作系统的线程优 ...

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

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

  7. 嵌入式操作系统多任务调度原理分析与RUST参考实现

    操作系统多任务调度原理分析与RUST参考实现 作为一名在软件领域工程师,在职业生涯的尽头能有幸接触到一部分硬件产品是我莫大的荣幸.秉承我一贯刨根问底,不搞清楚问题本质不罢休的作风和态度,结合基本的计算 ...

  8. LINUX进程调度分析源码,Linux 实时调度(源码分析)

    为了弄清楚在多cpu系统中是如何实现实时调度的,先引入以下几个概念: cpu的状态: 我们知道,在linux系统中,任务的优先级为0~140. INVALID:(-1)该cpu不可用 IDLE(0): ...

  9. linux什么是实时调度,Linux中的实时调度

    svenfx.. 17 在实时调度中,FIFO和RR与非实时调度具有完全相同的含义.始终以FIFO方式选择过程,然而,与SCHED_RR的时间量不同,SCHED_FIFO的时间量不受限制. SCHED ...

  10. Linux进程管理 (7)实时调度

    关键词:RT.preempt_count.RT patch. 除了CFS调度器之外,还包括重要的实时调度器,有两种RR和FIFO调度策略.本章只是一个简单的介绍. 更详细的介绍参考<Linux进 ...

最新文章

  1. 2020年,为什么说入坑AI是最好的时机?
  2. 多个不同的app应用间应该如何进行消息推送呢?
  3. layer.tips定义弹出的宽度
  4. 微软总裁:比尔盖茨人生简介和名言
  5. 【错误记录】Groovy 闭包使用报错 ( 闭包中不能直接使用外部对象的方法 | 需要先设置 delegate 代理 )
  6. 关于Crypto.PublicKey.RSA,在generate后无法被赋值问题
  7. 代码抽象_如何通过抽象使代码更具可读性
  8. php开启安全模式后影响的函数
  9. 日历的java包_java11教程--包java.time.chrono介绍
  10. Git常用命令及场景
  11. java,mysql,hadoop,cdh,hive,spark,ntp,zookeeper,kafka,storm,redis,flume,git 安装详解
  12. 飞机器减震器的matlab建模和仿真模拟
  13. cad怎么导出jpg图片格式?
  14. css 之水平居中对齐
  15. 开放电脑站点81端口
  16. python生成复合饼图
  17. 机器学习_正态分布下的贝叶斯分类器
  18. java: You aren‘t using a compiler supported by lombok, so lombok will not work and has been disabled
  19. pd.concat()和pd.merge()
  20. php 公众号发表文章,微信公众号如何发布文章(一套完整的流程)

热门文章

  1. RDP VS VNC 速度测试
  2. linux百度云下载脚本,百度网盘Linux版下载
  3. UNISON文件同步
  4. 还在为日程安排发愁?是因为你没有使用飞项
  5. 元气骑士android替换存档教程,元气骑士游戏怎么将存档转移到另一个手机中
  6. 百度百科之中秋节——百度又在中国一个新领域处于领先了,Google……
  7. android桌面插件每秒刷新
  8. N卡电脑Ubuntu20.04+N卡驱动安装+windows11双系统安装(不符合条件的电脑也可以安装win11)2021.11.13
  9. html中span怎么写,html的span标签怎么使用
  10. c++勾股定理解直三角形边长