操作系统的调度方法有很多种,这里主要介绍主流的调度算法,像EDF这种调度算法就不表述了。目前几乎所有的商业实时操作系统的调度理论都基于RMS理论.

以下是基于RMS的一些假设理论:

1 各个任务之间没有资源共享,没有忙等,没有mutex, 也没有semaphore.

2 每个任务的最后期限是周期性的。

3 基于优先级抢占的,即高优先级任务一旦就绪的话,会立马抢占低优先级任务。

4 任务优先级的分配原则是,周期越短的任务,优先级越高。

5 任务切换以及纯内核任务的消耗忽略不计对于这个理论模型。

以下的公式是,基于RMS 的一个基础理论:

U 代表了系统的cpu 使用率,C 是任务的运行具体时间,T 是周期性的任务最后期限,n是有多少个任务,等式右边是理论上的可实时调度率,可以看到可调度率只和任务的个数有关,任务越多,可实时调度率越少。

可以看到等式右边:

可以看到当任务接近无穷大的时候,可调度率是69%了。从这个公式可以近似任务系统中69%的任务是可以实时调度的,即能在最后的期限中完成运行。还有大概31%的任务是非实时的。这样的理论模型在实际应用中是完全可行的。

接下来看一个实际的例子:

假设有3个任务P1, P2, P3,运行的时间以及周期如上图。

根据公式可以算出系统的cpu 使用率。

理论上的可实时调度率为

可以看到0.725 <= 0.77976, 所以这3个任务都是可以实时调度的。

RMS理论主要是基于任务优先级的,对于指导分配任务的优先级有很大的实战价值,其核心是根据任务的最后期限(deadline)和周期的时间来分配任务优先级。周期越短的任务优先级越高,这在优先级分配上是一个有趣的开始。

实时操作系统主流调度方法RMS相关推荐

  1. linux系统编程之进程概念(操作系统---管理,进程创建,进程状态,进程优先级, 环境变量,程序地址空间,进程O(1)调度方法)

    系统编程: 进程概念->进程控制->基础IO->进程间通信->进程信号->多线程 进程概念 冯诺依曼体系结构----现代计算机硬件体系结构 冯诺依曼体系结构----现代计 ...

  2. makefile的基本使用方法,使用bc编译文件的例子-参照任哲的《嵌入式实时操作系统μCOS-II原理及应用-任哲(第3版)》

    实验例子文件:(不一定需要,本文有所有内容,在此给出只是为了方便) makefile的基本使用方法,使用bc编译文件的例子-参照任哲的<嵌入式实时操作系统μCOS-II原理及应用-任哲(第3版) ...

  3. FreeRTOS实时操作系统(七)时间片调度及RTOS的滴答定时器

    系列文章目录 FreeRTOS实时操作系统(一)RTOS的基本概念 FreeRTOS实时操作系统(二)任务创建与任务删除(HAL库) FreeRTOS实时操作系统(三)任务挂起与恢复 FreeRTOS ...

  4. 《嵌入式实时操作系统 uc/OS-II 原理及应用》【任哲 主编】随书例程以及使用方法

    说明 uc/OS-II 是一款开源的实时操作系统,但是如果用于商业,是需要付费的.为了深入了解,找到任哲老师的<嵌入式实时操作系统 uc/OS-II 原理及应用>一书,总体还不错.但是书中 ...

  5. 嵌入式实时操作系统μC/OS-Ⅱ 在DSP芯片上的移植与测试

    [摘要]为了降低DSP 系统软件的开发难度,保证系统的实时性,缩短开发周期,将嵌入式实时操作系统μC/OS-Ⅱ移植到DSP 芯片中是目前比较常用的一种方法.本文介绍了嵌入式实时操作系统μC/OS-Ⅱ的 ...

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

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

  7. ucosii的实时操作系统(任哲)——第一章

    第一章:嵌入式实时操作系统的基本概念 1.什么是操作系统? 只由硬件构成的计算机叫"裸机",此时的计算机是不能正常工作的.计算机必须在硬件的基础上配以相应的软件才能构成真正的计算机 ...

  8. 《嵌入式实时操作系统uC/OS-II》学习摘要

    二. 实时系统概念 1.实时系统的特点 如果逻辑和时序出现了偏差,将会引起严重后果.有两种类型的实时系统:软实时系统和硬实时系统. 在软实时系统系统中,系统的宗旨是指各个任务尽快地运行,而不要求限定某 ...

  9. 使用Nucleus SE实时操作系统

    使用Nucleus SE实时操作系统 Using the Nucleus SE real-time operating system 到目前为止,在本系列文章中,我们详细介绍了Nucleus SE提供 ...

最新文章

  1. 解决AS gradle下载同步卡慢的问题
  2. python怎么安装requests库-Python3.6安装及引入Requests库的实现方法
  3. php 字符串包含另一个字符串_leetcode1433_go_检查一个字符串是否可以打破另一个字符串...
  4. C 函数传递指针参数注意事项
  5. OpenCV背景扣除Background subtraction的实例(附完整代码)
  6. [Asp.net]SignalR实现实时日志监控
  7. linux 环境变量_如何管理你的 Linux 环境变量 | Linux 中国
  8. 认识本质:黑天鹅、关键时刻与张小龙的产品观
  9. 前端学习(2409):vs code自定义代码块
  10. boost::timer库使用
  11. 没有它你的DevOps是玩不转的,你信不?
  12. 微信公众号的文章中添加历史文章链接
  13. 阿里、腾讯隔空“对话”互联互通 打破垄断让中小商户受益是核心命题
  14. MediaStreamTrackAudioSourceNode
  15. 问题六十八:着色模型(shading model)(1)——反射模型(reflection model)(2.2)——高光反射(specular reflection)
  16. Python学习教程:教你用Python通过微信来控制电脑摄像头
  17. Oracle集群时间同步
  18. 分布式定时任务框架说明
  19. 2020最火爆BI产品对比来啦!亿信ABI VS FineBI数据分析谁最行
  20. 欧拉回路(混合图的欧拉回路)

热门文章

  1. 解题:USACO15JAN Grass Cownoisseur
  2. Django学习记录
  3. iOS的runtime运行时机制
  4. Easyui入门视频教程 第11集---Window的使用
  5. 这些东西,你知道吗?是否忘记了
  6. [网络安全自学篇] 十八.XSS跨站脚本攻击原理及代码攻防演示(一)
  7. 【数据结构与算法】之深入解析“零钱兑换”的求解思路与算法示例
  8. LeetCode 1049. 最后一块石头的重量 II
  9. 第十届 蓝桥杯样题 ——代码填空
  10. 【Linux】一步一步学Linux网络编程教程汇总(更新中......)