当前位置: 首页 > news >正文

单调速率调度(RMS)算法

1、概念

  RMS(Rate-Monotonic Scheduling),“单调速率调度调度” 算法,指任务的优先级按任务周期 T 来分配。它根据任务的执行周期的长短来决定调度优先级,那些具有小的执行周期的任务具有较高的优先级,周期长的任务优先级低。

这里有个大前提,RMS 是在抢占式调度的基础之上建立,即高优先级任务会立即打断低优先级任务

  这种策略背后的理由是:更频繁地需要 CPU 的任务应分配更高的优先级。此外,单调速率调度假定:对于每次 CPU 执行,周期性进程的处理时间是相同的。也就是说,在每次进程获取 CPU 时,它的 CPU 执行长度是相同的。

小结,RMS 算法:

  • 基于抢占式调度
  • 目标对象是需要周期性执行的任务
  • 周期越短,优先级越高(静态优先级,在创建任务之初就已经分配好)

2、详解

  举一个例子,我们有两个进程 P1 和 P2。P1 和 P2 的周期分别为 50 和 100,即 ρ1 = 50 和 ρ2= 100。P1 和 P2 的处理时间分别为 t1 = 20 和 t2 = 35。每个进程的截止期限要求,它在下一个周期开始之前完成 CPU 执行。

  首先,我们应问自己是否可能调度这些任务以便每个进程都能满足截止期限。如果我们按执行与周期的比率 ti/ρi 测量一个进程的 CPU 利用率,那么 P1 的 CPU 利用率 20/50 = 0.40,P2 的是 35/100 = 0.35,总的 CPU 利用率为 75%。因此,我们似乎可以调度这些任务以便满足它们的截止期限,并且仍让 CPU 有多余可用的时间。

  假设为 P2 分配比 P1 更高的优先级。P1 和 P2 的执行情况如图 1 所示。

在这里插入图片描述

图 1 当 P2 的优先级高于 P1 时的任务调度

  我们可以看到,P2 首先开始执行并在时间 35 完成。这时,P1 开始,它完成 CPU 执行时间 55。然而,P1 的第一个截止期限是在时间 50,所以调度程序让 P1 错过其截止期限。

  现在假设使用单调速率调度,这里 P1 分配的优先级要高于 P2 的,因为 P1 的周期比 P2 的更短。在这种情况下,这些进程执行如图 2 所示。

在这里插入图片描述

图 2 单调速率调度

  首先,P1 开始,并在时间 20 完成 CPU 执行,从而满足第一个截止期限。P2 在这点开始运行,并运行直到时间 50。此时,它被 P1 抢占,尽管它的 CPU 执行仍有 5ms 的时间。P1 在时间 70 完成 CPU 执行,在这点调度器恢复 P2。P1 在时间 75 完成 CPU 执行,也满足第一个截止期限。然后,系统一直空闲直到时间 100,这时,P1 再次被调度。

  单调速率调度可认为是最优的,因为如果一组进程不能由此算法调度,它不能由任何其他分配静态优先级的算法来调度。

  当然,RMS 也不是万能的,也存在一个阈值。我们接下来分析一组进程,它们不能使用单调速率算法来调度。

  假设进程 P1 具有周期 ρ1=50 和 CPU 执行 t1 = 25。进程 P2 的对应值是 ρ2=80 和 t2 = 35。单调速率调度将为进程 P1 分配较高的优先级,因为它具有较短的周期。两个进程的总 CPU 利用率为 (25/50)+(35/80)=0.94,因此似乎合乎逻辑的结论是:这两个进程可以被调度,并且仍让 CPU 有 6% 的可用时间。

在这里插入图片描述

图 3 错过截止期限的单调速率调度

  图 3 显示了进程 P1 和 P2 的调度。最初,P1 运行,直到在时间 25 完成 CPU 执行。进程 P1 然后开始运行,并运行直到时间 0,这时它被 P1 抢占;这时,P2 在 CPU 执行中仍有 10ms 的剩余。进程 P1 运行直到时间 75,导致 P2 在时间 85 结束,因而超过了在时间 80 完成 CPU 执行的截止期限。

  尽管是最优的,然而单调速率调度有一个限制,CPU 的利用率是有限的,并不总是可能完全最大化 CPU 资源。对于 n 个周期性任务,RMS 调度的 CPU 利用率上界为:

U≤n(21n−1)U \le n \left(2^{\frac{1}{n}} - 1\right) Un(2n11)

当任务数趋近无穷大时:

lim⁡n→∞n(21n−1)=ln⁡2≈0.693147…\lim_{n\to\infty} n\left(2^{\frac{1}{n}}-1\right)=\ln 2 \approx 0.693147\ldots nlimn(2n11)=ln20.693147

  代入计算,对于具有两个进程的系统,CPU 利用率是 83%。图 1 和图 2 调度的两个进程的组合利用率为 75%,因此单调速率调度算法保证能够调度它们。图 3 所示的两个进程的组合利用率为 94%,因此,单调速率调度不能保证它们可以调度以便满足它们的截止期限。

3、案例

  下面以 SylixOS 操作系统下提供的 RMS 调度接口为例讲解。相关链接:

  SylixOS 的 RMS 调度

http://www.dtcms.com/a/403954.html

相关文章:

  • 百度智能云一念·智能创作平台
  • 做网站订阅号丰台建设企业网站
  • shell编程:sed - 流编辑器(2)
  • 在Grafana中配置MySQL数据源并创建查询面板
  • 做的比较好的二手交易网站有哪些小学学校网站建设计划书
  • OneSignal v2 PHP手搓请求消息推送-供参考
  • 中国建站公司wordpress主题 下单
  • Qt DPI相关逻辑
  • 约束优化问题的常用解决办法及优缺点、轨迹规划中应用
  • 电子元器件基础知识day1
  • 【C++游记】C++11特性
  • 光子、光量子、量子三者的关系
  • 网站更改目录做301承德信息网络有限公司
  • Pytorch中stack()方法的总结及理解
  • 网站建设需要那种技术开一个网站多少钱
  • 在windows系统如何使用docker将nginx容器化部署
  • 【异世界历险之数据结构世界(二叉搜索树)】
  • 宁夏建设银行网站好的兼职做调查网站
  • SQLMap数据库枚举靶机(打靶记录)
  • 镇江建设工程质量监督局网站虹口 教育 网站建设
  • stm32移植elog
  • 揭阳市网站建设徐州市建设局网站
  • 讯飞起点阅读器京东式开售,后kindle时代机会在哪里?
  • 2018/07 JLPT听力原文 问题四
  • 旅游网站开发说明书网站建设费用应按几年摊销
  • Redis数据持久化
  • wampserver搭建网站鹤山区网站建设
  • 河南省建设厅网站考试成绩查询东莞人才网求职
  • 【数据结构前置知识】泛型
  • Flink SourceOperator和WaterMark