前言:我们精心挑选了数篇优质操作系统论文文章,供您阅读参考。期待这些文章能为您带来启发,助您在写作的道路上更上一层楼。
关键字组件重用操作系统OSKit
1引言
当前,操作系统的功能不断扩展,操作系统的类型呈现出多样化的趋势。一个小规模的开发小组已经不可能完全从头开始实现一个实用的操作系统,而一般情况下,研究人员只对操作系统的一些特定领域感兴趣,而对于另外一些元素,如启动加载代码、核心启动代码、设备驱动程序和内存分配代码等往往不感兴趣,但是一个可运行的原型系统又必须包含这些内容。编写这些基础结构延缓了操作系统研究项目的进度,同时也增加了进行操作系统研究的代价。为了解决这一问题,犹他大学的FLUX研究小组开发了OSKit,它提供了一个框架和一组模块化的、具有简单接口的库以及一组清晰的、可重用的OS组件。OSKit可以用来构建操作系统内核、外层服务和其他核心OS功能模块。OSKit提供了各种功能模块,诸如简单自举,一个可用于内核的最小化POSIX环境、与物理内存和其约束一致的内存管理、广泛的调试支持,以及高层子系统如协议栈和文件系统。开发者可以根据自己的研究兴趣或所要考虑的性能来使用这些模块,或用他们自己的模块来替代标准的OSKit模块。
OSKit公开了它内部的实现细节,允许用户从成熟的操作系统中不加修改地提取代码,然后通过一小部分经过仔细设计的粘接代码将它们合并到一起,隔离它们的依赖性,并输出良好定义的接口。OSKit使用这一技术整合了许多稳定而成熟的源代码,包括设备驱动、文件系统、网络协议等等。实践表明,使用组件软件架构和重用技术会给操作系统实现领域带来大的影响。
2组件技术简介
组件技术是一种较新的软件开发技术。到目前为止,还难以确定组件技术的明确定义。比如,对组件技术的常见说法有以下这些:“二进制软件单元”、“任意场合可部署的软件”、“特别适合第三方开发”和“规范定义的接口”等等。大致上可以这样理解:所谓组件,其实就是一种可部署软件的代码包,其中包括某些可执行模块。组件单独开发并作为软件单元使用,它具有明确的接口,软件就是通过这些接口调用组件所能提供的服务,多种组件可以联合起来构成更大型的组件乃至直接建立整个系统。组件的实现必须支持一种或者多种其用户所希望获得的接口。实现组件并不一定需要采用面向对象语言。为了构造新应用程序,软件开发人员找出适当的组件,将这些组件加入到正在开发中的应用程序,同时对应用程序进行测试并保证应用程序的组装工作按照预定的规划正常进行。采用组件技术能降低开发、测试和维护成本,提高可靠性和稳定性。
3Oskit组件综述
OSKIT的组件库提供了一般情况下更高层的功能,它通常只对外开放一些相关的公用调用接口。目标系统通过OSKit的面向对象的COM接口来与这些组件进行交互。以下几节概述了OSKit所提供的组件。
3.1引导程序
大多数操作系统多有自身的启动加载机制,彼此互不兼容。这种加载机制的多样性并不是由于每个OS所要求的自举服务不同而引起,而是由于构建启动加载器的特定方式造成的。因为从操作系统研究的立场来看,启动加载器是一个令人不敢兴趣的领域,因此OS开发者通常进行一个最小化、快捷的设计。由于设计理念和要求的轻微差别,每个启动加载器都不适用于下一个OS。为了解决这个问题,OSKit直接支持多启动标准,这一标准是由几个OS项目的成员共同设计的,它的目的是提供一个简单而通用的启动加载器与OS内核间的接口,从而允许一个启动加载器加载任何兼容的OS。
在进行操作系统研究时,多启动标准非常有用,这其中的主要原因是启动加载器在加载内核自身的同时还具有加载附加文件或者启动模块的能力。这里的一个启动模块只是一个普通文件,启动加载器不以任何方式解释它,而仅仅把它随同内核映像一起加载到保留物理内存块中。在启动内核时,启动加载器提供给内核以下内容:物理地址的列表、所有已加载的启动模块的大小,以及与每个模块相联系的由用户定义的字符串。这些启动模块和与它们相联系的用户定义的字符串由内核解释。这样做的目的是为了通过提供内核启动时需要的数据,诸如初始化程序、设备驱动和文件系统服务器,来减轻内核启动的负担。
3.2核心支持库
OSKit核心支持库的主要用途是让客户OS更容易访问硬件设施。它包含了一个较大的实用函数和符号定义的集合,该集合对于管理模式代码是非常具体的。与此相对应,OSKit的大多数其他库在用户模式代码中通常很有用。和OSKit的其余部分所不同的是,多数核心支持代码必须是针对特定系统结构的,而这些特定机器的细节对客户OS也是有用的。例如,在x86机器上,核心支持库包含一些函数,用来创建和操纵x86页表和段寄存器。其他OSKit组件通常提供建立在这些低层机制上的与体系结构无关的设施,但是为了提供最大的灵活性,与特定结构相关的接口始终可以被访问。
OSKit核心支持库在x86体系结构上尤为重要,因为该体系结构的OS级编程环境特别复杂和模糊。核心支持库仔细地设置了一个基本的32位执行环境(为了与MS-DOS兼容,x86处理器通常以16位模式开始),初始化段和页转换表,安装一个中断向量表,并提供缺省的陷阱和中断处理程序。当然,客户OS能够修改或重载这些行为。然而,在缺省情况下,核心支持库自动地做所有必要的工作,以便使处理器进入一个方便的执行环境,此时中断、陷阱、调试以及其他标准设施已经如预期的那样开始工作。该库在缺省情况下自动地定位所有随内核加载的启动模块,并保留它们所在的物理内存。接下来,应用程序可以很容易使用它们。客户OS只需以标准C语言风格提供一个main()函数。一切都设置好以后,内核支持库将用所有参数和由启动加载器传递过来的环境变量来调用它。
3.3内存管理库
如同在一个标准C语言库中实现的malloc()一样,内存管理代码典型地用于用户空间。通常并不适用于内核。设备驱动常常需要分配特定类型的内存,并伴随具体的调整属性。例如,对于内建的DMA控制器只能访问最初的16M物理内存。为解决这些内存管理问题,OSKit包含了两个简单而灵活的内存管理库:(1)基于队列的内存管理器(或称LMM),它提供了功能强大且高效的原语来进行分配管理,并支持在一个池中管理多种类型的内存。(2)地址映射管理器(或称AMM)被设计用来管理不必直接映射到物理内存或虚拟内存的地址空间,它对OS的其他方面提供了类似的支持,诸如进程地址空间、分页、空闲块或IPC名字空间的管理。尽管这些库可以很容易地应用在用户空间,但实际上它们是被特别设计用来满足OS内核的需求。超级秘书网
3.4最小C语言库
成熟的OS内核一般都包含着相当数量的仅仅用来重新实现基本的C语言库函数如printf()和malloc()的代码。与此形成对比的是,OSKit提供了一个最小化C语言函数库,它围绕着最小化依赖性而不是最大化函数性和性能的原则来设计。
3.5调试支持
OSKit的一个最实用的好处是:给定一个适当的硬件设置,它立刻就能提供给OS开发者一个完全源代码级的内核调试环境。OSKit内核支持库包括一个可用于GNU调试器(GDB)的串行存根模块,它在客户OS环境中处理陷阱,并使用GDB的标准远程调试协议通过一个串行程序与运行在另一台机器上的GDB通信。甚至当客户机OS执行自己的陷阱处理时,OSKit的GDB存根模块也是可用的。如果客户OS提供适当的钩子,它甚至支持多线程调试。除了基本的调试器支持,OSKit也提供了一个内存分配调试库,它可以跟踪内存分配并检测一般的错误,如缓冲区溢出和释放已释放的内存。这个库提供了与许多普通应用程序调试器相似的功能性,所不同的是它运行在由OSKit提供的最小内核环境中
3.6设备驱动支持
在OS开发和维护中最艰巨的一个任务是支持多种多样的I/O硬件。这些复杂的设备常会含有潜在的错误,而新硬件的又常常伴随着不兼容的软件接口。由于这些原因,OSKit采用了为现有内核开发的稳定的、经过充分测试的驱动程序。OSKit使用了一种封装技术,将现有的驱动程序代码基本上未加修改地合并到OSKit中。这些现有的驱动程序被一个OSKit粘结代码层所包装,从而使得这些驱动程序可以在与开发它们的环境完全不同的环境中工作。目前,来自Linux的大多数以太网卡、SCSI和IDE磁盘的设备驱动程序被包括进来,总数超过了五十种。用同样的方式,来自FreeBSD的八个字符设备驱动程序也被包含了进来,它们支持标准PC控制台和串口及不同的多串口板。由于OSKit把这些驱动仔细地进行了包装,FreeBSD驱动程序可以与Linux驱动程序一起工作。
3.7协议栈
OSKit提供了一个完整的TCP/IP网络协议栈。如同驱动程序一样,有关网络的代码也可以通过封装机制被合并进来。OSKit当前可以从Linux中获取网络设备驱动程序,它们是PC平台可获得的最大的免费资源。OSKit的网络组件继承于FreeBSD4.4,它通常被认为具有更多成熟的网络协议。这显示了使用封装机制将现有软件包装成灵活的组件的第二个优点:即从不同的资源中获取最好的组件,并让它们一起被使用。
3.8文件系统
通过使用封装技术,OSKit吸收了NetBSD的基于磁盘的文件系统代码。NetBSD之所以被选择为首要资源库,是因为在可用的系统中,它的文件系统代码被最清晰地分离了出来,而FreeBSD和Linux的文件系统与它们的虚拟内存系统结合的更紧密。当前,OSKit也把Linux文件系统合并了进来,以便能够支持多种类型的文件系统格式,如Windows95、OS/2和SystemV的文件系统格式等等。
OSKit文件系统输出的COM接口类似于许多Unix文件系统所使用的内部VFS接口。这些接口具有很好的粒度,使我们可以不必接触OSKit文件系统的内部。例如,OSKit接口只接受简单的路径名组件,允许安全封装的代码执行适当的访问许可检查。
4OSKit的现状
自从在1996年6月了OSKit的第一个公开发行版以来,OSKit已经更新了多次,每次更新都增加了一些算法,并修正了一些错误。最新的发行版是2002年3月的版本。由此可见,OSKit一直处于操作系统开发平台的前沿,其自身也在不断完善和发展。
5结论
作为一个操作系统研究与开发的平台,OSKit大大减轻了操作系统研究与开发者的负担。它可以让开发人员避开复杂的底层,而把兴趣集中与他们所感兴趣的领域。开发者可以用自己编写的组件来取代OSKit中的部分组件,以满足自己特定的需要,从而丰富了操作系统的应用层。总之,OSKit满足了实际客户系统的需求,有助于操作系统的研究与开发。
基于Web的嵌入式操作系统在远程监控中的应用
远程监控客户端、嵌入式Web服务器、监控对象三部分组成了远程监控系统。用户根据具体的工业现场环境在客户端的监控界面开发一个监控界面,通过本地通过串口或者远程网口上传到嵌入式Web服务器,这样既方便远程管理又方便更新调整工业现场变化后的界面。通过远程客户端运行运行软件,在远程监控界面以Internet网连接入到嵌入式Web服务器,发送用户的请求,建立连接后,将监控界面文件通过服务器传给客户端,还原该监控界面后,用户就可以根据实时控制界面获知监控对象的状态,用户还可以通过对监控界面按钮,对监控对象进行控制。
嵌入式Web服务器有Confingure模式、Download模式、Upload模式、Run四种工作模式。通过Confingure模式设置服务器环境参数;根据Download模式,可以从嵌入式Web服务器下载客户端监控界面进行远程监控;在Upload模式,上传监控界面配置文件到嵌入式Web服务器中以备用;通过Run模式,根据监控界面为工业现场提供实时数据,实现远程监控。
基于Web的嵌入式操作系统在信息家电中的应用
基于Web的嵌入式操作系统,通过嵌入式信息家电平台控制节点。通过IE浏览器访问信息家电控制台,并对其进行远程控制,达到通过以太网、蓝牙等无线网络环境对各类信息家电设备,实现信息家电的数据传输控制。信息家电是以应用为主要目的,基于计算机技术,并且对功能及其可靠性,设备成本、能耗以及体积都有严格要求的专用计算机系统。
下面是由本课程的全部教学内容所提炼并加以有机整合而形成的出的精髓教学框架:
(1)系统发展历史的回顾与当前技术发展潮流追踪许多学校的计算机专业在讲解操作系统课程时,往往局限于介绍具体方法和技术细节,忽略对技术发展历史和当前技术潮流的诠释。既不能开拓学生专业视野,又无法对专业历史有深入的了解。本门课程争取使用3-4学时的时间详细讲解操作系统的发展历史、著名人物、分类体系和技术发展趋势。这样的内容极大的激发了学生的学习兴趣和专业使命感,具有很好的教学效果。
(2)作系统基本设计原理与核心技术方法的分析讲解本门课程注重对基础专业理论的讲解,从五个方面详细剖析操作系统的核心原理。对进程管理、存储管理、文件系统、设备管理、系统接口等基本的设计原理均进行了详细的介绍和分析。操作系统的各种基本设计原理中包含了大量的算法设计与技术实现优化考虑,在教学过程中,要特别注重剖析算法设计思想和优化教学法的差别,强调激发学生的主动思考能力,而不是僵化的向学生灌输思想。
(3)真实操作系统案例的组成结构与实现特色剖析对比。操作系统的设计原理体系严密,各种技术方法错综复杂。要注重选用真实操作系统作为学习的案例。通过对真实案例的剖析以提高学生的感性认识。例如在讲解“进程管理”时,将Linux系统与WindowsXP系统进行对比;讲解“文件系统”时,对Linux、FAT32、NTFS等各类不同的文件系统进行对比;讲解内存管理时,对Minix、Linux、Win-dowsXP系统进行对比。这样的教学内容虽然备课难度大,但是教学效果却非常好。
(4)操作系统原理与计算机原理、编译原理、数据库、计算机网络等课程的关联。《操作系统原理》课程是计算机及相关专业的学生在本科阶段“承上启下”的重要课程,讲授过程中必须注重与其他专业基础课内容和知识的结合。在教学过程中,专门讲解“操作系统硬件基础知识”以融合《计算机原理》课程知识;重点分析“应用程序编译链接过程”以融合《编译原理》课程知识;在“进程同步互斥、I/O设备同步阻塞-异步传输”的内容中有机融合《数据库原理》、《计算机网络》的基本概念。这样的关联式教学方式使得学生能够将多门专业基础课程进行有机的融合贯通,有效的促进了专业理论体系的完善。
基于以上对教学内容的有机的系列化分类,在选用优秀计算机经典教材的基础上,必须强调教学方式的科学与合理,主要采用以下教学方式:
(1)定位于专业基础必修课,帮助学生建立扎实的专业理论基础。计算机领域各相关专业的学生都需要建立扎实完整的软件基础理论体系。《操作系统原理》是讲述计算机硬件资源管理、应用程序运行控制、人机交互接口实现等内容的基础性课程,在专业人才培养方面具有极为重要的作用。应该不断加强对《操作系统原理》课程的教学投入,积极完善师资队伍、改进教学计划、建立完整实践环境、主动追踪技术发展潮流,使得本门课程的教学质量不断提升。
(2)面向应用、软件等各专业学生授课,实现“承上启下”的总体教学目标。《操作系统原理》是计算机科学与技术专业必修基础课,是自动化专业的专业选修课,也是非计算机专业的软件方向主干课。在教学计划中,本门课程最主要的作用就是实现对低年级专业基础知识的综合与提升,帮助学生建立系统、完整的专业基础理论体系,培养学生的研究型思维和动手实践能力,开拓学生的专业学术视野,为后续课程的学习和专业发展奠定重要的基础。
(3)原理、实践、现实应用相结合,为培养高水平专业人才服务。《操作系统原理》是综合了基础理论讲授、动手实践、观察体验、最新技术发展潮流追踪等多项内容的专业基础课程。课程建设存在教学工作量大、上机实践环节重要、学生学习任务重等特点,课程教学过程中,常常存在原理讲授与上机实践脱节、课堂学习与现实应用剥离的情况,导致老师在教学过程中常采用“灌输式”教学法、学生在学习过程中常采用“机械记忆”的学习习惯,教学质量难以提升。为此,在《操作系统原理》课程建设中应该积极进行教学改革和创新,近年来不断引进国内外经典操作系统教材,努力搭建多种操作系统平台的上机实践环境,加强师资队伍建设和教学督导力度,加强对技术发展潮流的追踪。
(4)“启发式、关联式”的课堂讲授与课堂讨论相结合。在对基础性的操作系统原理进行讲解时,要注重讲授与讨论的结合,教案的内容组织并不完全遵循各类教材的内容安排,在讲解顺序、思路整理方面均体现了教师对学习过程的把握和指导。在详细讲解各类原理之前,安排小规模“课堂讨论”分析猜测设计思想,激发学生的好奇心和主动思考能力;在讲解原理的过程中,不断的问“为什么”,提高学生的对比分析能力;在原理讲解完成后,进行系统性的总结和展望,指导学生建立系统性的思维方式。为激发课堂讨论的积极性,对讨论过程中表现优异的学生给予“小额加分”的激励,鼓励学生表达自己观点。