浅析组件机制和操作系统的实现

2017-09-10 09:06何志明
科学与财富 2017年22期
关键词:操作系统

何志明

摘要: OSKit可以用来构建操作系统内核、外层服务和其他核心OS功能模块,包括可用于内核的最小化POSIX环境、物理内存、内存管理、广泛的调试支持,以及高层子系统。开发者可以用自己编写的组件来取代OSKit中的部分组件,以满足特定的需要,也丰富了操作系统的应用层。

关键词:OSKit;组件技术;操作系统;协议栈

一、 应用OSKit的必要性

一般情况下,探究人员只对操作系统的一些特定领域感喜好,而对于另外一些元素,如启动加载代码、核心启动代码、设备驱动程序和内存分配代码等往往不感喜好,但是一个可运行的原型系统又必须包含这些内容。编写这些基础结构延缓了操作系统探究项目的进度,同时也增加了进行操作系统探究的代价。为了解决这一新问题,美国犹他大学的FLUX探究小组开发了OSKit,它提供了一个框架和一组模块化的、具有简单接口的库以及一组清楚的、可重用的OS组件。开发者可以根据自己的探究喜好或所要考虑的性能来使用这些模块,或用他们自己的模块来替代标准的OSKit模块。

二、 组件技术简介

所謂组件,其实就是一种可部署软件的代码包,其中包括某些可执行模块。组件单独开发并作为软件单元使用,它具有明确的接口,软件就是通过这些接口调用组件所能提供的服务,多种组件可以联合起来构成更大型的组件乃至直接建立整个系统。组件的实现必须支持一种或者多种其用户所希望获得的接口。为了构造新应用程序,软件开发人员找出适当的组件,将这些组件加入到正在开发中的应用程序,同时对应用程序进行测试并保证应用程序的组装工作按照预定的规划正常进行。

三、 Oskit组件关键技术

1、引导程序

从操作系统探究的立场来看,启动加载器是一个令人不敢喜好的领域,因此OS开发者通常进行一个最小化、快捷的设计。由于设计理念和要求的稍微差别,每个启动加载器都不适用于下一个OS。为了解决这个新问题,OSKit直接支持多启动标准,这一标准是由几个OS项目的成员共同设计的,它的目的是提供一个简单而通用的启动加载器和OS内核间的接口,从而答应一个启动加载器加载任何兼容的OS。在进行操作系统探究时,多启动标准非常有用,这其中的主要原因是启动加载器在加载内核自身的同时还具有加载附加文件或者启动模块的能力。

2、核心支持库

OSKit核心支持库的主要用途是让客户OS更轻易访问硬件设施。它包含了一个较大的实用函数和符号定义的集合,该集合对于管理模式代码是非常具体的。和此相对应,OSKit的大多数其他库在用户模式代码中通常很有用。和OSKit的其余部分所不同的是,多数核心支持代码必须是针对特定系统结构的,而这些特定机器的细节对客户OS也是有用的。OSKit核心支持库仔细地设置了一个基本的32位执行环境,初始化段和页转换表,安装一个中断向量表,并提供缺省的陷阱和中断处理程序。该库在缺省情况下自动地定位所有随内核加载的启动模块,并保留它们所在的物理内存。

3、内存管理库

如同在一个标准C语言库中实现的malloc()一样,内存管理代码典型地用于用户空间。通常并不适用于内核。设备驱动经常需要分配特定类型的内存,并伴随具体的调整属性。为解决这些内存管理新问题,OSKit包含了两个简单而灵活的内存管理库摘要:(1)基于队列的内存管理器LMM,它提供了功能强大且高效的原语来进行分配管理,并支持在一个池中管理多种类型的内存。(2)地址映射管理器AMM,被设计用来管理不必直接映射到物理内存或虚拟内存的地址空间,它对OS的其他方面提供了类似的支持。

4、调试支持

OSKit的一个最实用的好处是摘要:给定一个适当的硬件设置,它马上就能提供给OS开发者一个完全源代码级的内核调试环境。OSKit内核支持库包括一个可用于GNU调试器(GDB)的串行存根模块,它在客户OS环境中处理陷阱,并使用GDB的标准远程调试协议通过一个串行程序和运行在另一台机器上的GDB通信。甚至当客户机OS执行自己的陷阱处理时,OSKit的GDB存根模块也是可用的。假如客户OS提供适当的钩子,它甚至支持多线程调试。除了基本的调试器支持,OSKit也提供了一个内存分配调试库,它可以跟踪内存分配并检测一般的错误,如缓冲区溢出和释放已释放的内存。这个库提供了和许多普通应用程序调试器相似的功能性,所不同的是它运行在由OSKit提供的最小内核环境中。

5、 设备驱动支持

在OS开发和维护中最艰巨的一个任务是支持多种多样的I/O硬件。这些复杂的设备常会含有潜在的错误,而新硬件的发布又经常伴随着不兼容的软件接口。由于这些原因,OSKit采用了为现有内核开发的稳定的、经过充分测试的驱动程序。OSKit使用了一种封装技术,将现有的驱动程序代码基本上未加修改地合并到OSKit中。这些现有的驱动程序被一个OSKit粘结代码层所包装,从而使得这些驱动程序可以在和开发它们的环境完全不同的环境中工作。目前,来自Linux的大多数以太网卡、SCSI和IDE磁盘的设备驱动程序被包括进来,总数超过了五十种。用同样的方式,来自FreeBSD的八个字符设备驱动程序也被包含了进来,它们支持标准PC控制台和串口及不同的多串口板。

6、协议栈

OSKit提供了一个完整的TCP/IP网络协议栈。如同驱动程序一样,有关网络的代码也可以通过封装机制被合并进来。OSKit当前可以从Linux中获取网络设备驱动程序,它们是PC平台可获得的最大的免费资源。OSKit的网络组件继续于FreeBSD4.4,它通常被认为具有更多成熟的网络协议。这显示了使用封装机制将现有软件包装成灵活的组件的第二个优点摘要:即从不同的资源中获取最好的组件,并让它们一起被使用。

7、文件系统

通过使用封装技术,OSKit吸收了NetBSD的基于磁盘的文件系统代码。NetBSD之所以被选择为首要资源库,是因为在可用的系统中,它的文件系统代码被最清楚地分离了出来,而FreeBSD和Linux的文件系统和它们的虚拟内存系统结合的更紧密。当前,OSKit也把Linux文件系统合并了进来,以便能够支持多种类型的文件系统格式,如Windows95、OS/2和System V的文件系统格式等等。

总之,采用组件技术能降低开发、测试和维护成本,提高可靠性和稳定性。OSKit大大减轻了操作系统探究和开发者的负担,可以让开发人员避开复杂的底层,而把喜好集中和他们所感喜好的领域,这不仅满足了实际客户系统的需求,也有助于操作系统的探究和开发。

参考文献

[1]李永胜,汪红梅等.基于面向对象操作系统开发平台OSKit的分析和程序设计 [j].计算机科学,2015(3)

[2]杜德海,刘小燕.嵌入式操作系统中的任务分析机制的设计与实现 [j].电子科技大学学报,2016(2)endprint

猜你喜欢
操作系统
智能手机操作系统的分析与比较
国产桌面操作系统中虚拟化技术应用研究
操作系统实践教学改革探索
基于虚拟机(VMware)的实验平台构建
基于单片机的嵌入式系统的开发研究
计算机操作系统中死锁问题研究
“操作系统原理”实验教学设置初探
高校操作系统课程教学改革的研究与实践
《操作系统》课程教学方法的研究与实践
基于单片机的嵌入式系统开发及实践要点研究论述