您的位置 首页 数字

你了解Linux实时架构?

你了解Linux实时架构?-实时系统指系统的计算正确性不仅取决于计算的逻辑正确性,还取决于产生结果的时间。如果未满足系统的时间约束,则认为系统失效。

Linux® 的速度或功率都十分不错,只是在一些状况下,这样的速度还不能满意需求。咱们需求的是在特定的容差范围内确认性地满意调度期限的才干。本文将提醒各种完结实时 Linux 的可选计划以及它们怎么完结实时性 — 从前期的仿照虚拟化解决计划的架构到现在规范 2.6 内核中可用的选项。

本文探究了一些支撑实时特性的 Linux 架构,并讨论了实时架构 的含义是什么。有许多种解决计划赋予 Linux 实时才干,本文将对瘦内核(或微内核)办法、超微内核办法以及资源内核(resource-kernel)办法进行考察。最终,描绘了规范 2.6 内核的实时功用,并向您演示怎么启用并运用这能。

实时的界说及要求

下列实时 的界说为讨论实时 Linux 架构供给了根底。界说由 Donal Gillies 在 Realtime CompuTIng FAQ 中提出。

实时体系指体系的核算正确性不只取决于核算的逻辑正确性,还取决于产生成果的时刻。假如未满意体系的时刻束缚,则以为体系失效。

上下文切换

产生中止后分配新使命的进程中隐含着上下文切换。这个进程在中止时存储 CPU 的当时状况,然后康复一项给定使命的状况。上下文切换依赖于操作体系及底层的处理器架构。

换句话说,体系面临改变的负载(从最小到最坏的状况)时有必要确认性地确保满意时刻要求。留意,上述界说并未说到功用,原因是实时性与速度关系不大:它与可预见性有关。例如,运用快速的现代处理器时,Linux 能够供给 20 μ 微秒的典型中止呼应,但有时分呼应会变得很长。这是一个根本的问题:并不是 Linux 不够快或功率不够高,而是由于它不能供给确认性。

一些比如将演示悉数这些内容的含义。图 1 显现的是中止推迟目标。当中止抵达时(event),CPU 产生中止并转入中止处理。履行一些作业以确认产生了什么事情,然后履行少数作业分配必需的使命以处理此事情(上下文切换)。中止抵达与分发必需使命之间的时刻(假定分配的是优先级最高的使命)称为呼应时刻。关于实时性要求,呼应时刻应是确认的并应当在已知的最坏状况的时刻内完结。

图 1. 中止推迟和呼应时刻

有关这个进程的一个比如便是现在轿车中运用的气囊。当陈述车辆磕碰的传感器中止 CPU 后,操作体系应快速地分配打开气囊的使命,而且不答应其他非实时处理进行搅扰。晚一秒钟打开气囊比没有气囊的状况更糟糕。

除为中止处理供给确认性外,实时处理也需求支撑周期性间隔的使命调度。考虑图 2。本图演示了周期性使命调度。许多操控体系要求周期性采样与处理。某个特定使命有必要依照固定的周期(p)履行,然后确保体系的稳定性。考虑一下轿车的防抱死体系(ABS)。操控体系对车辆的每个车轮的转速进行采样(每秒最多 20 次)并操控每个制动器的压力(避免它死)。为了坚持操控体系的正常作业,传感器的采样与操控有必要依照必定的周期间隔。这意味着有必要抢占其他处理,以便 ABS 使命能依照希望的周期履行。

图 2. 周期性使命调度

硬实时与软实时体系

能够在指定的期限完结实时使命(即便在最坏的处理负载下也能如此)的操作体系称为硬实时 体系。但并不是任何状况下都需求硬实时支撑。假如操作体系在均匀状况下能支撑使命的履行期限,则称它为软实时 体系。硬实时体系指超越截止期限后将形成灾难性成果(例如打开气囊过晚或制动压力产生的滑行间隔过长)的体系。软实时体系超越截止期限后并不会形成体系全体失利(如丢掉视频中的一帧)。

现在您现已对实时性要求有了一些深化了解,让咱们检查一些实时 Linux 架构各支撑哪个等级的实时性以及怎么做到这一点。

瘦内核办法

瘦内核(或微内核)办法运用了第二个内核作为硬件与 Linux 内核间的笼统接口(见图 3)。非实时 Linux 内核在后台运转,作为瘦内核的一项低优先级使命保管悉数非实时使命。实时使命直接在瘦内核上运转。

图 3. 硬实时的瘦内核办法

瘦内核首要用于(除了保管实时使命外)中止办理。瘦内核截取中止以确保非实时内核无法抢占瘦内核的运转。这答应瘦内核供给硬实时支撑。

尽管瘦内核办法有自己的优势(硬实时支撑与规范 Linux 内核共存),但这种办法也有缺陷。实时使命和非实时使命是独立的,这形成了调试困难。而且,非实时使命并未得到 Linux 渠道的彻底支撑(瘦内核履行称为瘦 的一个原因)。

运用这种办法的比如有 RTLinux (现在由 Wind River Systems 专有),实时运用程序接口(RTAI)和 Xenomai。

超微内核办法

这儿瘦内核办法依赖于包含使命办理的最小内核,而超微内核法对内核进行更进一步的减缩。经过这种办法,它不像是一个内核而更像是一个硬件笼统层(HAL)。超微内核为运转于更高等级的多个操作体系供给了硬件资源共享(见图 4)。由于超微内核对硬件进行了笼统,因而它可为更高等级的操作体系供给优先权,然后支撑实时性。

图 4. 对硬件进行笼统的超微内核法

留意,这种办法和运转多个操作体系的虚拟化办法有一些类似之处。运用这种办法的状况下,超微内核在实时和非实时内核中对硬件进行笼统。这与 hypervisor 从客户(guest)操作体系对裸机进行笼统的办法很类似。

关于超微内核的示例是操作体系的 AdapTIve Domain Environment for OperaTIng Systems (ADEOS)。ADEOS 支撑多个并发操作体系同步运转。当产生硬件事情后,ADEOS 对链中的每个操作体系进行查询以确认运用哪一个体系处理事情。

资源内核法

另一个实时架构是资源内核法。这种办法为内核添加一个模块,为各种资源供给预留(reservaTIon)。这种机制确保了对时分复用(time-multiplexed)体系资源的拜访(CPU、网络或磁盘带宽)。这些资源具有多个预留参数,如循环周期、需求的处理时刻(也便是完结处理所需的时刻),以及截止时刻。

资源内核供给了一组运用程序编程接口(API),答应使命恳求这些预留资源(见图 5)。然后资源内核能够兼并这些恳求,运用使命界说的束缚界说一个调度,然后供给确认的拜访(假如无法供给确认性则回来过错)。经过调度算法,如 Earliest-Deadline-First (EDF),内核能够处理动态的调度负载。

图 5. 完结资源预留的资源内核法

资源内核法完结的一个示例是 CMU 公司的 Linux/RK,它把可移植的资源内核集成到 Linux 中作为一个可加载模块。这种完结演化成商用的 TimeSys Linux/RT 产品。

规范 2.6 内核中的实时

现在讨论的这些办法在架构上都很风趣,可是它们都在内核的外围运转。但是,假如对规范 Linux 内核进行必要的修正使其支撑实时性,成果会怎么样呢?

今日,在 2.6 内核中,经过对内核进行简略装备使其彻底可抢占(见图 6),您就能够得到软实时功用。在规范 2.6 Linux 内核中,当用户空间的进程履行内核调用时(经过体系调用),它便不能被抢占。这意味着假如低优先级进程进行了体系调用后,高优先级进程有必要比及调用完毕后才干拜访 CPU。新的装备选项 CONFIG_PREEMPT 改变了这一内核行为,在高优先级使命可用的状况下(即便此进程正在进行体系调用),它答应进程被抢占。

图 6 答应抢占的规范 2.6 Linux 内核

但这种装备选项也是一种折衷。尽管此选项完结了软实时功用而且即便在负载条件下也可使操作体系顺畅地运转,但这样做也付出了价值。价值便是稍微减低了吞吐量以及内核功用,原因是 CONFIG_PREEMPT 选项添加了开支。这种选项对桌面和嵌入式体系而言是有用的,但并不是在任何场景下都有用(例如,服务器)。

新的 O(1) 调度程序

2.6 内核中新的 O(1) 调度程序对功用有很大的提高,即便存在许多使命的状况下也是如此。不论需求运转的使命有多少个,新的调度程序都会在有限的时刻内运转。

在 2.6 内核中另一项有用的装备选项是高精度定时器。这个新选项答应定时器以 1μs 的精度运转(假如底层硬件支撑的话),并经过红黑树完结对定时器的高效办理。经过红黑树,能够运用许多的定时器而不会对定时器子体系(O(log n))的功用形成影响。

只需求一点额定的作业,您就能够经过 PREEMPT_RT 补丁完结硬实时。PREEMPT_RT 补丁供给了多项修正,可完结硬实时支撑。其间一些修正包含从头完结一些内核确定原语,然后完结彻底可抢占,完结内核互斥的优先级承继,并把中止处理程序转换为内核线程以完结线程可抢占。

完毕语

Linux 不只是一个试验和描绘实时算法的抱负渠道,现在在规范的 2.6 内核中也完结了实时功用。从规范内核中您能够完结软实时功用,再履行一些额定的作业(内核补丁)您就能够构建硬实时运用程序。

本文扼要介绍了一些为 Linux 内核供给实时核算的技能。许多前期的测验运用瘦内核办法把实时使命与规范内核别离。后来,呈现了超微内核法,它与现在的虚拟化解决计划中运用的 hypervisor 十分类似。最终,Linux 内核供给了自己的实时办法,包含软实时和硬实时。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/shuzi/99878.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部