平台无关性就是一种语言在计算机上的运行不受平台的约束,一次编译,到处执行 。
简介
平台无关就是一种语言在
计算机上的运行不受平台的约束,一次
编译,到处执行。 平台无关有两种:源代码级和目标代码级。而C和C++具有一定程度的
源代码级平台无关,表明用C或C++写的
应用程序不用修改只需重新编译就可以在不同平台上运行。而Java编译出来的是
字节码,去到哪个平台都能用,只要有那个平台的JDK就可以运行,所以,Java程序的最大优势就是平台无关。
影响平台无关性的因素: 首先影响的因素是程序平台的部署。第二个影响的因素是程序平台的版本。第三个因素是本地方法。第四个因素是非标准运行时库。第五个因素是对
虚拟机的依赖。最后一个和平台无关性的因素是对
用户界面的依赖。
访问控制
目前,多数
操作系统访问控制机制的不完善,是其容易被攻击的根本原因,访问控制机制的实施已成为各个操作系统的迫切需求。然而对访问控制实施的研究一般针对单个系统,当需要对新的操作系统进行安全加固时,往往需要重新开发新的
访问控制模块。不同的安全实现,致使各个系统的安全配置也大相径庭,使得安全管理员的
维护工作也相当繁琐。为了提高访问控制模块的可移植性,减少在新系统上实施访问控制时的重复工作,使不同操作系统具有相同的安全配置方法,必需设计一个可以方便的实施到不同操作系统中的访问控制框架,也就是平台无关的访问控制。
平台间差异
操作集合不同。每个平台的操作集不同,以文件系统的实现来例, Linux 类操作系统中虚拟文件系统涉及的操作,如 Superblock、Inode等操作是 Windows 不支持的; 同样 Windows 系统有一些特色操作。故而各个平台 都需要自己定义操作集合,操作集合的不同影响到了OSHL的实现。
内核对象不同。以
进程为例,在
Linux中每个进程由一个 Task_ Struct 对象来描述,而在 Windows 中,每个进程由 Peprocess 结构来表示。而且不同的系统有特有内核对象,例如 Superblock 只会出现在 Linux 类系统中。 内核对象的差异使得必须为不同的平台定义不同的内核对象集合。
内核 API不同。由于安全机制一般被放在内核空间执行,安全机制需要使用时间、锁、内存分配以及输入输出等操作,完成这些操作的
API在不同平台下有不同的实现,要使得安全机制不依赖于具体的平台,必须消除安全机制对内核 API 的依赖。
重要的系统资源不用。不同
操作系统的实现具有很大差异,每种系统都有独特的重要资源,比如 Linux 类的伪文件系统、 Windows下的注册表等系统关键资源,应该受到安全机制保护。所以,在设计安全模块时必须提供特定的机制保护这类资源。
PIFAC(平台无关的访问控制)
PIFAC 将访问控制的实现分为三层:操作系统 Hook 层(OSHL)、平台抽象层(PAL)以及核心安全
服务器层(CSS)。OSHL 层的作用是截获操作系统的关键操作后, 交给
CSS进行安全判断,然后根据 CSS返回的结果, 允许或者拒绝该操作。OSHL 层在不同的平台下有不 同的实现,起到系统监控的作用。PAL层的作用是为 CSS层提供平台抽象,使得设计CSS时不需要考虑各个平台的不同点;为 OSHL层提供安全对象管理等功能。CSS层的作用是实现
动态多策略安全模型以使 CSS可以满足多样的安全需求。CSS接到 OSHL层的请求后,根据配置做出判断并且将判断结果返回给 OSHL层。
系统实现与分析
PIFAC 已经在 Windows、
Linux以及 Rtems 系 统上实施,总结了在新平台上实施PIFAC的步骤:
(1) 选择合适的安全对象,或者定义新的安全对象。
(2) 选择合适的操作集合,实现新系统的 OSHL,并且在其中启用 CSS。在新平台上实施 PIFAC,只需要添加新的 OSHL, 以及扩充PAL,无需对 CSS进行修改。CSS的设计支 持多个安全模型,目前已经支持RBAC、DTE等安全模型。
模型
在基于 MDA 的软件开发过程中,平台无关模型( PIM) 扮演着核心角色,MDA 通过建立 PIM 来生成实际执行系统,也通过修改 PIM 来修改执行系统。但目前 PIM 的建模基本靠手工编写代码来实现,存在着效率低、易出错、复用难、非专业人员难以掌握等问题。而
可视化建模有如下的作用:能引导人们有效地建立正确的模型;可以有效避免重复性工作,缩短开发时间;提供了
存储和管理有关信息的机制和手段,具有保持信息一致性的能力;有助于用户生成和管理相关
文档;为复用提供方便。由此可见,如果能将 PIM 建模可视化,实现建模过程所见即所得,就可以很好地解决以上问题。
PIM 的可视化建模方法
模型驱动架构 (MDA) 是对象管理组织 (OMG) 为解决软件开发危机提出的软件开发架构,其基本思想是将模型作为软件开发的核心产品,严格区分系统的功能规约与实现细节。MDA 的典型开发过程分为 3 步:首先对应用领域建模生成 PIM,然后将PIM转换为一个或多个PSM,最后将PSM转换成代码。其中,PIM 在描述纯粹关注技术的业务逻辑中扮演了中心角色,PIM的建模是至关重要的一步,关系着 MDA 开发的成败。
MDA 的核心是PIM,它是一个
软件系统功能和结构的形式化规范,与具体实现技术和
硬件环境无关,所以 PIM 的建模语言也应是平台无关的。
PIM 可视化建模框架的设计与实现
PIM 的 可 视 化 建 模 框 架 基 于 Visual Studio.NET平台,使用C # 作为编程语言开发完成。框架由VX形状库模块,VX图画设计模块,解析转换模块,DTD和Schema验证模块构成。
1.VX形状库
VX形状库模块负责定义PIM建模所需的形状,并按特定分类规则将形状放入分类形状库,所有的分类形状库组合在一起就是形状库。
2.VX图画设计
VX图画设计模块由
工具箱组件、设计区组件和设计
引擎组件组成,负责创建图画的
可视化设计窗口和响应窗口中发生的各种事件。其中,工具箱组件提供和形状库模块交互的接口,使用创建好的形状库来创建形状工具箱,创建好工具箱后,用户就可以在工具箱中选择形状到设计区,进行图画的设计。设计区组件负责创建图画设计区,设计区是用户可视化地设计图画的区域。用户可以在设计区内设计新的图画,或导入已有的图画,也可以同时打开多个图画,相互间复用设计。
3.解析转换
解析转换模块负责解析图画,转换成 XML文档;或解析XML文档,转换成图画。解析图画,实际就是解析图画中的形状以及形状之间的位置关系,生成对应的XML代码。具体地说,在设计好的图画中,形状的名称、属性和属性值都已经定义好了,解析形状时,只需读取这些数据,就能得到PIM描述文档中相应的XML元素的名称、属性和属性值。形状之间的平面位置关系也已确定,解读这些位置关系,就能得到XML元素间的逻辑位置关系,如顺序、包含等。如此,就生成了完整的XML描述文档。
4.DTD和Schema验证
生成
XML文档后,除了
语法验证,还需要验证其是否是“Validating XML (有效的XML文档) ”,即验证XML文档中的元素、属性、实体等是否符合DTD或Schema中的规定。