32.1速率单调算法.ppt

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
32.1速率单调算法.ppt

第3章 实时任务管理 主讲: 黎忠文 目录 3.1 实时任务的概念 3.2 实时任务调度 3.1 实时任务的概念 实时系统所要响应和处理的外部事件有三种形式: 多个异步发生的外部事件 多个周期性发生的外部事件 上述两种情况的组合  如果为处理每一个外部事件而编制一个程序,这种程序的执行有两种方式。一种是顺序执行,一种是并发执行。  3.1.1 用顺序执行的程序实现实际应用系统   用一个事件中断处理程序,来捕捉外部所发生的事件,并把捕捉到的事件登记在一个先进先出的事件队列中,然后,用一个控制循环不断地测试事件队列,若事件队列非空,取队列的第一个元素,转去处理相应事件的程序,并把该元素从队列中移去,执行结束,又回到循环的顶部,继续测试队列和取队列中事件进行处理。 这种处理方式,具有如下特点: 严格按照顺序执行,每一个操作都必须在一个操作结束之后进行。 程序在运行过程中,独占系统资源,系统资源的状态只由程序本身确定,不受外界因素的影响。 程序执行的结果与它的执行过程无关,不管它是连续不断地执行,还是曾经被事件中断处理程序所中断过,都不影响它的执行结果。 如果程序执行时的初始条件相同,则最终结果也相同。 以上特点说明了顺序程序的封闭性,所谓封闭性,是指程序一旦运行,其结果不受外界因素的影响。 3.1.2 用并发执行的任务实现实时应用系统 随着计算机多重处理技术和多道程序的引入,就有可能使这些任务并发地执行,使得紧急的任务可以中断正在执行的任务,从而解决程序顺序执行所带来的问题。 在这里可以看到,任务的运行具有如下几种基本特征: 动态特征:任务是某种类型的一个活动,它由创建而产生,由调度而执行,得不到资源而暂停,最后由运行结束或撤消而消亡,因此,任务具有生命期,是动态产生和消亡的。 并发特征:若干个任务并发执行,互相竞争CPU的控制权,必须用某种调度算法来决定何时停止一个任务的工作,转而为另一个任务提供服务。 独立特征:任务是一个独立的运行单位,有自己必须执行的程序、自己的程序计数器、加工自己的数据、有自己的输入输出。它是系统进行资源分配和调度的独立单位。 异步特征:各个任务按照自己独立的速度向前推进,它们的执行是异步的,有多个任务经常需要同步地协调处理某个控制目标或工作对象。系统需要为它们提供一套通信及同步互斥机制。 结构特征:任务有其运行状态,必须为每一个任务配置一个任务控制块TCB、任务所要执行的程序代码及任务所要加工处理的数据集组成。 3.1.3 实时任务的分解   把一个实时应用问题分解为多个任务,可加快执行的速度,有效地利用系统资源,但是,过度的分解将使系统中有大量的任务,经常进行任务的切换,任务和任务之间,还需进行很多同步和互斥控制,将增加大量的系统服务工作,降低系统的速度和有效性,因此,把一个实时应用问题分解为若干个任务时,还必须进行各种综合平衡和折中,有时,把两个操作合并在一起处理,效果可能要好一些,有时,则必须分开处理,这都必须依赖于实时应用的特征。 任务分解的准则: 1、时间原则,2、 异步原则,3、优先性原则,4、清晰度和可维护性原则。 3.1.4 实时任务的状态 静止状态:任务建立之后,但尚未被启动,不具备运行条件,这时就认为任务处于静止状态。 运行状态:任务正在占用CPU运行。 就绪状态:任务已具备运行条件,准备运行,但CPU被别的任务所占有。 挂起状态:任务因某中原因,无法继续运行。 3.2 实时任务调度   实时任务的调度,就是当系统有多个任务时,如何确定由哪一个任务实际占有CPU。 实时任务调度牵涉到调度的策略和调度的机制问题,不同实时应用系统的用户,可能希望用不同的策略来进行调度,因此,对于实时操作系统来说,最好是把调度策略和调度机制分开。 实时任务调度策略: 3.2.1 速率单调算法   速率单调算法是一个经典的算法,它是针对那些响应和处理周期性事件的实时任务的,它事先为每个这样的实时任务分配一个与事件频率成正比的优先级。例如,周期为20ms的实时任务,优先级为50;而周期为100ms的实时任务,优先级为10,运行时,调度程序总是调度优先级最高的就绪任务。 实现时,就绪队列中的所有任务按照优先级Priority排队,优先级最高的任务排在队首,当处于运行态的任务,由于某种原因挂起时,只要把就绪队列的首元素从就绪队列中取下,使运行任务指针pRunTask指向该元素即可,如果是处于其他状态的任务变为就绪状态,而挂于就绪队列时,则必须对运行任务和就绪队列首元素的任务进行

文档评论(0)

wendang_12 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档