嵌入式系统的VxWorks**性问

分享到:
点击量: 220185

  引言

  实时嵌入式系统与网络的结合以及高可信覆盖网络的发展使得嵌入式实时操作系统的**性问题日益突出。提高实时嵌入式系统的**性和可靠性是未来实时嵌入式系统发展的重要方向之一。VxWorks是一个运行在目标机上的高性能、可裁剪的嵌入式实时操作系统。该系统以其良好的可靠性和**的实时性被广泛应用在通信、**、航空、航天等高精尖技术及实时性要求极高的领域中。VxWorks系统在**方面未作任何处理。针对这一问题,本文在分析现有嵌入式**操作系统构建原理及技术的基础上,提出了VxWorks**内核,实现了基于多策略的强制访问控制等**机制。测试表明,该**内核不仅增强了VxWorks系统的**性,而且对其实时性的影响较小。

  1 **操作系统构建原理及方法

  1.1 强制**和访问控制

  操作系统的**性是整个计算机系统**性的基础。操作系统的**特性很多,强制**是其一个侧面。是不是强制**,要视其**策略逻辑定义与**属性分配是不是由系统**性策略管理员控制。如果是,则是强制**;反之,如果是由普通用户控制的,则是自主**。一个操作系统的强制**策略可以分解为若干种类的策略,如访问控制策略,认证、加密策略等。在本系统中实现了基于多策路的强制访问控制,即规定主体在操作系统的控制下依据一定的策略对客体进行访问。为此,提供了一个定义和转换强制**性策略的架构,用于定义操作系统的强制**策略,并把它转化成底层的操作系统强制**机制能够解释的形式。

  1.2 增强嵌入式操作系统**性的方法

  在一个现有的较成熟的嵌入式操作系统基础上增加**核来增强现有系统**性,是一个很好的开发**嵌入式系统的思路。**内核负责实现整个操作系统的**机制,在硬件、操作系统、计算系统的其他部分之间提供**接口,将**功能隔离在**核内。

  2 VxWorks**核框架

  2.1 **核体系结构

  本文提出一种如图1所示的VxWorks**核框架结构。基本思想是:应用程序对Wind内核的访问都是受控的,即应用程序(主体)对任务、信号量、共享内存、消息队列、管道、信号和文件等(客体)的访问及操作都受到强制的控制,**核依据一定的策略判定是否允许主题对客体访问。应用程序对Wind内核的所有调用都被监控器拦截。首先通过查询策略缓存判定该调用的合法性,如果合法则允许进行该调用;如果没有找到相关策略则将该请求交由**服务器进行判定,合法则允许进行该调用并将该策略写入策略缓存以便下次调用时直接判定,非法则拒绝此次调用。每次调用及结果反馈给审计模块以备查询。监视器、**服务器、审计模块的配置工作由主机端配置工具进行。该**核的强制访问控制模块主要由监控器、策略缓存和**服务器三大组件组成。其中,监控器负责拦截主体对客体的所有访问,将拦截到的访问交由判定机构判定,并负责依据接收到的判定结果对访问进行控制;策略缓存(Access Vector Cache,AVC)组件缓存**服务器提供的访问控制决策供监控器使用,以减少检查对象访问权限耗时,从而提高整体性能;**服务器是内核的一个子系统,将**策略与通用接口封装在一起的一个组件,通用接口用于获取**策略决策。针对不同对象的管理器负责向**服务器申请SID标签以及向监控器提供服务。

  2.2 **服务器

  **服务器是本系统的核心组件,是访问合法性的判定部分。 **上下文是表示**属性的变长字符串,是**服务器私有的数据类型,由**服务器依据一定的策略逻辑负责解释。**上下文不直接与主客体绑定,而是在运行时由**服务器依据标签规则进行其与**标识符SID的映射。多策略验证器是**服务器的核心模块,它包含系统设定的所有**策略的判定逻辑。本**核对多**策略的支持由这一模块实现。按照不同的策略,对访问有不同的判定结果,**服务器依据这些判定结果的交集做出*终的判定结论。策略数据库是策略数据的存储结构,通过主机端配置工具配置其中相关信息。本**核的实现采用了一种结合类型实施(TE)、基于角色的访问控制(RBAC)和多级**(MLS)的多**策略。**服务器定义的**性上下文由用户身份、角色、类型及可选的**级别和范围组成,其中角色只与任务(task)相关。只有合法的用户、角色、类别及**级别或范围的组合才会被**服务器赋予SID。

  2.3 客体管理器及强制访问控制

  客体管理器是负责**策略实施的部分。Wind内核中任务、信号量、共享内存、消息队列、管道、信号、文件等的管理系统是不同的对象管理器。本系统实行强制访问控制,系统中每个任务、信号量、文件等都被赋予一定的**属性,这些属性由客体管理器负责维护。强制访问控制的具体过程为:监控器截获访问请求格式为主体SID、客体SID以及许可权限三元组,即。监控器将三元组交与AVC进行匹配,如果有相应条目,则允许该访问请求;如果没有相应条目,则将该三元组交由**服务器进行判定。**服务器首先进行SID与**上下文的映射,依据策略逻辑将映射后的该条访问信息交与策略验证器进行验证。如果验证通过则将该三元组写入AVC,同时运行此次访问,反之则不允许访问。

  3 系统实现及测试

  3.1 **系统的实现方式

  在分析VxWorks系统内核Wind结构的基础上,结合上述提出的**核设计,本系统实现了**标记和强制访问控制,即实现了对Wind任务、信号量(二进制/互斥/计数信号量)、消息队列、管道、事件等的**标记和强制访问控制。实现了监控器部分来支持对系统调用的控制;实现了策略服务器使之初步支持MLS、TE、RBAC策略判定;实现了策略缓存部分以提高系统性能。

  监控器的实现:监控器对系统调用实施拦截,实质上是作为一个转向器将正常的系统调用转入强制访问控制阶段。系统通过调用全局**钩子函数security_hooks()调用各子系统**钩子函数,如sec_task_hooks()、sec_semB_hooks()、sec_semM_hooks()等。在系统调用级,定义了需要进行**判定的接口函数,如sec_taskSpawn()、sec_taskDelete()、sec_semBCreate()等。

  **服务器的实现:本**核的访问控制粒度为系统对象级,因此在**服务器中实现了对每一个系统对象(任务、信号量等)定义**属性,定义SID,以及将SID与**属性相映射关联。**策略的加载与验证,以及依据监控器发来的判定请求进行访问判定的功能也在**服务器中进行了具体实现。验证函数的三个参数分别为:主题SID、客体SID、访问请求模式。只有在该请求同时满足TE、MLS、RBAC的情况下,验证函数才返回TRUE,同意访问。

  策略缓存的实现:策略缓存实现中*重要的是缓存数据项。本系统中实现的缓存数据项结构为:

  typedefstruct access_perm_cache{

  security_idssid;/*主体SID*/

  security_idtsid;/*客体SID*/

  permission_levelperm;/*允许访问的权限*/boolchecked;/*是否决策成功*/

  }access_perm_cache;

  3.2 系统功能及性能测试

  本文在对此**内核测试时目标机采用Tornado系统自带的VxSim目标模拟器。宿主机配置为AMD Athlon 64x2 Dual Core Processor 3600+ 2.00 GHz,512 MB,安装Tornado2.2/VxWorks5.5。**核功能测试的内容包括**标记以及强制访问控制。首先设计了测试用例,结果表明Wind**内核目前可以标识Wind任务、信号量(二进制/互斥/计数信号量)、消息队列、管道,**标签和对象一一对应且具有继承性。其次设定了不同**等级任务的系统调用来测定系统的强制访问控制,测试表明监控器拦截了**相关的所有系统调用,**服务器依据配置好的**策略给出了正确判定,没有任务绕过强制访问控制。在**核性能的测试上使用VxWorks提供的一组系统调用——timex()和timexN()——来记录使用**核和未使用**核时同一任务的执行时间,以及在使用**核时使用策略缓存和未使用策略缓存时执行统一任务的时间。由于测试时使用的任务执行时间非常短,因此主要采用timexN()来记录重复执行该任务的时间。测试结果表明,未使用**核、使用带缓存**核、使用不带缓存**核执行同一任务时间依次增加。以taskSpawn()任务为例,未使用**核时执行时间为50 μs,使用带缓存的**核时执行时间为70 μs,使用不带缓存时执行时间为80 μs,误差均小于10%。测试表明本文设计的**内核会在一定程度上影响系统调用的时间,但是策略缓存可以有效地提高系统性能,整体上还是可以接受的。该**核结构具有通用性,改造后可以用于其他嵌入式系统。