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

时间:2024-02-04 点赞:43855 浏览:83875 作者原创标记本站原创

本文是一篇操作系统论文范文,操作系统有关毕业论文范文,关于组件机制和操作系统的实现相关在职研究生毕业论文范文。适合操作系统及同济大学及系统结构方面的的大学硕士和本科毕业论文以及操作系统相关开题报告范文和职称论文写作参考文献资料下载。

【文章摘 要】

OSKit可以用来构建操作系统内核、外层服务和其他核心OS功能模块.OSKit提供了各种功能模块,诸如简单自举,一个可用于内核的最小化POSIX环境、和物理内存和其约束一致的内存管理、广泛的调试支持,以及高层子系统如协议栈和文件系统.

【关 键 词】

OSKit;操作系统;C语言

0引言

当前,操作系统的功能不断扩展,操作系统的类型呈现出多样化的趋向.一个小规模的开发小组已经不可能完全从头开始实现一个实用的操作系统,而一般情况下,探究人员只对操作系统的一些特定领域感喜好,而对于另外一些元素,如启动加载代码、核心启动代码、设备驱动程序和内存分配代码等往往不感喜好,但是一个可运行的原型系统又必须包含这些内容.编写这些基础结构延缓了操作系统探究项目的进度,同时也增加了进行操作系统探究的代价.为了解决这一新问题,犹他大学的FLUX探究小组开发了OSKit,它提供了一个框架和一组模块化的、具有简单接口的库以及一组清楚的、可重用的OS组件.实践表明,使用组件软件架构和重用技术会给操作系统实现领域带来大的影响.

1Oskit组件综述

目标系统通过OSKit的面向对象的COM接口来和这些组件进行交互.以下几节概述了OSKit所提供的组件.

1.1引导程序

大多数操作系统多有自身的启动加载机制,彼此互不兼容.这种加载机制的多样性并不是由于每个OS所要求的自举服务不同而引起,而是由于构建启动加载器的特定方式造成的.因为从操作系统探究的立场来看,启动加载器是一个令人不敢喜好的领域,因此OS开发者通常进行一个最小化、快捷的设计.由于设计理念和要求的稍微差别,每个启动加载器都不适用于下一个OS.为了解决这个新问题,OSKit直接支持多启动标准.

1.2核心支持库

OSKit核心支持库的主要用途是让客户OS更轻易访问硬件设施.它包含了一个较大的实用函数和符号定义的集合,该集合对于管理模式代码是非常具体的.和此相对应,OSKit的大多数其他库在用户模式代码中通常很有用.和OSKit的其余部分所不同的是,多数核心支持代码必须是针对特定系统结构的,而这些特定机器的细节对客户OS也是有用的.例如,在x86机器上,核心支持库包含一些函数,用来创建和操纵x86页表和段寄存器.其他OSKit组件通常提供建立在这些低层机制上的和体系结构无关的设施,但是为了提供最大的灵活性,和特定结构相关的接口始终可以被访问.

OSKit核心支持库在x86体系结构上尤为重要,因为该体系结构的OS级编程环境非凡复杂和模糊.核心支持库仔细地设置了一个基本的32位执行环境,初始化段和页转换表,安装一个中断向量表,并提供缺省的陷阱和中断处理程序.当然,客户OS能够修改或重载这些行为.然而,在缺省情况下,核心支持库自动地做所有必要的工作,以便使处理器进入一个方便的执行环境,此时中断、陷阱、调试以及其他标准设施已经如预期的那样开始工作.该库在缺省情况下自动地定位所有随内核加载的启动模块,并保留它们所在的物理内存.接下来,应用程序可以很轻易使用它们.客户OS只需以标准C语言风格提供一个main()函数.一切都设置好以后,内核支持库将用所有参数和由启动加载器传递过来的环境变量来调用它.

1.3内存管理库

如同在一个标准C语言库中实现的malloc()一样,内存管理代码典型地用于用户空间.通常并不适用于内核.设备驱动经常需要分配特定类型的内存,并伴随具体的调整属性.例如,对于内建的DMA控制器只能访问最初的16M物理内存.为解决这些内存管理新问题,OSKit包含了两个简单而灵活的内存管理库摘 要:(1)基于队列的内存管理器(或称LMM),它提供了功能强大且高效的原语来进行分配管理,并支持在一个池中管理多种类型的内存.(2)地址映射管理器(或称AMM)被设计用来管理不必直接映射到物理内存或虚拟内存的地址空间,它对OS的其他方面提供了类似的支持,诸如进程地址空间、分页、空闲块或IPC名字空间的管理.尽管这些库可以很轻易地应用在用户空间,但实际上它们是被非凡设计用来满足OS内核的需求.


1.4最小C语言库

成熟的OS内核一般都包含着相当数量的仅仅用来重新实现基本的C语言库函数如printf()和malloc()的代码.和此形成对比的是,OSKit提供了一个最小化C语言函数库,它围绕着最小化依靠性而不是最大化函数性和性能的原则来设计.

1.5调试支持

OSKit的一个最实用的好处是摘 要:给定一个适当的硬件设置,它马上就能提供给OS开发者一个完全源代码级的内核调试环境.OSKit内核支持库包括一个可用于GNU调试器(GDB)的串行存根模块,它在客户OS环境中处理陷阱,并使用GDB的标准远程调试协议通过一个串行程序和运行在另一台机器上的GDB通信.甚至当客户机OS执行自己的陷阱处理时,OSKit的GDB存根模块也是可用的.

1.6设备驱动支持

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

1.7协议栈

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

1.8文件系统

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

2结论

作为一个操作系统探究和开发的平台,OSKit大大减轻了操作系统探究和开发者的负担.它可以让开发人员避开复杂的底层,而把喜好集中和他们所感喜好的领域.开发者可以用自己编写的组件来取代OSKit中的部分组件,以满足自己特定的需要,从而丰富了操作系统的应用层.

【作者简介】

张铁(1981年11月—),男,河北省廊坊市人,同济大学软件学院硕士研究生.

相关论文

Linux网络操作系统安全机制探究

本文是一篇操作系统论文范文,操作系统方面毕业论文格式范文,关于Linux网络操作系统安全机制探究相关毕业论文题目范文。适合操作系统及嵌入。

宏观视角看预防腐败行为机制的构建

该文为关于法律意识类毕业论文格式模板范文,与宏观视角看预防腐败行为机制的构建相关法本毕业论文,可作为法律哲学专业法律意识论文写作研。

探究现代企业财务管理的运行机制

关于企业财务及财务风险及财务管理方面的免费优秀学术论文范文,关于企业财务类公司财务分析论文,关于探究现代企业财务管理的运行机制相关。