浅谈组件机制与操作系统实现.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
浅谈组件机制与操作系统实现

浅谈组件机制与操作系统实现   【文章摘要】 OSKit可以用来构建操作系统内核、外层服务和其他核心OS功能模块。OSKit提供了各种功能模块,诸如简单自举,一个可用于内核的最小化POSIX环境、和物理内存和其约束一致的内存管理、广泛的调试支持,以及高层子系统如协议栈和文件系统。 【关键词】 OSKit;操作系统;C语言 0 引言 当前,操作系统的功能不断扩展,操作系统的类型呈现出多样化的趋向。一个小规模的开发小组已经不可能完全从头开始实现一个实用的操作系统,而一般情况下,探究人员只对操作系统的一些特定领域感喜好,而对于另外一些元素,如启动加载代码、核心启动代码、设备驱动程序和内存分配代码等往往不感喜好,但是一个可运行的原型系统又必须包含这些内容。编写这些基础结构延缓了操作系统探究项目的进度,同时也增加了进行操作系统探究的代价。为了解决这一新问题,犹他大学的FLUX探究小组开发了OSKit,它提供了一个框架和一组模块化的、具有简单接口的库以及一组清楚的、可重用的OS组件。实践表明,使用组件软件架构和重用技术会给操作系统实现领域带来大的影响。 1 Oskit组件综述 目标系统通过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环境

文档评论(0)

linsspace + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档