




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、组件机制与操作系统的实现摘要本文介绍了一个操作系统开发平台-OSKit,它提供了一套用于架构操作系统内核的库函数和一些组件。它的设计目标是降低进入操作系统研究与开发领域的门坎。OSKit在设计时借用了COM的思想,把操作系统的各个部份设计成尽可能独立的组件,使开发者能够很方便地利用或替换这些组件来构造自己的操作系统。关键字组件重用操作系统OSKit1引言当前,操作系统的功能不断扩展,操作系统的类型呈现出多样化的趋势。一个小规模的开发小组已经不可能完全从头开始实现一个有效的操作系统,而一样情形下,研究人员只对操作系统的一些特定领域感爱好,而关于另外一些元素,如启动加载代码、核心启动代码、设备驱动
2、程序和内存分派代码等往往不感爱好,可是一个可运行的原型系统又必需包括这些内容。编写这些基础结构延缓了操作系统研究项目的进度,同时也增加了进行操作系统研究的代价。为了解决这一问题,犹他大学的FLUX研究小组开发了OSKit,它提供了一个框架和一组模块化的、具有简单接口的库和一组清楚的、可重用的OS组件。OSKit能够用来构建操作系统内核、外层效劳和其他核心OS功能模块。OSKit提供了各类功能模块,诸如简单自举,一个可用于内核的最小化POSIX环境、与物理内存和其约束一致的内存治理、普遍的调试支持,和高层子系统如协议栈和文件系统。开发者能够依照自己的研究爱好或所要考虑的性能来利用这些模块,或用他
3、们自己的模块来替代标准的OSKit模块。OSKit公布了它内部的实现细节,许诺用户从成熟的操作系统中不加修改地提取代码,然后通过一小部份通过认真设计的粘接代码将它们归并到一路,隔离它们的依托性,并输出良好概念的接口。OSKit利用这一技术整合了许多稳固而成熟的源代码,包括设备驱动、文件系统、网络协议等等。实践说明,利用组件软件架构和重用技术会给操作系统实现领域带来大的阻碍。2组件技术简介组件技术是一种较新的软件开发技术。到目前为止,还难以确信组件技术的明肯概念。比如,对组件技术的常见说法有以下这些:“二进制软件单元”、“任意场合可部署的软件”、“专门适合第三方开发”和“标准概念的接口”等等。大
4、致上能够如此明白得:所谓组件,其实确实是一种可部署软件的代码包,其中包括某些可执行模块。组件单独开发并作为软件单元利用,它具有明确的接口,软件确实是通过这些接口挪用组件所能提供的效劳,多种组件能够联合起来组成更大型的组件乃至直接成立整个系统。组件的实现必需支持一种或多种其用户所希望取得的接口。实现组件并非必然需要采纳面向对象语言。为了构造新应用程序,软件开发人员找出适当的组件,将这些组件加入到正在开发中的应用程序,同时对应用程序进行测试并保证应用程序的组装工作依照预定的计划正常进行。采纳组件技术能降低开发、测试和保护本钱,提高靠得住性和稳固性。3Oskit组件综述OSKIT的组件库提供了一样情
5、形下更高层的功能,它通常只对外开放一些相关的公用挪用接口。目标系统通过OSKit的面向对象的COM接口来与这些组件进行交互。以下几节概述了OSKit所提供的组件。3. 1引导程序大多数操作系统多有自身的启动加载机制,彼此互不兼容。这种加载机制的多样性并非是由于每一个OS所要求的自举效劳不同而引发,而是由于构建启动加载器的特定方式造成的。因为从操作系统研究的立场来看,启动加载器是一个令人不敢爱好的领域,因此OS开发者通常进行一个最小化、快捷的设计。由于设计理念和要求的轻微不同,每一个启动加载器都不适用于下一个OS。为了解决那个问题,OSKit直接支持多启动标准,这一标准是由几个OS项目的成员一起
6、设计的,它的目的是提供一个简单而通用的启动加载器与OS内核间的接口,从而许诺一个启动加载器加载任何兼容的OSo在进行操作系统研究时,多启动标准超级有效,这其中的要紧缘故是启动加载器在加载内核自身的同时还具有加载附加文件或启动模块的能力。那个地址的一个启动模块只是一个一般文件,启动加载器不以任何方式说明它,而仅仅把它随同内核映像一路加载到保留物理内存块中。在启动内核时,启动加载器提供给内核以下内容:物理地址的列表、所有已加载的启动模块的大小,和与每一个模块相联系的由用户概念的字符串。这些启动模块和与它们相联系的用户概念的字符串由内核说明。如此做的目的是为了通过提供内核启动时需要的数据,诸如初始化
7、程序、设备驱动和文件系统效劳器,来减轻内核启动的负担。3.2核心支持库OSKit核心支持库的要紧用途是让客户OS更易访问硬件设施。它包括了一个较大的有效函数和符号概念的集合,该集合关于治理模式代码是超级具体的。与此相对应,OSKit的大多数其他库在用户模式代码中通常很有效。和OSKit的其余部份所不同的是,多数核心支持代码必需是针对特定系统结构的,而这些特定机械的细节对客户OS也是有效的。例如,在x86机械上,核心支持库包括一些函数,用来创建和操纵x86页表和段寄放器。其他OSKit组件通常提供成立在这些低层机制上的与体系结构无关的设施,可是为了提供最大的灵活性,与特定结构相关的接口始终能够被
8、访问。OSKit核心支持库在x86体系结构上尤其重要,因为该体系结构的OS级编程环境专门复杂和模糊。核心支持库认真地设置了一个大体的32位执行环境(为了与MS-DOS兼容,x86处置器通常以16位模式开始),初始化段和页转换表,安装一个中断向量表,并提供缺省的陷阱和中断处置程序。固然,客户OS能够修改或重载这些行为。但是,在缺省情形下,核心支持库自动地做所有必要的工作,以便使处置器进入一个方便的执行环境,现在中断、陷阱、调试和其他标准设施己经如预期的那样开始工作。该库在缺省情形下自动地定位所有随内核加载的启动模块,并保留它们所在的物理内存。接下来,应用程序能够很容易利用它们。客户OS只需以标准
9、C语言风格提供一个mainO函数。一切都设置好以后,内核支持库将用所有参数和由启动加载器传递过来的环境变量来挪用它。3.3内存治理库犹如在一个标准C语言库中实现的mallocO一样,内存治理代码典型地用于用户空间。通常并非适用于内核。设备驱动常常需要分派特定类型的内存,并伴随具体的调整属性。例如,关于内建的DMA操纵器只能访问最初的16M物理内存。为解决这些内存治理问题,OSKit包括了两个简单而灵活的内存治理库:(1)基于队列的内存治理器(或称LMM),它提供了功能壮大且高效的原语来进行分派治理,并支持在一个池中治理多种类型的内存。(2)地址映射治理器(或称AMM)被设计用来治理没必要直接映
10、射到物理内存或虚拟内存的地址空间,它对OS的其他方面提供了类似的支持,诸如进程地址空间、分页、空闲块或IPC名字空间的治理。尽管这些库能够很容易地应用在用户空间,但事实上它们是被专门设计用来知足OS内核的需求。3.4最小C语言库成熟的OS内核一样都包括着相当数量的仅仅用来从头实现大体的C语言库函数如printfO和mallocO的代码。与此形成对照的是,OSKit提供了一个最小化C语言函数库,它围绕着最小化依托性而不是最大化函数性和性能的原那么来设计。3.5调试支持OSKit的一个最有效的益处是:给定一个适当的硬件设置,它立刻就能够提供给OS开发者一个完全源代码级的内核调试环境。OSKit内核
11、支持库包括一个可用于GNU调试器(GDB)的串行存根模块,它在客户OS环境中处置陷阱,并利用GDB的标准远程调试协议通过一个串行程序与运行在另一台机械上的GDB通信。乃至当客户机OS执行自己的陷阱处置时,OSKit的GDB存根模块也是可用的。若是客户OS提供适当的钩子,它乃至支持多线程调试。除大体的调试器支持,OSKit也提供了一个内存分派调试库,它能够跟踪内存分派并检测一样的错误,如缓冲区溢出和释放己释放的内存。那个库提供了与许多一般应用程序调试器相似的功能性,所不同的是它运行在由OSKit提供的最小内核环境中3.6设备驱动支持在OS开发和保护中最艰巨的一个任务是支持多种多样的I/O硬件。这
12、些复杂的设备常会含有潜在的错误,而新硬件的发布又常常伴随着不兼容的软件接口。由于这些缘故,OSKit采纳了为现有内核开发的稳固的、通过充分测试的驱动程序。OSKit利用了一种封装技术,将现有的驱动程序代码大体上未加修改地归并到OSKit中。这些现有的驱动程序被一个OSKit粘结代码层所包装,从而使得这些驱动程序能够在与开发它们的环境完全不同的环境中工作。目前,来自Linux的大多数以太网卡、SCSI和IDE磁盘的设备驱动程序被包括进来,总数超过了五十种。用一样的方式,来自FreeBSD的八个字符设备驱动程序也被包括了进来,它们支持标准PC操纵台和串口及不同的多串口板。由于OSKit把这些驱动认
13、真地进行了包装,FreeBSD驱动程序能够与Linux驱动程序一路工作。3. 7协议栈OSKit提供了一个完整的TCP/IP网络协议栈。犹如驱动程序一样,有关网络的代码也能够通过封装机制被归并进来。OSKit当前能够从Linux中获取网络设备驱动程序,它们是PC平台可取得的最大的免费资源。OSKit的网络组件继承于,它通常被以为具有更多成熟的网络协议。这显示了利用封装机制将现有软件包装成灵活的组件的第二个优势:即从不同的资源中获取最好的组件,并让它们一路被利用。4. 8文件系统通过利用封装技术,OSKit吸收了NetBSD的基于磁盘的文件系统代码。NetBSD之因此被选择为首要资源库,是因为在
14、可用的系统中,它的文件系统代码被最清楚地分离了出来,而FreeBSD和Linux的文件系统与它们的虚拟内存系统结合的更紧密。当前,OSKit也把Linux文件系统归并了进来,以便能够支持多种类型的文件系统格式,如Windows9五、OS/2和SystemV的文件系统格式等等。OSKit文件系统输出的COM接口类似于许多Unix文件系统所利用的内部VFS接口。这些接口具有专门好的粒度,使咱们能够没必要接触OSKit文件系统的内部。例如,OSKit接口只同意简单的途径名组件,许诺平安封装的代码执行适当的访问许可检查。5. OSKit的现状自从在1996年6月发布了OSKit的第一个公布发行版以来,OSKit已经更新了多次,每次更新都增加了一些算法,并修正了一些错误。最新的发行版是2002年3月的版本。由此可见,OSKit一直处于操作系统开发平台的前沿,其自身也在不断完善和进展。5结论作为一个操作系统研究与开发的平台,OSKit大大减轻了操作系统研究与开发者的负担。它能够让开发人员躲开复杂的底层,而把爱好集中与他们所感爱好的领域。开发者能够用自己编写的组件来取代OSKit中的部份组件,以知足自己特定的需要,从而丰硕了操作系统的应用层。总之,OSKit知足了实际客户系统的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年国际环保项目经理资格考试试题及答案解析
- 普通话教学课件效果
- 2025年公务员面试国际发展合作问题与答案
- 2025年安全员应急响应试题
- 2025年安全生产安全应急处理题库及答案
- 同坡屋面画法教学课件
- 2025年工程管理试题及答案解析
- 2025年应急救援员面试精讲题库
- 2025年瑜伽教练进阶实战模拟题与答案详解
- 2025年电子商务运营管理师考试试题及答案解析
- 2025办公室租赁合同简易范本下载
- 《全球哮喘管理和预防策略(GINA 2025)》解读
- 2025四川农商联合银行信息科技部社会招聘笔试历年典型考题及考点剖析附带答案详解
- “李可中医药学术流派论治厥阴病”-课件
- 通用技术作品设计报告
- 锚杆支护技术规范正式版本
- 隐形眼镜经营管理制度
- 下一代互联网技术
- 皮肤知识与问题性皮肤分析(入行必看)
- 单位消防安全评估报告(模板)
- 江西之江化工“7.2”压力容器爆炸事故
评论
0/150
提交评论