实时Linux架构剖析

上传人:小** 文档编号:47035187 上传时间:2021-12-16 格式:DOC 页数:8 大小:130KB
收藏 版权申诉 举报 下载
实时Linux架构剖析_第1页
第1页 / 共8页
实时Linux架构剖析_第2页
第2页 / 共8页
实时Linux架构剖析_第3页
第3页 / 共8页
资源描述:

《实时Linux架构剖析》由会员分享,可在线阅读,更多相关《实时Linux架构剖析(8页珍藏版)》请在装配图网上搜索。

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

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

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

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

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

6、如丢失视频 中的一帧)。现在您已经对实时性要求有了一些深入了解,让我们查看一些实时Lin ux架构各支持哪个级别的实时性以及如何做到这一点。回页首瘦内核方法瘦内核(或微内核)方法使用了第二个内核作为硬件与Lin ux内核间的抽象接口(见图3 )。非实时Linux内核在后台运行,作为瘦内核的一项低优先级任 务托管全部非实时任务。实时任务直接在瘦内核上运行。图3.硬实时的瘦内核方法U&er space(Non real-time tasks)Linux kernei Non real-time Real-time taaksThin kernelHardware瘦内核主要用于(除了托管实时

7、任务外)中断管理。瘦内核截取中断以确保非实 时内核无法抢占瘦内核的运行。这允许瘦内核提供硬实时支持。虽然瘦内核方法有自己的优势(硬实时支持与标准Lin ux内核共存),但这种方法也有缺点。实时任务和非实时任务是独立的,这造成了调试困难。而且,非 实时任务并未得到Linux平台的完全支持(瘦内核执行称为瘦的一个原因)。使用这种方法的例子有 RTLinux (现在由 Wind River Systems专有),实时应 用程序接口( RTAI)和Xenomai。回页首超微内核方法这里瘦内核方法依赖于包含任务管理的最小内核, 而超微内核法对内核进行更进 一步的缩减。通过这种方式,它不像是一个内核而更像

8、是一个硬件抽象层 (HAL。超微内核为运行于更高级别的多个操作系统提供了硬件资源共享 (见图4)。因 为超微内核对硬件进行了抽象,因此它可为更高级别的操作系统提供优先权, 从 而支持实时性。图4.对硬件进行抽象的超微内核法User-space (Non real-time tasks)User-space (Non real-limeReal-time tacksKernelKernelReal-time kernelNano-kemel i Intenupt dispatcherHa«lware注意,这种方法和运行多个操作系统的虚拟化方法有一些相似之处。使用这种方法的情况下,超微内

9、核在实时和非实时内核中对硬件进行抽象。这与hypervisor从客户(guest)操作系统对裸机进行抽象的方式很相似。更多信息参见参考资 料。关于超微内核的示例是操作系统的 Adaptive Doma in En viro nment for Operating Systems (ADEOS)。ADEOS支持多个并发操作系统同步运行。当发生 硬件事件后,ADEOS对链中的每个操作系统进行查询以确定使用哪一个系统处理 事件。回页首资源内核法另一个实时架构是资源内核法。这种方法为内核增加一个模块,为各种资源提供 预留(reservation )。这种机制保证了对时分复用(time-multiple

10、xed )系统 资源的访问(CPU网络或磁盘带宽)。这些资源拥有多个预留参数,如循环周 期、需要的处理时间(也就是完成处理所需的时间),以及截止时间。资源内核提供了一组应用程序编程接口(API),允许任务请求这些预留资源(见图5 )。然后资源内核可以合并这些请求,使用任务定义的约束定义一个调度, 从而提供确定的访问(如果无法提供确定性则返回错误)。通过调度算法,如 Earliest-Deadli ne-First (EDF),内核可以处理动态的调度负载。图5.实现资源预留的资源内核法Real -time tatktUser spacereaMime tasksResourceunux kern

11、elkernelHarctware资源内核法实现的一个示例是 CMU公司的Linux/RK,它把可移植的资源内核集 成到Linux中作为一个可加载模块。这种实现演化成商用的TimeSys Linu x/RT 产品。回页首标准2.6内核中的实时目前探讨的这些方法在架构上都很有趣,但是它们都在内核的外围运行。然而, 如果对标准Linux内核进行必要的修改使其支持实时性,结果会怎么样呢? 今天,在2.6内核中,通过对内核进行简单配置使其完全可抢占(见图 6), 您就可以得到软实时功能。在标准 2.6 Linux 内核中,当用户空间的进程执行 内核调用时(通过系统调用),它便不能被抢占。这意味着如果低

12、优先级进程进 行了系统调用后,高优先级进程必须等到调用结束后才能访问 CPU。新的配置选 项CONFIG_PREEMP改变了这一内核行为,在高优先级任务可用的情况下(即使 此进程正在进行系统调用),它允许进程被抢占。Real -time processUser spacereaMime process图6允许抢占的标准2.6 Linux 内核Linux kernel(preemptibleReal -time taskNon real-ume taskHarctware但这种配置选项也是一种折衷。虽然此选项实现了软实时性能并且即使在负载条 件下也可使操作系统顺利地运行,但这样做也付出了代价。代

13、价就是略微减低了 吞吐量以及内核性能,原因是CONFIG_PREEMPi项增加了开销。这种选项对桌新的O(1)调度程序2.6内核中新的O(1)调度 程序对性能有很大的提升, 即使存在很多任务的情况下 也是如此。不管需要运行的 任务有多少个,新的调度程 序都会在有限的时间内运 行。您可以在参考资料一 节中找到这种调度的更多信 息以及它如何进行工作。面和嵌入式系统而言是有用的,但并不是在任何 场景下都有用(例如,服务器)。在2.6内核中另一项有用的配置选项是高精度 定时器。这个新选项允许定时器以1卩s的精度 运行(如果底层硬件支持的话),并通过红黑树 实现对定时器的高效管理。通过红黑树,可以使 用

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

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!