分区实时系统Partition-RTOS

背景介绍

随着硬件体系结构的不断复杂、系统功能日益丰富、代码规模不断扩大、并发/并行处理程度的不断加深,像VxWorks-5.5, uC/OS, FreeRTOS这类传统的RTOS面临着严峻的挑战如下:

  1. 硬件设备的复杂性、多样性导致系统出错频繁

在现代操作系统中硬件相关代码占到很大的比重,例如Linux内核中大约70%的代码是设备驱动程序。操作系统的开发人员需要熟悉各种硬件体系结构以及外部设备特性,稍有不慎将导致系统崩溃。斯坦福大学的一项研究表明Linux设备驱动缺陷出现的频率比内核的其它部分高出5~7倍以上。另外就VxWorks-5.5而言,其内核稳定性在业界有口皆碑,但是随着硬件平台及外设的不断丰富,在VxWorks-5.5的USB驱动中出现的错误将直接影响到vxWorks-5.5产品的稳定性。

  1. 高度并发处理导致严重的资源竞争

RTOS内核中面临着极为频繁的竞争行为,这样竞争行为是由任务之间、中断之间、以及任务与中断之间对各类共享资源的并发访问和可重入操作引起的,对系统的可靠性带来巨大的威胁,包括原子性破坏、数据一致性破坏、死锁、优先级翻转等。据统计,由竞争引发的错误在RTOS内核中出现的比例远高于其他软件。

  1. 由于并行、时序原因引发的错误导致系统故障定位困难

相对于应用软件而言,RTOS的错误定位难度要高得多。一方面,由于RTOS是整个系统的最底层软件,缺乏其它的软件作为运行支撑,因此对其调试和测试都需要定制的工具才可以完成;另一方面由于RTOS运行的高度并发性、时序相关性导致其错误不易被发现、错误重现难度极大。因此在RTOS设计中如何嵌入观测代码、以便有效采集系统运行状态及相关数据,以便重现系统运行错误现场和运行过程,将显得极为重要。

  1. 隔离和包含手段仍显薄弱

各个应用程序在保障自身运行正确性和安全性外,还需要防止在其它模块发生错误之后可以不受错误级联反应的影响。因此需要RTOS提供一套有效的隔离与保护机制来限制错误的扩散和蔓延。现有的隔离和保护手段主要是借助于MMU和MPU对地址空间进行保护,存在保护力度大、资源消耗多、性能影响大等缺陷,仍缺乏一套有效的软硬件结合的隔离手段与机制。

面对传统RTOS可靠性的种种挑战,需要应用新的设计理念,从根本上改善与提高系统可靠性。分区操作系统PRTOS(Partition-RTOS)采用Partition架构,利用分区隔离、降低耦合、以及增加中间层的高可靠RTOS设计模型,如下图所示。

分区实时系统Partition-RTOS

在PRTOS的设计中,分区不是一个具有强制隔离性质的一组进程,而是一个虚拟的执行环境(RTE-Run Time Environment),在分区中即可以执行一个裸的应用,也可以运行一个支持多任务的操作系统级应用。事实上在PRTOS的多个不同的分区之上可以各自运行不同的操作系统。PRTOS具有扩展成为安全关键(Safety-Critical)操作系统的能力。换句话说PRTOS其实是一层最接近硬件的软件层(中间层)。尽管PRTOS没有完全兼容航空ARINC653、以及车载AUTOSAR标准,但是ARINC653和AUTOSAR的哲学思想(分隔的思想)已经潜移默化的应用在PRTOS的设计当中。

分区操作系统研究现状

RTOS安全级别可以按EAL(Evaluation Assurance Level)分为7级。国际民航或军用设备对应EAL5级以上,一般商用和家用操作系统(例如Microsoft Windows 7,Ubuntu Linux,Android)都在EAL4级以下。国际民航通用的RTCA DO-178适航认证属于EAL5+级别的安全关键(Safety-Critical)操作系统。

各RTOS供应商针对不同的市场定位,供应多种安全级别的操作系统。例如Lynuxworks发行的多种操作系统中,LynxOS-Secure是针对最高安全级别(EAL6+)的安全关键(Security-Critical)操作系统,LynxOS-178是针对中高安全级别(EAL5+)的(Security-Critical)操作系统,LynxOS-SE是针对虚拟化环境的中高安全级别操作系统。

从设计理念来讲,RTOS可以分为三类:传统的基于线程的实时操作系统(Thread-based RTOS,如uC/OS, FreeRTOS, VxWorks-5.5);基于进程的实时操作系统(Process-based RTOS,比如vxWorks-rtp, realtime-linux);基于分区的实时操作系统Partition-RTOS。目前通过DO-178适航认证的嵌入式RTOS有INTEGRITY-178B,VxWorks-178,LynxOS-178等少数几个,无一不是分区实时操作系统架构。其中Greenhill的INTEGRITY-178B已经达到EAL6+级别,是目前最高安全等级的Partition RTOS。因此设计一款安全关键(Saftey-Critical)操作系统,至少应该满足Partition-RTOS的主流设计理念,基于任务和线程的设计几乎是不可能达到安全要求的。

分区操作系统PRTOS架构

PRTOS采用嵌入式虚拟化技术实现,嵌入式虚拟化技术引入了非常小的性能开销,使得Partition的吞吐量非常接近于裸机的性能。

分区软件架构的使用主要是为了解决软件的安全性和可靠性。设计的核心原则是将系统需要隔离的模块放入分区中。空间和时间隔离是PRTOS的最重要的特性。在安全关键系统中,安全关键软件和非安全关键软件是强制隔离的,正如前文所述,这方面的先驱者是航空工业。PRTOS为不同的安全级别或者认证级别的软件提供了空间和时间隔离。通过内存保护、访问控制、以及时间触发的调度机制,使得错误被局限在出错的分区中,从而不会影响到其它的健康分区。这样可以对分区内的软件做独立的安全性认证,从而使得软件安全认证进一步被简化;同时PRTOS也为专注于安全性考虑的应用提供了灵活的系统构架。PRTOS结构图如下:

分区实时系统Partition-RTOS

分区操作系统优势

在可靠性和安全性要求比较强的嵌入式系统中采用Partition架构,有以下几点优势:

(一) Partition构架可以在同一物理设备上并行运行多种操作系统,一个典型的应用是在Partition RTOS构建的虚拟平台上同时运行提供实时任务的RTOS(如uC/OS等)和非实时任务的GPOS(如Linux)。既解决了通用操作系统实时性的不足,又解决了RTOS应用不够丰富的劣势。

(二) 通过把不同子系统封装到Partition中,比如驱动程序、网络协议栈或者文件系统等内核组件可以直接运行在Partition上,其它的子系统可以共享该组件,提高了系统的安全性和代码的复用率。一旦其中一个子系统崩溃或者被攻击,将不再会影响到其它子系统。例如移动手机终端,其通信协议栈非常关键,一旦该协议栈被攻击者成功进入,这台手机就可能干扰整个无线网络,在极端的情况下会导致整个通信网络的瘫痪。同样一个加密子系统也需要极高的安全保护,来保证加密信息不被窃取。但是对于现代的嵌入式操作系统来说,越来越庞大的代码量使得其安全隐患越来越多,由于其允许使用者下载和运行程序,这样的话一旦某个应用的某个缺陷被攻击者作为攻击的切入点,就将导致整个系统的崩溃。比如缓冲区溢出就是一种常见的网络攻击手段,其原理是利用用户程序对缓冲区的超界访问,从而访问到系统关键数据和程序,从而能够窃取系统的控制权。在没有使用Partition技术的系统里如下图左,缓冲区溢出攻击一旦成功,整个操作系统已经暴露在入侵者的面前,入侵者将能完全控制整个系统资源,访问所有的关键模块。

分区实时系统Partition-RTOS

如果入侵者攻击使用了Partition架构的系统,如上图右边所示,虽然入侵者通过应用程序的缺陷侵入了操作系统的用户交互界面,但该操作系统只负责与用户进行交互。由于 Partition RTOS存在,攻击者只能控制被攻击的操作系统,而不能控制运行于虚拟化系统内的其它 OS。这样就保证了攻击造成的损害被降到了最低。

(三) Linux是一个经常被使用的高级操作系统。它的优点就是免费且有一个庞大的开源社区支持。Linux遵照GPL的License发布,它要求任何由Linux衍生出来的代码都要遵照同样的license发布,也就意味着开源。这对于商业开发来讲就是一个两难的取舍,既想使用免费的系统又需要保护商业机密。通过虚拟化技术可以实现 lisence的隔离,下图所示Linux运行于相互隔离的虚拟机中,在 Linux 中用使用驱动桩,而把真实的驱动实现在另外的虚拟机中,从而实现了lisence的隔离。

分区实时系统Partition-RTOS

(四) Partition技术实现了软件和硬件的松散耦合,这样发布一个新的硬件平台时客户操作系统只需要做极少的更改就可以移植到一个新的平台;另一方便那些需要维护周期长的系统,比如舰载系统,一般的周期至少是10年。在此期间有可能原来的硬件平台已经停产或者系统已经停止维护,使用Partition技术可以为其提供一个稳定的运行环境。

(五) 另外一个趋势也使分区操作系统更具吸引力,即制造技术的改进,提高了处理器的顺序执行性能。由于物理空间上的限制,CPU的设计者通过在一个芯片上添加多个处理器核心,使得处理器由原来的仅仅提高单线程的执行性能,转换到提高多线程的执行性能[1]。这也使得系统设计者可以将原来运行在多个节点上的应用,移到单个芯片上运行。然而这种整合面临着一个新的工程问题,因为过去的任务都带有不同的安全级别[2],这些不同的安全级别应用运行在不同的硬件组件上,原先的这种硬件架构使得非关键应用子系统的故障不会影响到关键应用子系统。但是这种应用方式浪费了大量的处理器资源,在当前的硬件平台是不可取的。

以IEC61508标准为例,该标准基于系统故障发生时的严重程度,定义了不同的系统完整性级别SIL(System Integrity Level)用以描述系统的安全性。在SIL4的系统中不管是时间域的故障,还是空间域的故障都会导致人生命财产的损失,以及设备功能的损坏。然而,一个SIL1的应用所引发的故障,除了导致系统的不正确的服务外,不会有其它进一步的损失。一个SIL4的系统必须确保其每小时发生故障的概率小于10^-9,这需要系统具有非常严苛的设计和严苛的验证方法,而对于SIL1应用,通常的测试方法就足够了。来自安全认证部门的重要需求是:或者同一平台的所有应用达到这些应用中SIL基本最高的那个应用所在的安全级别;或者彼此保证有“足够的隔离”措施,使得彼此之间不会存在无意干涉。

在前一个情况,如果所有的应用被整合到同一个处理器上,那边认证安全关键应用的潜在需要是必须对非关键应用进行正式的安全认证,这将导致高昂的开发成本,如果应用是由第三方提供,那么这种安全认证是不现实的。并且在像汽车和航空器应用中,对设备重量和能耗也有着很苛刻的限制。“足够隔离”的概念基于特定应用程序执行域[2]。这也是分区实时操作系统,比如VxWorks MILS[3]、INTEGRITY®-178B RTOS[4]、Lynx[5]越来越被人们重视的原因。

 

参考资料:

[1]B. A. N. L. H. K. W. Kunle Olukotun, "The case for a single-chip multiprocessor," ACM SIGPLAN Notices, vol. 31, no. 9, pp. 2-11, 1996.

[2]International Electrotechnical Commission and others, "IEC 61508: Functional Safety of Electrical," Electronic/Programmable Electronic Safety-Related Systems, 1999.

[3]http://www.windriver.com/products/vxworks/certification-profiles/

[4]http://www.ghs.com/products/safety_critical/integrity-do-178b.html

[5]http://www.lynx.com/products/

 

目前评论:6   其中:访客  5   博主  1

  1. avatar Xavier 0

    (三) Linux是一个经常被使用的高级操作系统。这一段的配图有误哈~~~

    • avatar 守护者

      @Xavier 谢谢Xavier的仔细阅读,确实是我的笔误,我回家后立马修改^_^

  2. avatar Kevin_fu 0

    个人觉得分时分区和虚拟化虽然技术上有重合,但是在理念上(或者说追求的目标)有所区别

    • avatar prtos, info 3

      @Kevin_fu 我的理解,在嵌入式领域使用虚拟化技术(Type-1 Hypervisor技术)是实现分区(时空域隔离)的一种手段,可以分成两个发展方向:一个侧重于Safety安全,实现一个容错系统(Fault Tolerate System),比较典型的是实现航空ARINC 653标准的系统,比如VxWorks653、Integrity178B RTOS;另一个侧重于Security安全,侧重于信息安全、防黑客攻击。典型的是实现MILS架构,比如VxWorks MILS,Lynx-Secure等。两者也存在 交集,比如实现一个基本的分区系统,通过不同的功能扩展,来满足Safety或者Security的应用要求。

  3. avatar cohan 1

    “现有的隔离和保护手段主要是借助于MMU和MPU对地址空间进行保护,存在保护力度大、资源消耗多、性能影响大等缺陷”
    通过MMU和MPU进行内存保护主要是通过硬件单元实现的,软件只需在上下文切换时设置几个寄存器就行了,会导致“资源消耗多、性能影响大”的情况吗?没理解,还望赐教。

    • avatar prtos, info 2

      @cohan 对地址空间的保护,就涉及到CPU内核态和用户态的切换,进而是内核栈和用户栈的切换,比如分区上下文(涉及到通用寄存器、特权寄存器、MMU/MPU相关的寄存器、中断相关寄存器)的保护和恢复、以及Cache的刷新,这部分的开销是比较大的。

评论加载中...

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: