μCOS 系列专题—分配优先级(Assigning Task Priorities)
来源:互联网 发布:方块导航网源码 编辑:程序博客网 时间:2024/06/07 02:50
19.为任务指定优先级(Assigning Task Priorities)
实时系统固有的复杂性使得指定任务优先级的工作不是一件简单的事情。在大多数系统中,并不是所有的任务都是至关重要的,也不说不重要的任务就应该指定较低的优先级。多数实时系统在软件和硬件两方面的都有一定的要求,在软实时系统中,任务需要尽可能快的被执行,但并没有明确的时间说明任务何时会完成。在硬实时系统中,任务不仅必须正确的被执行,而且在时间方面也是要严格要求。
指的一提的是一项叫做单调比率调度算法RMS(Rate MonotonicScheduling)的技术,它主要基于任务执行的频率来为每个任务分配优先级。简单地说,就是为执行频率较高的任务分配较高的优先级,具体如下图所示:
RMS主要有以下几个前提假设:
● 所有的任务都是周期性的(任务之间的间隔是由规律的);
● 任务相互之间不需要同步、共享资源、和数据交换;
● 处理器必须总是要先处理就绪等待执行的最高优先级任务。换句话说,使用的必须是可抢占的调度算法。
给定一个包含n个任务的集合,这些任务按照RMS算法指定了优先级,要使所有的任务满足硬实时系统要求,下面的不等式必须成立,这就是RMS的基本理论:
在这里,Ei是任务i的最大执行时间,Ti是任务i的执行周期,换句话说,Ei/Ti是任务i所需要的CPU时间比。下面的表格给出了在不同任务数量情况下的n(21/ n - 1)的大小,当任务数量n趋于无穷大的时候,n(21/ n - 1)的值趋于ln(2),或者0.693。这表明,对于所有的基于RMS算法的硬实时系统,所有有时间要求任务的CPU的利用率低于70%。注意,对于没有时间要求的任务来说CPU的使用率仍旧是100%。使CPU的使用率达到100%也不是期望的目标,因为这样的话,就不允许改变代码和增加新的特性。这里推荐一个原则:在系统设计的时候,应该使CPU的使用率保持在60%~70%。
RMS认为,高频任务(调度频率最高的任务)应具有最高优先级。在一些例子中,高频任务也可能不是最重要的任务。不过这样一来,你也不需要为应用分配什么优先级了。RMS仅仅只是一个开始,很多东西还是需要结合具体的工程实践去总结。
- μCOS 系列专题—分配优先级(Assigning Task Priorities)
- μCOS 系列专题—互斥(Mutual Exception)
- μCOS 系列专题—内核结构(1)
- μCOS 系列专题—前言
- μCOS 系列专题—实时系统及相关概念(1)
- [BZOJ 4425] [Nwerc2015]Assigning Workstations分配工作站
- 集训队专题(7)1003 Task Schedule
- jBPM4.4之(Task)任务分配
- RHEL/CentOS/Fedora各种源(EPEL、Remi、RPMForge、RPMFusion)配置 、YUM 源优先级插件:Yum Priorities
- μCOS-Ⅲ——临界段
- μCOS-Ⅲ——常用注意事项
- 任务——μ/COS-II读书笔记
- dp 系列专题(三)
- Dplasma调度方式—— DAGUE_SCHEDULER_AP(Absolute priorities)
- EvenBus3.0中文翻译(二)Priorities and Event Cancellation
- Hadoop简介——文件删除和Task分配
- [转]jBPM4.4之(Task)任务分配
- nohup、renice——不结束,分配优先级
- WEB基础:HTML
- 整理几个前端遇到的问题
- python引包以及pyCharm运行scrapy方法
- 关于json
- ◆◆◆Angular2学习笔记-问题解决方法
- μCOS 系列专题—分配优先级(Assigning Task Priorities)
- zookeeper-crud
- 使用httpclient发送get/post请求
- 绝对路径和相对路径
- 树莓派之蓝牙编程
- 字符设备驱动-LED驱动
- activiti全局的监听器和链接监听器
- C++项目中的extern "C" {}
- 算法学习之旅,中级篇(4)-–快速排序