嵌入式实时操作系统调度机制研究.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式实时操作系统调度机制研究

嵌入式实时操作系统调度机制研究目前,嵌入式系统在各个领域得到了广泛应用,与社会经济发展、科技进步息息相关。嵌入式系统的核心能力是智能化处理,来自于其中嵌入式实时软件的控制逻辑,而复杂的逻辑一般依托嵌入实时操作系统(Embedded Real Time Operating System,以下简称ERTOS)来实现。因此,ERTOS是整个嵌入式系统的核心支撑平台,是其重要组成部分。 只有合理使用ERTOS才能开发出满足现场功能、性能需求,可靠、高效的嵌入式实时软件。而达到上述能力的前提是对ERTOS内部实现机制与算法的完整理解。本文将对嵌入式实时操作系统的核心-调度内核进行深入分析,以帮助嵌入式系统开发人员正确使用ERTOS。 1 调度内核的任务管理 1.1 任务的概念 实时应用中的复杂控制软件可以根据实时性要求划分为多个部分,并分别通过任务来实现,而任务的具体实现是执行体函数。ERTOS支持同步和异步两种任务执行方式,其调度内核提供任务切换机制,负责组织任务的执行顺序。 1.2 任务状态模型 由于处理器在任一时刻只能执行一条指令,而同一时刻会有多个任务竞争处理器使用权,因此任务会在不同状态间切换。状态切换时ERTOS调度内核负责当前任务上下文的保存。 任务有四种状态: 运行态 在运行态时任务掌握CPU使用权,任务指令得以执行。任一时刻只有一个任务处于运行态。 就绪态 就绪态是任务进入运行态的必要条件,在此状态下任务已经准备就绪,只需得到处理器使用权就可转为运行态。多个任务处于此状态时,由调度内核决定下一个将要执行的任务。 等待态 等待状态的任务未被执行,需要等待某一事件才能触发运行。 挂起态 处于挂起态的任务是静止的,可以被再次激活,从头开始运行。 只有当任务自己结束自己时(self-terminatian)才发生任务终止,任务不能从挂起态直接转为等待态。 1.3 任务切换机制 可认为调度内核也是一种能被任务占用和释放的资源。即,任务可通过占有调度权来避免任务切换。 1.4 任务优先级 最低任务优先级值为0,优先级数值越大,任务优先级越高。ERTOS支持多个相同优先级的任务。同一优先级的任务由激活顺序决定其启动顺序,处于等待状态的任务不会挂起后续的相同优先级任务。 当前优先级等级的就绪任务列表中,第一个任务为抢占任务。从等待状态释放出来的任务为就绪任务队列中排在最后的最新任务。 图2为优先级等级调度方法的一个示例。多个具有不同优先级的任务处于就绪态,其中,有三个任务的优先级为3,一个优先级为2,一个优先级为1,还有两个优先级为0。根据请求顺序,等待时间最长的任务位于队列的低端。处理器刚处理完并终止了一个任务。调度内核选择下一个要处理的任务(优先级3,第一个队列)。只有当所有更高优先级的任务离开运行态或就绪态后,即任务启动并由于终止或者转为等待态而从队列中删除后,优先级2的任务才能被处理。 以下是决定下一个执行任务的基本步骤: ? 搜索所有处于就绪或运行态任务的集合。 ? 在处于就绪或运行态任务的集合中,找出具有最高优先级任务的集合。 ? 在处于就绪或运行态并具有最高优先级任务的集合中,找出等待时间最长的任务。 ? 1.5 调度策略 1.5.1 完全抢占式调度 完全抢占式调度是指处于运行态的任务能在任一时刻被中断,只要有高优先级的任务就绪,当前处于运行态的任务就被转为就绪态。此时任务的上下文会被保存,以便被抢占的任务能在被抢占的位置继续执行。 在完全抢占式调度方式下,响应时间与低优先级任务的运行时间无关;多个任务共享的资源在使用时需要保护。 在图3中,低优先级的任务2并没有延迟高优先级任务1的调度。 以下几种情况,调度内核将被激活: ? 成功终止一个任务; ? 成功终止一个任务,并且激活另一个任务; ? 来自任务级的API激活任务(如ActivateTask,或者在定义了任务激活的情况下消息通知、警告到达时); ? 任务状态转换为等待态; ? 任务级的资源释放; ? 从中断级返回到任务级 ? 在中断服务程序的执行过程中,不会发生重调度。 ? 使用完全抢占式调度的应用软件不需要使用进入调度内核的API(Schedule),但其它调度方式会用到该服务。为了使应用软件在不同的调度策略下可移植,可以在分配CPU使用权的位置通过调用Schedule来进行强制调度。 1.5.2 非抢占式调度 只有通过调用操作系统API才能进行任务切换的调度方式称作非抢占式调度。非抢占式调度会影响系统的实时性。例如:当一个运行的低优先级任务处于不可抢占阶段时,会使高优先级任务延迟到下一个重调度时刻开始运行。非抢

文档评论(0)

docman126 + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:7042123103000003

1亿VIP精品文档

相关文档