学习啦>学习电脑>操作系统>操作系统基础知识>

分区操作系统

佳洲分享

  分区操作系统想必很多人都不太了解。下面由学习啦小编为大家整理了分区操作系统的相关知识,希望对大家有帮助!

  第1部分 分区操作系统背景

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

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

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

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

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

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

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

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

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

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

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

  第2部分 分区操作系统研究现状

  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)操作系统,至少应该满足Partitioning-RTOS的主流设计理念,基于任务和线程的设计几乎是不可能达到安全要求的。

  第3部分 分区操作系统pRTOS架构

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

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

  第4部分 分区操作系统优势

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

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

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

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

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

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

    3630884