- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
rai实时调度策略研究
1 所采用的三种技术方案
linux操作系统的源代码开放,内核模块的设计和内核的高度可简性吸引了人们的注意,并在嵌入式实时操作系统领域引起了人们的注意。但是,Linux面向通用多任务分时系统的设计思想限制了它在实时环境中的应用。因此,在具体的实际应用中,需对其进行有效的实时改进,以符合嵌入式系统对操作系统实时性能的要求。
对Linux进行实时化,目前主要有以下两种技术方案:
1)对标准Linux内核进行直接修改,优化Linux的实时性能;
2)采用双内核方案:增加一个实时内核,所有有实时要求的任务都在这个实时内核上运行,标准Linux内核作为这个实时内核优先级最低的一个进程。
致力于软实时支持的方案,如RED-Linux、KURT、MV-Linux、Linux-SRT。这几种方法的实现思路大不相同,但都是通过直接修改Linux内核源代码,替换与时间或调度相关的代码段。这样的方式虽然也能够实现一定程度的实时支持,但实现的实时性能有限,且不利于在其基础上进一步改进。
致力于硬实时支持的方案,如RT-Linux和RTAI。它们在Linux内核之外单独实现了一个精简的实时内核,两个内核同时存在,依靠优先级的不同完成不同的任务。这类方案的优点是结构层次清晰,对基本的实时性能支持明确,且可预测。另外在调度机制方面已经实现了基本的优先级调度。
2 基于主机的小内核
RTAI的基本思想是:为了在Linux系统中提供对于硬实时的支持,它实现了一个微内核的小的实时操作系统,而将普通Linux系统作为一个该操作系统中的一个低优先级的任务来运行。另外普通Linux系统中的任务可以通过FIFO和实时任务进行通信。
2.1 rta的性质
RTAI是Real Time Application Interface的缩写。顾名思义它为应用程序提供了一套实时的系统调用接口。严格来讲,它还不是一个完整的操作系统,而只是一个具备了操作系统核心功能的一个实时的系统内核。RTAI是一个独立的系统内核,并且接管了系统的所有硬件资源。RTAI的任务调度器把Linux操作系统内核作为一个空闲任务,即优先级最低的任务来运行。Linux当且仅当没有实时任务运行时,才能运行。
RTAI系统结构如图1所示。
这样,RTAI在运行实时任务的同时又可以利用Linux来运行非实时的任务。在Linux和RTAI组成的双内核系统上实时任务由RTAI直接调度运行,非实时任务由Linux内核调度运行。因此RTAI和Linux的结合构成了一个可以充分发挥Linux诸多优点的完整的硬实时操作系统。
2.2 实时硬件抽象层
RTAI的关键技术是通过软件来模拟硬件的中断控制器。当Linux系统要封锁CPU的中断时时,RTAI中的实时子系统会截取到这个请求,把它记录下来,而实际上并不真正封锁硬件中断,这样就避免了由于封中断所造成的系统在一段时间没有响应的情况,从而提高了实时性。当有硬件中断到来时,RTAI截取该中断,并判断是否由实时子系统中的中断例程来处理还是传递给普通的Linux内核进行处理。
RTAI通过创建一组实时硬件抽象层RTHAL(Real Time Hardware Abstraction Laye)来解决中断捕获的问题。硬件抽象层定义了本系统同硬件之间的抽象接口,主要用来截取硬件中断,并且依据实时内核调度器的需求,重定向为基本内核任务或是实时任务。实时任务的中断将直接发送给实时任务,如果不是实时任务的中断将像往常一样发送给Linux系统。通过这种方式,RTHAL为RTAI提供了一个能完全抢占Linux的框架。
3 不同层级的调度算法
RTAI实时调度是通过调度模块schedulers()来对实时任务进行调度的。RTAI包括三种不同的基于优先级的可抢占的调度算法:单处理器算法调度算法、多处理器调度算法以及SMP调度算法,其中每一种调度算法分别对应一种CPU构架。每一种都结合了RTAI的调度服务:resume、yield、suspend、make_periodic、wait等。
本文讨论的是单处理器下的实时调度。
3.1 阶段内任务的调度
RTAI的实时调度策略主要采用了基于优先级的RM(Rate-monotonic)调度算法和EDF(Earliest Deadline First)调度算法。
1)单调速率算法RM:针对周期任务的优先级调度算法。任务的调度优先级由任务周期确定,周期越短的任务,优先级越高;周期越长的任务,优先级越低。这种定义优先级的方法容易理解,周期任务总应该在下一个周期到来之前完成当前这个周期,否则就会错过时限,较短周期的任务应该尽量先调度先完成,以免错过任务时限。
2)最早时限优先调度算法EDF
EDF算法是一种基于动态优先级调度算法,它以最后期限(D
文档评论(0)