改善嵌入式Linux实时性能的方法研究.pdfVIP

改善嵌入式Linux实时性能的方法研究.pdf

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
改善嵌入式 Linux 实时性能的方法研究 摘要:分析了 Linux 的实时性,针对其在实时应用中的技术障碍,在参考了与此相关研究 基础上,从三方面提出了改善 Linux 实时性能的改进措施。为提高嵌入式应用响应时间精 度,提出两种细化 Linux 时钟粒度方法;为增强系统内核对实时任务的响应能力,采用插入 抢占点和修改内核法增强 Linux 内核的可抢占性;为保证硬实时任务的时限要求,把原 Linux 的单运行队列改为双运行队列,硬实时任务单独被放在一个队列中,并采用 MLF 调度 算法代替原内核的 FIFO 调度算法。 关键词:Linux ;实时性;调度策略;抢占 1 引言 目前,无论是在日常生活,还是在工业控制,航空航天,军事等方面,嵌入式系统 都有着非常广泛的应用。嵌入式系统目前主要有:Windows CE、VxWorks、QNX 等,它们 都具有较好的实时性、系统可靠性、任务处理随机性等优点,但是它们的价格普遍偏高。 而嵌入式 Linux 以其非常低廉的价格,可以大大的降低成本,逐渐成为嵌入式操作系统的 首选。但是,作为通用操作系统的 Linux ,由于其在实时应用领域的技术障碍,要应用在嵌 入式领域,还必须对 Linux 内核作必要的改进。许多嵌入式设备都要求与外部环境有硬实 时的交互能力,将最初按照分时系统目标设计的 Linux 改造成能支持硬实时性的操作系统 显得十分重要。幸运的是, Linux 及其相关项目的开放源码特征为深入研究其内核并加以改 造提供了可行性, 可以修改 Linux 内核中的各个模块以达到满足嵌入式应用的需求,提高 软件方面的开发速度。目前,改善 Linux 内核的设计与实现,使其适用于实时领域吸引了 许多研究和开发人员的注意力[1-4]。常用的实时性改造方法是采用双核方法,这种方法的 弊端在于实时任务的开发是直接面向提供精确实时服务的小实时核心的,而不是功能强大 的常规 Linux 核心。基于此,近年来修改核的方法越来越受到科研人员的重视,这种方法 是基于已有 Linux 系统对于软件开发的支持,进行源代码级修改而使 Linux 变成一个真正 的实时操作系统。本文分析了标准 Linux 在实时应用中的技术障碍,参考了修改核方法的 思想,从内核时钟管理、内核的抢占性、内核调度算法三方面论述了改善标准 Linux 实时 性能的方法。 Linux 作为一个通用操作系统,主要考虑的是调度的公平性和吞吐量等指标。然而,在实 时方面它还不能很好地满足实时系统方面的需要,其本身仅仅提供了一些实时处理的支持 ,这包括支持大部分POSIX 标准中的实时功能,支持多任务、多线程,具有丰富的通信机 制等;同时也提供了符合 POSIX 标准的调度策略,包括 FIFO 调度策略、时间片轮转调度 策略和静态优先级抢占式调度策略。Linux 区分实时进程和普通进程,并采用不同的调度 策略 为了同时支持实时和非实时两种进程,Linux 的调度策略简单讲就是优先级加上时间片。 当系统中有实时进程到来时,系统赋予它最高的优先级。体现在实时性上,Linux 采用了 两种简单的调度策略,即先来先服务调度(SCHED-FIFO )和时间片轮转调度(SCHED-RR )。具体是将所有处于运行状态的任务挂接在一个 run-queue 队列中,并将任务分成实时和 非实时任务,对不同的任务,在其任务控制块 task-struct 中用一个 policy 属性来确定其调 度策略。对实时性要求较严的硬实时任务采用 SCHED-FIFO 调度,使之在一次调度后运行 完毕。对普通非实时进程,Linux 采用基于优先级的轮转策略 尽管 Linux 本身提供了一些支持实时性的机制,然而,由于 Linux 系统是以高的吞吐量和 公平性为追求目标,基本上没有考虑实时应用所要满足的时间约束,它只是提供了一些相 对简单的任务调度策略。因此,实时性问题是将 Linux 应用于嵌入式系统开发的一大障碍, 无法在硬实时系统中得到应用。Linux 在实时应用中的技术障碍具体表现 (1)Linux 系统时钟精度太过粗糙,时钟中断周期为 10ms ,使得其时间粒度过大,加大 了任务响应延迟 (2) Linux 的内核是不可抢占的, 当一个任务通过系统调用进入内核态运行时,一个具有 更高优先级的进程,只有等待处于核心态的系统调用返回后方能执行,这将导致优先级逆 转。实时任务执行时间的不确定性,显然不能满足硬实时应用的要求 (3 ) Linux 采用对临界区操作时屏蔽中断的方式,在中断处理中是不允许进行任务调度 的,从而抑制了系统及时响应外部操作的能力 (4 ) 缺乏

文档评论(0)

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

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

1亿VIP精品文档

相关文档