实时 Linu 架构剖析

上传人:工**** 文档编号:456692623 上传时间:2022-08-08 格式:DOCX 页数:7 大小:89.19KB
返回 下载 相关 举报
实时 Linu 架构剖析_第1页
第1页 / 共7页
实时 Linu 架构剖析_第2页
第2页 / 共7页
实时 Linu 架构剖析_第3页
第3页 / 共7页
实时 Linu 架构剖析_第4页
第4页 / 共7页
实时 Linu 架构剖析_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《实时 Linu 架构剖析》由会员分享,可在线阅读,更多相关《实时 Linu 架构剖析(7页珍藏版)》请在金锄头文库上搜索。

1、Linux 的速度或效率都非常不错,只是在一些情况下,这样的速度还不能满足 需求。我们需要的是在特定的容差范围内确定性地满足调度期限的能力。本文将 揭示各种实现实时 Linux 的可选方案以及它们如何实现实时性 从早期的模 仿虚拟化解决方案的架构到如今标准 2.6 内核中可用的选项。 本文探索了一些支持实时特性的 Linux 架构,并探讨了实时架构的含意是什 么。有许多种解决方案赋予 Linux 实时能力,本文将对瘦内核(或微内核)方 法、超微内核方法以及资源内核(resource-kernel)方法进行考查。最后,描述 了标准2.6内核的实时功能,并向您示范如何启用并使用这种功能。 实时的定

2、义及要求下列实时的定义为探讨实时Linux架构提供了基础。定义由Donal Gil lies 在Real time Compu ting FAQ中提出(参见参考资料的链接)。实时系统指系统的计算正确性不仅取决于计算的逻辑正确性,还取决于产生结果 的时间。如果未满足系统的时间约束,则认为系统失效。换句话说,系统面对变化的负载(从最小到最坏的情况)时必须确定性地保证满 足时间要求。注意,上述定义并未提到性能,原因是实时性与速度关系不大:它 与可预见性有关。例如,使用快速的现代处理器时,Linux可以提供20 “微 秒的典型中断响应,但有时候响应会变得很长。这是一个基本的问题:并不是 Linux 不

3、够快或效率不够高,而是因为它不能提供确定性。一些例子将演示全部这些内容的含意。图 1 显示的是中断延迟指标。当中断到 达时(event), CPU发生中断并转入中断处理。执行一些工作以确定发生了什 么事件,然后执行少量工作分配必需的任务以处理此事件(上下文切换)。中断 到达与分发必需任务之间的时间(假设分配的是优先级最高的任务)称为响应时 间。对于实时性要求,响应时间应是确定的并应当在已知的最坏情况的时间内完 成。图1.中断延迟和响应时间EventResponseOther activityTask responseto event上下文切换发生中断后分配新任务的过 程中隐含着上下文切换这 个

4、过程在中断时存储CPU 的当前状态,然后恢复一项 给定任务的状态。上下文切 换依赖于操作系统及底层的 处理器架构。T me有关这个过程的一个例子就是目前汽车中使用的气囊。当报告车辆碰撞的传感器 中断 CPU 后,操作系统应快速地分配展开气囊的任务,并且不允许其他非实时 处理进行干扰。晚一秒钟展开气囊比没有气囊的情况更糟糕。除为中断处理提供确定性外,实时处理也需要支持周期性间隔的任务调度。考虑 图 2。本图演示了周期性任务调度。大量控制系统要求周期性采样与处理。某个 特定任务必须按照固定的周期(P)执行,从而确保系统的稳定性。考虑一下汽 车的防抱死系统(ABS)。控制系统对车辆的每个车轮的转速进

5、行采样(每秒最 多 20 次)并控制每个制动器的压力(防止它锁死)。为了保持控制系统的正常 工作,传感器的采样与控制必须按照一定的周期间隔。这意味着必须抢占其他处 理,以便 ABS 任务能按照期望的周期执行。图 2. 周期性任务调度硬实时与软实时系统 能够在指定的期限完成实时任务(即便在最坏的处理负载下也能如此)的操作系 统称为硬实时 系统。但并不是任何情况下都需要硬实时支持。如果操作系统在 平均情况下能支持任务的执行期限,则称它为软实时 系统。硬实时系统指超过 截止期限后将造成灾难性后果(例如展开气囊过晚或制动压力产生的滑行距离过 长)的系统。软实时系统超过截止期限后并不会造成系统整体失败(

6、如丢失视频 中的一帧)。现在您已经对实时性要求有了一些深入了解,让我们查看一些实时 Linux 架构 各支持哪个级别的实时性以及如何做到这一点。晋回页首瘦内核方法瘦内核(或微内核)方法使用了第二个内核作为硬件与 Linux 内核间的抽象接 口(见图 3)。非实时 Linux 内核在后台运行,作为瘦内核的一项低优先级任 务托管全部非实时任务。实时任务直接在瘦内核上运行。图 3. 硬实时的瘦内核方法瘦内核主要用于(除了托管实时任务外)中断管理。瘦内核截取中断以确保非实 时内核无法抢占瘦内核的运行。这允许瘦内核提供硬实时支持。 虽然瘦内核方法有自己的优势(硬实时支持与标准 Linux 内核共存),但

7、这种 方法也有缺点。实时任务和非实时任务是独立的,这造成了调试困难。而且,非 实时任务并未得到 Linux 平台的完全支持(瘦内核执行称为瘦 的一个原因)。 使用这种方法的例子有 RTLinux (现在由 Wind River Systems 专有),实时应 用程序接口( RTAI )和Xenomai。晋回页首超微内核方法 这里瘦内核方法依赖于包含任务管理的最小内核,而超微内核法对内核进行更进 一步的缩减。通过这种方式,它不像是一个内核而更像是一个硬件抽象层( HAL)。 超微内核为运行于更高级别的多个操作系统提供了硬件资源共享(见图 4)。因 为超微内核对硬件进行了抽象,因此它可为更高级别的

8、操作系统提供优先权,从 而支持实时性。图 4. 对硬件进行抽象的超微内核法注意,这种方法和运行多个操作系统的虚拟化方法有一些相似之处。使用这种方 法的情况下,超微内核在实时和非实时内核中对硬件进行抽象。这与 hypervisor 从客户(guest)操作系统对裸机进行抽象的方式很相似。更多信息参见参考资 料。关于超微内核的示例是操作系统的Adap tive Domain Environment for Operating Systems (ADEOS)。 ADEOS 支持多个并发操作系统同步运行。当发生 硬件事件后,ADEOS对链中的每个操作系统进行查询以确定使用哪一个系统处理 事件。晋回页首

9、资源内核法 另一个实时架构是资源内核法。这种方法为内核增加一个模块,为各种资源提供 预留(reservation)。这种机制保证了对时分复用(time-multiplexed)系统 资源的访问(CPU、网络或磁盘带宽)。这些资源拥有多个预留参数,如循环周 期、需要的处理时间(也就是完成处理所需的时间),以及截止时间。资源内核提供了一组应用程序编程接口(API),允许任务请求这些预留资源(见 图 5)。然后资源内核可以合并这些请求,使用任务定义的约束定义一个调度, 从而提供确定的访问(如果无法提供确定性则返回错误)。通过调度算法,如 Earliest-Deadline-First (EDF),内

10、核可以处理动态的调度负载。图 5. 实现资源预留的资源内核法Real-lime tasksUser spaceNon neal-lime tasksResourcel nux kernelkernelHardware资源内核法实现的一个示例是CMU公司的Linux/RK,它把可移植的资源内核集 成到 Linux 中作为一个可加载模块。这种实现演化成商用的 TimeSysLinux/RT 产品。晋回页首标准 2.6 内核中的实时 目前探讨的这些方法在架构上都很有趣,但是它们都在内核的外围运行。然而, 如果对标准 Linux 内核进行必要的修改使其支持实时性,结果会怎么样呢? 今天,在 2.6 内

11、核中,通过对内核进行简单配置使其完全可抢占(见图 6), 您就可以得到软实时功能。在标准 2.6 Linux 内核中,当用户空间的进程执行 内核调用时(通过系统调用),它便不能被抢占。这意味着如果低优先级进程进 行了系统调用后,高优先级进程必须等到调用结束后才能访问CPU。新的配置选 项 CONFIG_PREEMPT 改变了这一内核行为,在高优先级任务可用的情况下(即使 此进程正在进行系统调用),它允许进程被抢占。图 6 允许抢占的标准 2.6 Linux 内核但这种配置选项也是一种折衷。虽然此选项实现了软实时性能并且即使在负载条件下也可使操作系统顺利地运行,但这样做也付出了代价。代价就是略微

12、减低了 吞吐量以及内核性能,原因是 CONFIG_PREEMPT 选项增加了开销。这种选项对桌 面和嵌入式系统而言是有用的,但并不是在任何 场景下都有用(例如,服务器)。在 2.6 内核中另一项有用的配置选项是高精度 定时器。这个新选项允许定时器以1S的精度 运行(如果底层硬件支持的话),并通过红黑树 实现对定时器的高效管理。通过红黑树,可以使 用大量的定时器而不会对定时器子系统(O(log n)的性能造成影响。只需要一点额外的工作,您就可以通过新的0(1)调度程序2.6内核中新的0(1)调度 程序对性能有很大的提升, 即使存在很多任务的情况下 也是如此。不管需要运行的 任务有多少个,新的调度

13、程 序都会在有限的时间内运 行。您可以在参考资料一 节中找到这种调度的更多信 息以及它如何进行工作。PREEMPT_RT 补丁实现硬实时 PREEMPT_RT 补丁 提供了多项修改,可实现硬实时支持。其中一些 修改包括重新实现一些内核锁定原语,从而实现 完全可抢占,实现内核互斥的优先级继承,并把中断处理程序转换为内核线程以 实现线程可抢占。十回页首结束语 Linux 不仅是一个实验和描述实时算法的理想平台,目前在标准的 2.6 内核中 也实现了实时功能。从标准内核中您可以实现软实时功能,再执行一些额外的工 作(内核补丁)您就可以构建硬实时应用程序。本文简要介绍了一些为 Linux 内核提供实时计算的技术。很多早期的尝试使用 瘦内核方法把实时任务与标准内核分离。后来,出现了超微内核法,它与如今的 虚拟化解决方案中使用的hypervisor非常相似。最后,Linux内核提供了自己 的实时方法,包括软实时和硬实时。虽然本文只是对Linux的实时方法进行了简单介绍,但参考资料一节中提供

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 机械/制造/汽车 > 电气技术

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号