组件机制与操作系统的实现

时间:2020-10-06 13:38:07 计算机毕业论文 我要投稿

组件机制与操作系统的实现

摘要 本文介绍了一个操作系统开发平台-OSKit,它提供了一套用于架构操作系统内核的库函数和一些组件。它的设计目标是降低进入操作系统研究与开发领域的门槛。OSKit在设计时借用了COM的思想,把操作系统的各个部分设计成尽量独立的组件,使开发者可以很方便地使用或替换这些组件来构造自己的操作系统。

关键字 组件 重用 操作系统 OSKit

1 引言
当前,操作系统的功能不断扩展,操作系统的类型呈现出多样化的趋势。一个小规模的开发小组已经不可能完全从头开始实现一个实用的操作系统,而一般情况下,研究人员只对操作系统的一些特定领域感兴趣,而对于另外一些元素,如启动加载代码、核心启动代码、设备驱动程序和内存分配代码等往往不感兴趣,但是一个可运行的原型系统又必须包含这些内容。编写这些基础结构延缓了操作系统研究项目的进度,同时也增加了进行操作系统研究的代价。为了解决这一问题,犹他大学的FLUX研究小组开发了OSKit,它提供了一个框架和一组模块化的、具有简单接口的库以及一组清晰的、可重用的OS组件。OSKit可以用来构建操作系统内核、外层服务和其他核心OS功能模块。OSKit提供了各种功能模块,诸如简单自举,一个可用于内核的最小化POSIX环境、与物理内存和其约束一致的内存管理、广泛的调试支持,以及高层子系统如协议栈和文件系统。开发者可以根据自己的研究兴趣或所要考虑的性能来使用这些模块,或用他们自己的模块来替代标准的OSKit模块。
OSKit公开了它内部的实现细节,允许用户从成熟的操作系统中不加修改地提取代码,然后通过一小部分经过仔细设计的粘接代码将它们合并到一起,隔离它们的依赖性,并输出良好定义的接口。OSKit使用这一技术整合了许多稳定而成熟的源代码,包括设备驱动、文件系统、网络协议等等。实践表明,使用组件软件架构和重用技术会给操作系统实现领域带来大的影响。
2 组件技术简介
组件技术是一种较新的软件开发技术。到目前为止,还难以确定组件技术的明确定义。比如,对组件技术的常见说法有以下这些:“二进制软件单元”、“任意场合可部署的软件”、“特别适合第三方开发”和“规范定义的接口”等等。大致上可以这样理解:所谓组件,其实就是一种可部署软件的代码包,其中包括某些可执行模块。组件单独开发并作为软件单元使用,它具有明确的接口,软件就是通过这些接口调用组件所能提供的服务,多种组件可以联合起来构成更大型的组件乃至直接建立整个系统。组件的实现必须支持一种或者多种其用户所希望获得的接口。实现组件并不一定需要采用面向对象语言。为了构造新应用程序,软件开发人员找出适当的组件,将这些组件加入到正在开发中的应用程序,同时对应用程序进行测试并保证应用程序的组装工作按照预定的规划正常进行。采用组件技术能降低开发、测试和维护成本,提高可靠性和稳定性。
3 Oskit组件综述
OSKIT的组件库提供了一般情况下更高层的功能,它通常只对外开放一些相关的公用调用接口。目标系统通过OSKit的面向对象的COM接口来与这些组件进行交互。以下几节概述了OSKit所提供的组件。
3. 1 引导程序
大多数操作系统多有自身的启动加载机制,彼此互不兼容。这种加载机制的多样性并不是由于每个OS所要求的自举服务不同而引起,而是由于构建启动加载器的`特定方式造成的。因为从操作系统研究的立场来看,启动加载器是一个令人不敢兴趣的领域,因此OS开发者通常进行一个最小化、快捷的设计。由于设计理念和要求的轻微差别,每个启动加载器都不适用于下一个OS。为了解决这个问题,OSKit直接支持多启动标准,这一标准是由几个OS项目的成员共同设计的,它的目的是提供一个简单而通用的启动加载器与OS内核间的接口,从而允许一个启动加载器加载任何兼容的OS。
在进行操作系统研究时,多启动标准非常有用,这其中的主要原因是启动加载器在加载内核自身的同时还具有加载附加文件或者启动模块的能力。这里的一个启动模块只是一个普通文件,启动加载器不以任何方式解释它,而仅仅把它随同内核映像一起加载到保留物理内存块中。在启动内核时,启动加载器提供给内核以下内容:物理地址的列表、所有已加载的启动模块的大小,以及与每个模块相联系的由用户定义的字符串。这些启动模块和与它们相联系的用户定义的字符串由内核解释。这样做的目的是为了通过提供内核启动时需要的数据,诸如初始化程序、设备驱动和文件系统服务器,来减轻内核启动的负担。