欢迎来到易发表网!

关于我们 期刊咨询 科普杂志

操作系统论文优选九篇

时间:2022-07-11 04:42:49

引言:易发表网凭借丰富的文秘实践,为您精心挑选了九篇操作系统论文范例。如需获取更多原创内容,可随时联系我们的客服老师。

操作系统论文

第1篇

关键字组件重用操作系统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满足了实际客户系统的需求,有助于操作系统的研究与开发。

第2篇

考核内容及计分方法

A地区通信公司根据当前所管辖的网络系统维护单位的具体情况,要求各单位网络运维工作的考核由网络运行质量管理、市场支撑管理、网络运维成本管理、基础管理等指标构成(考核指标分类、主要指标、权重等信息见表1)

考核办法实施

对于日常工作完成情况,A地区通信公司考核网络运维生产各专业,包括网管、交换、传输、数据、电源空调、本地网线路、接入网、无线市话、大客户业务响应、资源管理等专业,网络运维部在年底组织对单位网络运维工作现场检查,对重点考核内容打分。

对于专项重点工作完成情况考核,主要是考核各维护单位对市公司全年安排的重点工作完成情况,如末梢设备整治、无线市话网络优化及网络运维巡检等重点工作。

考核内容以“大客户电路故障恢复及故障报告提供及时率”为例进行列示。在考核的过程中,为了防止网络系统问题带来的损失,还制定了“否决内容”(指对各单位指标完成情况进行检查或抽查),对于发生以下情况之一的单位,取消全年考核资格,以0分计:一是未能按时、按质完成重要通信、抢险救灾、战备以及其它应急通信任务,造成严重后果;二是拒不服从省、市公司的生产调度令造成严重网络责任事故;三是在发生重大故障后,不按照省、市公司相关管理规定进行报告,或者故意隐瞒故障、在故障原因报告中恶意歪曲事实、在故障调查中有明显舞弊行为;四是因违反互联互通原则给企业造成重大负面影响;五是在考核指标数据采样点的设置或数据上报中存在弄虚作假行为。

对考核数据的统计及保存,各单位应根据本考核细则中的各项指标定义解释、数据来源及计分方法,认真完成与指标相关的原始数据测试、统计、汇总和报送工作,并且妥善保管测试报告、电路调单、故障报告、网管数据等原始记录。

具体考核指标与准则举例

由于网络系统内部控制考核项目较多,指标繁杂,本文列示了“大客户电路故障恢复及故障报告提供及时率”的指标定义、计算与方法说明如下:第一,指标定义:统计期内电路故障及时恢复比率和及时提供故障报告比率的加权平均。

第二,指标值:全年累计100%。

第三,计算公式:考核的范围为所有通过省大客户故障处理系统受理的大客户业务故障。大客户电路故障恢复及故障报告提供及时率=第四,考核不含不可抗力和客户原因等造成的超时电路业务障碍。对故障原因不明且电路障碍业务恢复超时故障,则障碍受理方和有关责任方各计未及时恢复业务1次;对故障原因不明且电路障碍业务恢复未超时故障,则障碍受理方和有关责任方各计未及时恢复业务0.5次。

大客户电路故障恢复时限按照《通信业务故障处理及故障报告管理规定》执行,要求提供故障报告数为管理规定要求提供的报告数(包括超时故障、重要客户故障、重保期间故障,客户或客服部门要求提供故障报告的故障,上级维护部门要求提供报告等)。

第五,数据来源及统计报送周期。数据来源于省内大客户故障处理系统的统计数据,大客户业务响应部按月统计、汇总,并在年终计算各单位指标完成情况。第六,计分方法。完成或超过指标值的得基本分,不能完成核定指标值的,每低0.5个百分点扣1分,直至扣完为止。第七,评分标准。具体的大客户业务相应考核标准如表2所示。

A地区通信公司对网络系统考核评价的启示

网络系统的运行维护和安全措施是通信公司的基础工作,也是非常重要的一项内部控制工作。相关启示如下:第一,考核指标与业务工作紧密结合,具有很强的实际操作性。

第3篇

一、课程教学难点

1.理论性强

该课程教学内容理论性强、概念抽象、涉及知识面广,学生时其整体实现思想和技术往往难以理解,学习时有较大难度,大部分学生有一种畏难情绪。因此学生很容易陷入疲于记忆的状态,忽略了对课程各部分间关系和课程教学目标的把握。因而该课程是计算机专业中教师“最难教”,学生“最难学”的课程之一。

2.学习效果见效不快

很多学生对学后有立竿见影效果的课程兴趣较大,如程序设计语言,学生学会了便很快可以就某个问题编写程序上机运行,颇有成就感;而对诸如操作系统这样原理性强,实验要求高,设计一个操作系统又不现实的课程,一些学生因感觉学习后效应不会立即显现而对课程重视度较低。

二、教学目标

操作系统是目前最复杂、技术含量最高的软件,在计算机专业软、硬件课程的设置上起着承上启下的作用,其中的许多设计思想、技术和算法都可以推广和应用到大型的、复杂的系统设计,以及其他领域。因此,其教学目标应重在培养学生理解和掌握计算机操作系统的基本工作原理、设计技术及设计方法,培养学生开发系统软件和大型应用软件的意识和能力,同时还要让学生了解现代操作系统的新思想、新技术和发展研究动向。

三、课程知识体系设计

鉴于以上课程教学难点,教师若能从繁杂抽象的理论中理出一个脉络清晰的课程知识体系呈现给学生,将为有效达到教学目标要求起到事半功倍的作用。该课程教学内容有纵、横两条主线,纵线主要指操作系统各功能的设计思想、处理机制,横线主要指功能实现的具体技术方法、不同环境下的实现差异。因此,整个课程知识体系可按纵、横两条线展开,遵循知识、能力、素质协调发展的原则,从知识模块、知识单元和知识点3个层次来设计。其中知识模块代表特定学科子领域,可包括若干知识单元;知识单元代表知识模块中的不同方向,可包括若干知识点;知识点代表知识模块中单独的主题,是教学活动中传递教学信息的基本单元。

1.纵向功能线

本文的纵向功能线是从资源管理功能出发来设计,通过基于操作资源管理功能的知识建构,学生能明确所学内容在知识体系中的层次、位置、关系。此处为使结构更清晰,按操作系统资源管理功能出发的纵向功能线细化为进程管理、处理机管理、存储器管理、设备管理、文件管理和用户接口六个知识模块,由此设计的纵向功能线知识结构如下:

(1)进程管理知识模块包括进程概念、进程调度、进程互斥、进程同步、进程通信、进程死锁各知识单元。进程概念包含进程特征、进程状态与转换、进程控制各知识点;进程调度包含调度时机、调度算法、调度过程各知识点;进程互斥包含与时间有关的错误、临界资源与临界区、临界区使用原则、临界区互斥访问的解决途径、临界区互斥访问的解决途径各知识点;进程同步包含信号量同步机制、生产者与消费者问题、读者与写者问题、哲学家进餐问题各知识点;进程通信包含忙等待策略、睡眠和唤醒策略、消息传递策略各知识点;进程死锁包含产生原因、必要条件、解决途径各知识点。

(2)处理机管理知识模块包括分级调度、调度算法、算法评价各知识单元。分级调度包含作业调度、交换调度、进程调度各知识点;调度算法包含作业调度算法、进程调度算法各知识点;算法评价包含作业调度算法评价、进程调度算法评价各知识点。

(3)存储器管理知识模块包括存储管理功能、存储管理方案各知识单元。存储管理功能包含内存分配与回收、地址映射、内存共享、内存保护、内存扩充各知识点;存储管理方案包含分区存储管理、页式存储管理、段式存储管理、段页式存储管理各知识点。

(4)设备管理知识模块包括数据传送控制方式、并行技术各知识单元。数据传送控制方式包含程序直接控制方式、中断方式、DMA方式、通道控制方式各知识点;并行技术包含通道技术、中断技术、缓冲技术、分配技术、虚拟技术各知识点。

(5)文件管理知识模块包括文件结构、文件存储空间管理、文件目录管理、文件存取控制各知识单元。文件结构包含文件逻辑结构与文件存取、文件物理结构与存储设备各知识点;文件存储空间管理包含空闲文件目录、空闲块链、位示图各知识点;文件目录管理包含文件目录形式、文件共享与保护、目录检索各知识点;文件存取控制包含文件存取控制方法。

(6)用户管理知识模块包括命令接口和系统调用知识单元。命令接口包含脱机控制命令、联机控制命令知识点;系统调用包含设备管理类命令、文件管理类命令、进程管理类命令、存储管理类命令、线程管理类命令各知识点。

2.横向技术线

操作系统知识点看似繁杂,但究其原理,在对不同系统资源功能进行管理时,所采取的策略和方法有很多是相同的。因此通过对重要方法和机制进行贯穿式的横向技术线,可使被条块分割的教学内容有效关联起来;通过横纵交错的连接,可使看似离散的知识有稳固而紧密衔接的结构。从操作系统四种重要实现技术出发的横向技术线包括中断技术、共享技术、虚拟技术和缓冲技术。当然,有些技术在其它相关课程中已有介绍,也可看出其在整个计算机系统中的重要程度,由此设计横向技术线知识结构如下:

(1)中断技术知识模块是实现程序并发执行与设备并行操作的基础,它包括中断类型、中断优先级、中断事件各知识单元。中断类型知识单元包括外中断、内中断知识点;中断优先级知识点在不同的系统中有不同的规定;中断事件知识单元包括进程创建与撤消、进程阻塞与唤醒、分时时间片、缺页中断与缺段中断、I/O操作、文件操作各知识点。

(2)共享技术知识模块是提高资源利用率的必然途径,它包括处理机共享、存储共享、设备共享、文件共享各知识单元。处理机共享包含进程的并发执行;存储共享包含外存储器共享、内存储器共享知识点;设备共享包含SPOOLing系统;文件共享包含便于共享的文件目录。:

(3)虚拟技术知识模块是把一个物理实体变为若干面向用户的逻辑单元,使资源的用户使用与系统管理相分离,从而提高资源利用率和安全性方,它包括虚拟处理机、虚拟存储器、虚拟存储器方法、虚拟设备、虚拟文件各知识单元。虚拟处理机包含多进程管理;虚拟存储器包含地址转换、中断处理过程、置换知识点;虚拟存储器方法包含页式管理、段式管理、段页式管理各知识点;虚拟设备包含设备共享;虚拟文件包含文件共享。

(4)缓冲技术知识模块是异步技术的实现前提,可大大提高相关资源的并行操作程度,它包括存储管理缓冲技术、设备管理缓冲技术、文件管理缓冲技术各知识单元。存储管理缓冲技术包含快表;设备管理缓冲技术包含硬缓冲、软缓冲、SPOOLing系统中的输入/输出井知识点;文件管理缓冲技术包含记录成组技术、文件表的打开。

四、课程知识体系操作

知识体系的设计显然要有必要的操作作为支持才能使其与学习者间进行互动,形成交流并达到知识的内化。依据上述的知识体系设计,该课程教学可采用以下两个步骤进行操作,一是以“核心拓展”的方式进行纵向功能学习,二是以“小组学习和共同学习相结合”方式进行横向技术综合学习。

“核心拓展”方式中核心指六大知识模块,它们也是该课程的核心内容,教师应结合具体系统的具体实例以讲授方式进行,讲授过程中对于一些关键算法一定要以具体实例加以讲解,不能照本宣科。“小组学习和共同学习相结合”方式可采用将多次出现的具体技术单独提出来,讨论哪些功能应用了该技术。分小组,一个小组负责总结一项技术,然后以小组宣讲共同讨论的方式来加深技术对功能的应用。

通过这两个步骤的操作,整个课程的知识体系便可以横、纵两条线的形式清晰地呈现在学生面前,为培养学生从离散到系统性的学习和思维习惯创造条件。

参考文献:

第4篇

关键字:计算机软件、计算机语言、软件开发

自软件开发到现在已有四十多年历史了,在整个软件发展历史过程中,已经取得了划时代的成就,为了更好的理解计算机软件是计算机的灵魂并了解她的今天,这里让我们一起来回顾她的昨天。

我们将悠久的计算机软件历史分成三个阶段:

开创阶段:1955年到1965年

稳定阶段:1965年到1985年

发展阶段:1985年到现在

开创阶段

计算机在1946年出现时,占地2百余平方米,用电数千瓦,价值百万美元,而运行速度只有每秒千次,但它却为破译密码和武器弹道运算立了大功。六十年代大型计算机已发展到每秒百万次以上,能够进行快速复杂的计算,随着科研、金融和政府部门的需要而逐步形成了较大的计算机市场。

而计算机软件历史真正开始是在美国和欧洲的实验室里,大多数研究结果也产生于实验室。它们多数来自于学术界,其余产生于政府和私人公司。

在1955年到1965年这个期间,运算速度越来越快、价格越来越便宜的新计算机不断涌现,软件工作人员就需要不断针对不同计算机写出新的软件。这种变化速度令软件人员应接不暇。

在此阶段,计算机硬件向着专门用途发展,科学与商业领域需要的是完全不同的机器硬件。商业计算机具有变字长的特性,即有“清字标记”和“置字标记”,指令集为十进制。而科学计算机使用的是固定字长,当时定36位为一个字,而不是采用二进制计算。这种不同用途的机器使用不同字长,这给编程带来难以想象的困难。

频繁重写相同的软件触发了另一思想——软件移植,工业界中的软件研究人员试图将一台机器上汇编语言自动移植到另一台,但是却失败了。原因是60%或80%代码较容易移植,而余下的40%或20%必须人工移植,又是较复杂的代码,因此非常困难。多年来仍然不能完全解决问题,直到高级语言的产生。最早的FORTRAN语言在五十年代中期诞生的,五十年代后期出现了第一版COBOL语言,而ALGOL语言产生于六十年代早期。当时,高级语言不能被编制人员所接受,他们认为真正的编程人员应当使用汇编语言。

之后,软件业从计算机工业中独立出来,成为一枝新秀。那时,硬件厂商开放了他们的系统软件(由于没有这种开放,不能进一步推销他们的产品),有几个公司开始提供定制软件的服务,然而那时没有专门经销软件的公司。由于软件免费,用户相互赠送,使软件不断重用与推广,并鼓励共享软件的发展。例如,IBM科学用户组织SHARE提供了软件重用的目录清单,包含了三角函数分类和合并计算的多个数学程序,并对进入了SHARE目录中的软件产品,能给予此领域的最高荣誉。

60年代初期,学术上还没有计算学科、计算机科学和信息系统,然而却在实践中产生了以后称为“软件工程”的萌芽。软件工作者开始学习模块编程的方法,并涵盖了基本数据结构有关的子程序,从而使其易访问。现在,人们称为数据提取,并进一步拓宽到面向目标,但是那时的软件人员就已经意识到它的思想与价值。

此阶段,曾经出现过软件危机。即软件方面投入的资金和人力无法控制,软件开发完成的时间无法确定,软件的可靠性等等。例如,1962年7月22日美国飞往金星的火箭控制系统中的指令,DO5I=1,3误写成DO5I=1.3,使火箭偏离轨道,被迫炸毁。

此阶段是激动人心的年代,随着计算机硬件以令人生畏和惊奇的快节奏发展,计算机软件在计算机业中越来越占据着重要的地位,她开创了自己的事业,从计算机业中独立出来。

稳定阶段

这期间,出现了IBM等计算机大公司,是大型机硬件导向占主导地位的阶段。此时计算机成为专业人员使用的专门设备,普通老百姓用不了,也用不起。年产量不足数万台,市场有限,这样IBM360计算机将软件工业带入了稳定发展阶段。

IBM360采用了系列机的思想,开创了CISC时代(复杂指令系统计算机),目的能使指令系统兼容。新型机或高档机的指令系统在原有机型上只能扩充而不能减少任何一条指令,以达到软件兼容的目的,这样就导致日趋庞大的指令系统使计算机硬件的研制周期变长、运行速度慢、可靠性差、难以调试和维护。为了改进,提出了RISC(精简指令系统计算机)技术。RISC技术使指令数量大大减少,再加上一些其他措施(如指令系统面向寄存器,使数据能直接存储),从而大大减少指令执行所需要的周期数,极大的提高了计算机的计算速度。同时IBM360机为软件领域带来了重要发展。它使科学与商业应用合二为一,且同时使用十进制和二进制两种算法,它不再有讨厌的变字长。

随后,又产生了笨重的工作控制语言(JCL),使程序员只要把卡片塞进读卡机,然后按“启动”就可以运行程序。JCL要求用全新的语言编写程序,它能告诉计算机和操作系统按人的需求做相应工作。JCL太繁琐,这也许因为它包括了科学和商务所需的一切服务功能。然而JCL是360机上最不受欢迎的程序语言。

随着360机汇集科学和商务应用在一台计算机上,IBM也希望将所有的计算机语言合成一种语言。PL/1就这样诞生了,它不仅包含科学计算FORTARN和商务计算COBOL语言的功能,而且还具有新生语言ALGOL的功能。

除了IBM360带来的软件发展外,在稳定阶段,形成了软件的独立经销。几个敢于冒险的软件商开始销售他们的软件产品。这在当时极其不易,因为硬件厂商为阻碍软件发展,防止软件分离以形成独立行业,故意将软件的价格压得很低,无利润可赚。随着软件领域的稳定发展和新软件产品的问世,它们逐渐成为公司和市场的商品,价值连城。软件维护与更新也成为一项日益重要的工作。从而形成了计算机软件市场经济。

稳定阶段中开始出现了计算机学科的学术讨论。第一个计算机科学程序在六十年代晚期奠基,不久以后又编制了第一个管理信息系统程序。当时计算机软件工程还没有从计算机学科中分离出来,直到微型计算机年代才独立成为一门学科。尽管当时没有形成学科,然而软件工程研究一直在进行,重点聚集在计算机语言的问题上。

在此阶段,一些计算机科学家大力宣传他们引入的新思想。人工智能就是第一个竭力宣扬的学科,即称之为“有知觉”的机器,可以模仿人类大脑的功能,并期望代替人类大脑去做任何事情。

随后又出现了“控制领域”的议题。反控制反垄断的战斗打响了,美国司法部门IBM公司,声称它发展太快,且正在垄断计算机行业。当时,许多人将硬件工业比喻为“白雪公主和七个小矮人”,这里IBM是白雪公主,其他计算机硬件小公司是七个小矮人。例如RGA、GE和Xeroe等等公司。这些小公司逐渐萎缩,直到从计算机行业中消失。标准化组织也成为当时反控制反垄断的急先锋。它坚持只有统一计算机标准,各个公司才能参与并达到公平竞争。

同时,软件商与硬件商也开始竞争。硬件商努力保持软件的低价,以阻碍软件行业的形成。但是无论怎样阻挡,总有一些软件商脱颖而出,成为胜利的娇娇者。

此阶段由于计算机硬件变化节奏缓慢一些,属于较平稳的年代,计算机软件随着平稳发展,并确立软件在市场的重要地位,成为商品并逐渐变得被人们理解和接收。

发展阶段

此阶段是再一次激动人心年代,计算机已经普及和无处不有,同时软件业在计算机行业成为不可缺少部分并取得了辉煌胜利。

这个阶段是软件发展过程中最重要的时期。因为PC机和工作站以半年更新一代的令人目不暇接的速度,势不可挡地入侵小型机、中型机甚至大型机领域,从而使计算机无处不在,计算机走出了象牙塔,走进了平常百姓家庭,走进了普通人办公室。在家里、办公室、银行、邮局等生活工作的周围,处处可见计算机的应用业绩,普及流行速度极快,蓬勃向前。

过去存在的大量问题被解决了。老的JCL问题已经由友好用户、友好程序界面解决。图形用户界面(GUI)普及与流行,业已成为八十年代计算机领域最伟大的功绩。以前的FORTRAN和COBOL语言都没能解决用户界面的友好问题,而可视化软件编程才改变了这一现状。

由于VLSI的迅速发展,RISC的控制器又很简单,这就使RISC能集成在一个芯片上。CISC控制器需占芯片面积50%以上,而RISC的控制器仅占6-10%,这使RISC芯片具有极高的性能。到九十年代RISC技术被引入了到PC机内,使同样功能的计算机成本只有CISC的一半不到。随着VLSI进一步发展,已使巨型机上使用的并行处理技术能融入到RISC中。一方面采用新材料、新工艺,进一步提高主频,另一方面采用了超级流水线技术、并行流水线技术和超长指令字VLIM技术,极大地提高了RISC芯片的并行处理能力,使RISC进入了具有划时代的时期。

软件作用和价值牢固地树立起来了。人工智能、知识工程、专家系统以及神经网络领域的研究得以发展与深化。软件市场在世界范围内比较快的速度增长,在美国犹他州已出现以软件为主的第二高技术产业区。目前软件的发展速度已超过硬件产业,占信息产业的主导地位。美国垄断世界软件市场的格局,一时很难发生变化。微软公司软件巨头比尔.盖茨在五年前已成为美国首富,现在又是世界首富。随着市场分割,过去反控制反垄断的竞争也被分解了。IBM公司成为大型机之首;Intel公司是计算机芯片之王,也可以称为计算机硬件之王;Microsoft公司成为微机软件之冠。但是希望成为大型机软件之王的竞争仍然在继续。

软件特性体现为:软件进入结构化生产时期,以结构化分析和设计,结构化评审,结构化程序设计以及结构化测试为特征;从八十年代中期开始,软件生产进入以过程为中心的开发阶段;从1995年开始,逐步进入以软件过程,面向对象和构件重用等技术为基础的软件工业化生产时代。

此阶段软件业绩为:

1)软件重用技术

软件重用的目的是使非结构化、非标准化程序变为结构化、标准化,并形成大量能重用的计算机构件和模块。软件重用技术使软件的开发基本上变成了搭积木,把需要的对象和功能模块拼起来即可。它节省了大量的人力与物力,减少了重复开发。这种技术可以应用在数据库管理和信息系统管理上,MicrosoftAccess等软件均采用此软件技术,它们集成了大量应用的基本构件和模块便于重用。

只有可维护性软件才有可能最大限度地重用,而重用部分越多,维护成本越低,效率就越高。不可维护性到可维护性软件的重构是维护方法学的关键。最大限度地重用现存软件是软件维护方法学的重要思想原则。可重用是可维护性的基本属性和最大特征。

就软件重用而言,可有四个层次的重用:

(1)开发过程重用

主要指开发规范、开发方法及工具、软件标准等的重用,也称为开发支持环境重用。

(2)软件构件重用

这里软件构件指文档、程序及数据。应该将软件构件可重用性作为主要设计指导思想。

(3)用户业务知识重用

用户现存系统的业务处理过程、特定专业领域的需求特征等知识的重用。

(4)市场知识重用

应用领域标准、行业标准、市场规律知识的重用。

2)面向对象技术

八十年代中期以来,各个领域的发展和变化越来越快,对应用软件不断提出新的功能要求,这就使以功能为基础的软件体系改动较大,甚至推倒重来。八十年代末发现,使用面向对象技术能极大的提高软件的可维护性。而且它还有很多其他的优点,例如提高软件开发率,提高软件的可靠性和安全性等等。面向对象技术获得了极大欢迎,终于成为九十年代软件界最大的热点。随着发展,面向对象技术形成了OOP(面向对象编程)、OOD(面向对象设计)、OOA(面向对象分析),成为完整的软件开发方法学。

现实世界中的事物抽象到问题空间就称为对象。在面向对象技术中,对象被定义为“对一组信息和在其上的操作”,其中的信息就是数据,它反映的是对象的属性状态,操作则是对对象的处理。面向对象系统就是由对象组成的复杂系统,系统中所有对象的状态共同构成系统的状态,对象总是从一个初始状态出发,在对象之间的相互作用过程中不断改变着自身的状态。一个对象请求另一个对象执行某一处理或回答某些信息的要求称为“消息”,对象与对象之间的相互作用就是通过消息来实现的。

面向对象技术的最大优点就是软件的可维护性好。

3)集成工具与CASE技术

今天,已将过去单个的工具集成在一个系统中,用于软件开发,形成了集成工具。例如,我们经常使用的字处理工具,它只有一个工具菜单,但是却包含拼写检查、语法检查、词库和字词计数等功能。我们期待用于软件开发的系统收集了所有必需的工具,它必须支持文本和图像,也含有相关的数据库,能自动移植并进行计算机低层设计等。编程系统不仅含有编译程序,还应该支持编辑、调试与测试,最好能支持程序建立并在建立过程中检测它们的结构。

而CASE技术,即称谓“支持软件工程方法学的计算机辅助手段”。它为实现从软件工程诞生起就面临着如何组织人员进行集体作业和如何逐步代替人进行编程的两大任务。而且首先是解决前者———确定有次序、有效率、科学的工程作业方法,然后才能一步步用计算机取代各工程阶段的人工编程。软件工程的最终目的就在于软件自动化。

CASE技术有两个突出特点,使开发支持工具与开发方法学统一和结合起来,通过实现分析、设计、程序开发与维护的自动化,提高整个软件开发工程的效率。如果方法驱动器理论得以实现,软件自动化将成为现实。尽管目前真正实现的还仅限于方法指导系统,但CASE的迅速发展仍超出了辅助软件工程的范围。

综上所述,CASE的发展有待于软件工程方法的发展。它不仅给传统软件工程方法以新生,也推动着各种软件工程方法的演变、合并和淘汰,为新软件工程方法理论实用化开辟着道路。所以今后的软件工程应是“方法学+CASE技术”,两者共同协助开发人员控制和管理软件。当方法驱动器理论变为现实后,CASE与软件自动化可能会变成同义词。虽然今天的软件自动化尚不完全,但为了区别传统软件工程,我们以更明确的CASE软件工程概念来表述CASE与软件工程方法学的结合。

4)图形用户界面

用户界面一般是由菜单窗口和对话框等元素构成,它为用户提供了一个使用软件交互过程的环境,它提高了软件的使用效率,灵活便捷,并且易于修改维护程序,充分体现了“所见即所得”图形界面的现代软件设计风格,使用户能以简单自然的方式与软件系统交流信息;提供对键盘及鼠标两种输入设备的双重支持;引导用户正确、快速、方便地使用软件系统;易学易懂,尽可能地减少用户必须记忆的信息。

八十年代图形技术有了迅速的发展,出现了不少优秀的图形软件工具,例如,X-Windows、MicrosoftWindows和MacintoshWindows都是建立在图形用户界面的技术上,他们提供了图形交互所需的各种手段与方法。

AutoCAD是又一个优秀的图形软件工具。它提供了图形显示控制、图形编辑和存储以及三维绘图、三维动态显示、阴影与透视等功能。随着图形用户界面的成功,不少高级语言也增加了图形功能,使这种可视化编程日益广泛与流行。

5)多媒体技术

它是曾经被炒得沸沸扬扬的话题,也是计算机科学在九十年代的一个热点。多媒体技术是将文字、声音、图形、视频图象集成在一起的技术。它包括多媒体计算机原理、多媒体数据库、多媒体通信和多媒体表现技术等等。它的一个重要方面是将图像、图形、声音、文字等集成一体,再按1比10或1比30压缩比进行图象数据压缩,最后以高质量再现给用户。

由于多媒体技术提供了更多的交互手段,给人以更多的方便,所以有着极其广阔的应用前景,如电视、电子游戏、电子报刊、电视会议等等。正因为如此,多媒体技术不仅是计算机科学的热点,而且也是国民经济以及社会生活许多领域的热点。

然而在整个计算机发展历史过程中,软件领域仍然存在一些问题,相对于微处理器芯片和内存设备而言,计算机软件只是在不断发展而没有进行大的改革。例如,编程人员都知道,自从第一台IBM和第一个Intel电子芯片问世以来,硬件结构的软件部分──指令集和中断结构就没有发生大的变化。在程序设计语言中也没有大的变革,现在用得最多的语言仍然是十五年前C和C++,甚至是四十年前的FORTRAN和COBOL语言。第四代语言并没有达到某些人预先声称“无需程序员的编程”的功能。整个软件领域发展限制在一个应用领域──数据库上。

不过也有一些希望的象征。面向对象程序设计是一项新的技术,前景看好,它以一种完全不同方法来构造软件;客户/服务器技术和Internet/Intranet技术,它们大大地推动了软件行业的改革。Internet的TCP/IP协议使成千上万个不同的操作系统和应用程序能相互通信,使得网络访问容易,浏览众多的数据库和站点信息,从而产生了较大经济效益和社会效益。当谈起计算机软件的现代历史,Internet/Intranet将作为人-机通信原理的里程碑,而WWW、HTML、VRM和Java将是这个里程碑的组成部分。

软件行业的成功,尤其是1995年以来的迅速崛起的Internet/Intranet技术为主的网络软件以及数据库挖掘、人工智能、神经网络等软件,为人类进入二十一世纪奠定了坚实的基础。新世纪将是一个更全面的信息化时代,计算机的普及与使用将会更广更宽,从而对计算机软件的需求更高,本世纪的成果与经验,将带入下一世纪,并不断被软件人员发展、完善,以适应新世纪人类的需要,并发扬光大。

第5篇

关键词:RTOS嵌入式系统嵌入式应用嵌入式开发工具

随着互联网应用的迅速发展,嵌入式微处理器的应用日益广泛,无处不在,从波音飞机到移动电话,都有嵌入式微处理器的存在。在嵌入式微处理器的应用开发中,嵌入式实时操作系统(简称RTOS)是核心软件,就像我们日常所用计算机的桌面系统中,微软公司的Windows98一样重要。RTOS已经在全球形成了1个产业,据美国EMF(电子市场分析)报告,1999年全球RTOS市场产值达3.6亿美圆,而相关的整个嵌入式开发工具(包括仿真器、逻辑分析仪、软件编译器和调试器)则高达9亿美圆。

一、RTOS发展历史

从1981年ReadySystem发展了世界上第1个商业嵌入式实时内核(VRTX32),到今天已经有近20年的历史。20世纪80年代的产品还只支持一些16位的微处理器,如68k,8086等。这时候的RTOS还只有内核,以销售二进制代码为主。当时的产品除VRTX外,还有IPI公司的MTOS和80年代末ISI公司的PSOS。产品主要用于军事和电信设备。进入20世纪90年代,现代操作系统的设计思想,如微内核设计技术和模块化设计思想,开始渗入RTOS领域。老牌的RTOS厂家如ReadySystem(在1995年与MicrotecResearch合并),也推出新一代的VRTXsa实时内核,新一代的RTOS厂家Windriver推出了Vxwork。另外在这个时期,各家公司都有力求摆脱完全依赖第三方工具的制约,而通过自己收购、授权或使用免费工具链的方式,组成1套完整的开发环境。例如,ISI公司的Prismt、著名的Tornado(Windriver)和老牌的Spectra(VRTX开发系统)等。

进入20世纪90年代中期,互联网之风在北美日渐风行。网络设备制造商、终端产品制造商都要求RTOS有网络和图形界面的功能。为了方便使用大量现存的软件代码,他们希望RTOS厂家都支持标准的API,如POSIX,Win32等,并希望RTOS的开发环境与他们已经熟悉的UNIX,Windows一致。这个时期代表性的产品有Vxwork,QNX,Lynx和WinCE等。

二、RTOS市场和技术发展的变化

可以看出,进入20世纪90年代后,RTOS在嵌入式系统设计中的主导地位已经确定,越来越多的工程师使用RTOS,更多的新用户愿意选择购买而不是自己开发。我们注意到,RTOS的技术发展有以下一些变化:

1.因为新的处理器越来越多,RTOS自身结构的设计更易于移植,以便在短时间内支持更多种微处理器。

2.开放源码之风已波及RTOS厂家。数量相当多的RTOS厂家出售RTOS时,就附加了源程序代码并含生产版税。

3.后PC时代更多的产品使用RTOS,它们对实时性要求并不高,如手持设备等。微软公司的WinCE,PlamOS,JavaOS等RTOS产品就是顺应这些应用而开发出来的。

4.电信设备、控制系统要求的高可靠性,对RTOS提出了新的要求。瑞典Enea公司的OSE和WindRiver新推出的VxworkAE对支持HA(高可用性)和热切换等特点都下了一番功夫。

5.Windriver收购了ISI,在RTOS市场形成了相当程度的垄断,但是由于Windriver决定放弃PSOS,转为开发Vxwork与PSOS合二为一版本,这便使得PSOS用户再一次走到重新选择RTOS的路口,给了其他RTOS厂家1次机会。

6.嵌入式Linux已经在消费电子设备中得到应用。韩国和日本的一些企业都推出了基于嵌入式Linux的手持设备。嵌入式Linux得到了相当广泛的半导体厂商的支持和投资,如Intel和Motorola。

三、RTOS的未来

未来RTOS的应用可能划分为3个不同的领域:

1.系统级:指RTOS运行在1个小型的计算机系统中完成实时的控制作用。这个领域将主要是微软与Sun竞争之地,传统上Unix在这里占有绝对优势。Sun通过收购,让他的Solaris与Chrousos(原欧洲的1种RTOS)结合,微软力推NT的嵌入式版本“EmbeddedNT”。此外,嵌入式Linux将依托源程序码开放和软件资源丰富的优势,进入系统级RTOS的市场。

2.板级:传统的RTOS的主要市场。如Vxwork,PSOS,QNX,Lynx和VRTX的应用将主要集中在航空航天、电话电讯等设备上。

3.SOC级(即片上系统):新一代RTOS的领域:主要应用在消费电子、互联网络和手持设备等产品上。代表的产品有Symbian的Epoc、ATI的Nucleus,Expresslogic的Threadx。老牌的RTOS厂家的产品VRTX和Vxwork也很注意这个市场。

从某种程度讲,不会出现1个标准的RTOS(像微软的Windows在桌面系统中的地位一样),因为嵌入式应用本身就极具多样性。在某个时间段以及某种行业,会出现1种绝对领导地位的RTOS,比如今天在宽带的数据通信设备中的Vxwork和在亚洲手持设备市场上的WinCE就是一例子。但是,这种垄断地位也并不是牢不可破的,因为在某种程度上用户和合作伙伴更愿意去培养1个新的竞争对手。比如,Intel投资的Montivista和Motorola投资的Lineo,这两家嵌入式Linux系统,就是说明半导体厂商更愿意看到1个经济适用的、开放的RTOS环境。

四、RTOS在中国

中国将是世界上最大的RTOS市场之一。因为中国有着世界上最大的电信市场。据信息产业部预计,在未来2~3年内,中国将是世界上最大的手机市场(每1部手机都在运行1个RTOS)。这样庞大的电信市场就会孕育着大量的电信设备制造商,这就造就了大量的RTOS和开发工具市场机会。目前,中国的绝大多数设备制造商在采用RTOS时,首先考虑的还是国外产品。目前,在中国市场上流行的RTOS主要有Vxwork,PSOS,VRTX,Nucleus,QNX和WinCE等。由于多数RTOS是嵌入在设备的控制器上,所以多数用户并不愿意冒风险尝试1种新的RTOS。

但是我们同时也注意到,目前RTOS在中国市场的销售额还很小,这主要是2个原因:

1.中国设备制造商的规模普遍还无法与国外公司相比,开发和人员费用相对还较高,所以RTOS对于中国用户来讲是比较贵的。

2.多数国内用户还没有开始购买RTOS的版税,其主要原因有:产品未能按计划批量生产,没有交版税的意识。应该注意,大多数二进制的RTOS必须在产品量产时交版税,或者按数量买或者与厂家讨论一次性买断,而由厂家直接发给你授权协议书。据国外某家RTOS厂家称,他们年收入的30%来自版税。

第6篇

关键字组件重用操作系统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满足了实际客户系统的需求,有助于操作系统的研究与开发。

参考文献

(1)汤海京基于面向对象操作系统开发平台(OSKit)的分析与程序设计www-/developerWorks/linux/kernel/oskit/part1/index.shtml

(2)MichaelHohmuthUsingtheOSKitasabaseforL4applications

第7篇

论文关键词:服务器,虚拟化技术,数字化校园

 

1.引言

随着计算机技术的快速发展,有效地推动了数字化校园的建设和发展,特别是数字化学习港的建设,为学校的人才培养、学科建设和学科研究服务提供了坚实的技术支持。随着各种应用系统的不断增加,校园网服务器数量越来越多,这就带来了校园网服务器管理复杂、资源利用率低和数据备份困难等问题。如何更加合理地分配资源,提高服务器的利用率,是数字化校园建设中必须认真解决的一个突出问题。

2.服务器系统应用现状

经过多年的发展,我校的网络中心已有各类服务器30多台,组成了庞大的服务器系统。随着服务器设备的不断增加,系统配置管理的时间增多,维护费用增加、灵活性和可靠性降低,系统资源闲置的问题日益明显。服务器系统实际利用率平均在35%左右。经过研究和分析认为,造成服务器系统适应能力差、利用率低下的主要有以下四种原因:

1)缺乏统一规划。随着学校教学工作的不断深入,很多教学系统、管理系统都需要增加服务器以支持其新的应用,结果导致服务器数量不断上升。各新增系统往往都采用单独的服务器部署,而实际应用服务所占用的系统资源容量比服务器计划订购的资源容量小很多。

2)软硬件资源配备复杂多样。多种多样的硬件平台、操作系统和应用程序,衍生了纷杂的信息服务系统论文参考文献格式。一些传统的应用程序使用老式的操作系统数字化校园,通常这些应用在编写的时候就已经确定了不能与其他应用共享一台服务器。必然造成部分系统资源被闲置。

3)学校的快速发展与服务系统的升级脱节。随着远程开放教育的不断发展,学员数量不断增加,同时网上考试的科目越来越多,给现有的服务器资源带来了巨大的压力,另一方面,利用率低的独立服务器造成资源闲置,但又无法投入使用。

面临系统架构越来越复杂的现状,单纯机械的堆积服务器是不能解决应用增加与服务系统部分资源闲置的问题的,最有效的办法就是进行服务器虚拟化。服务器虚拟化技术是当今信息产业界最受关注的新技术之一,其价值已在许多环境中得到验证,越来越多的高校开始考虑借助虚拟化技术提高服务系统的处理效率。

3.服务器虚拟化技术简介

3.1服务器虚拟化的概念

服务器虚拟化(Server Virtualization)是指多个操作系统在同一时间运行在同一台主机上。通过这种技术,在一台机器上可以支持Linux,Windows,UNIX等操作系统同时运行,而不需要重启机器就能切换操作系统。简单地讲,就是将物理机器、操作系统及其应用程序“打包”成为一个文件,称之为虚拟机。

图1 服务器虚拟化模型

服务器虚拟化技术的实质是一种方法,通过区分资源的优先次序并随时随地将服务器资源分配给最需要它们工作的负载,来简化管理和提高效率,从而减少为单个工作负载峰值而储备资源的方法。它从两方向入手,帮助服务器更加合理地实现资源的分配。一种方向是将服务器物理资源抽象成逻辑资源,让一台服务器变成几台甚至上百台相互隔离的虚拟服务器,用户可以在这些看似独立的虚拟服务器上运行不同的操作系统和应用程序;另一个方向就是把若干分散的物理服务器虚拟成一台大的逻辑服务器,使用户可以像使用同一台服务器的资源一样来支配这些物理上独立的服务器,从而达到最大化利用资源的目的。

目前,服务器虚拟化技术分为硬件层次的完全虚拟化技术和操作系统层次的虚拟化。完全虚拟化是以VMware为代表,这种虚拟化使用一个虚拟机,在客户操作系统和原始硬件之间进行协调,完成虚拟化所需要的工作,完全虚拟化的最大优点是操作系统无需任何修改就可以直接运行,但缺点是操作系统必须要支持底层硬件。操作系统虚拟化位于操作系统的顶部,在操作系统之上实现服务器的虚拟化,主操作系统负责多个虚拟服务器的资源分配,并让这些服务器相互独立。

3.2服务器虚拟化技术的现实意义

1)减少服务器的数量,虚拟化技术可以支持实现物理资源和资源池的动态共享,可通过动态资源配置提高服务系统对应用的灵活适应力数字化校园,满足不断变化的应用需求,将极大的提高每台服务器的利用率,从而降低整个服务器基础架构的总体拥有成本。

2)降低管理复杂度,通过服务器虚拟化减少了物理服务器的数量,也就减少了相应的物理资源管理;隐藏物理资源的部分复杂性;简化了服务器部署、管理和维护工作,降低了管理费用。通过实现自动化、获得更好的信息和实现中央管理来简化公共管理任务;实现负载管理自动化。

3) 提高数据备份的可靠性,支持快速转移和复制虚拟服务器,提供一种简单便捷的灾难恢复解决方案,虚拟化技术可以实现较简单的共享机制无法实现的隔离和划分,可实现对数据和服务进行可控和安全的访问,带来具有透明负载均衡、动态迁移、故障自动隔离、系统自动重构的高可靠服务器应用环境。

4.构建高效数字化校园服务器虚拟化系统

校园信息化建设经过十多年的持续发展,已经进入了服务器的更新期。目前有两种选择,一是购买一两台高性能的服务器;二是按常规购买6~7台普通的服务器。前者采用虚拟化技术就能达到后者所能提供的性能和存储要求,并能实现简化管理、降低运行和维护成本、提高效率的目的。服务器虚拟化的优点的显而易见的,从主机到主流,服务器虚拟化已经是大势所趋,是数字化校园建设和发展面临的新挑战和机遇论文参考文献格式。

4.1服务器虚拟化的架构设计

针对各种数字化信息资源数据库种类和信息服务方式等特点,规划数字化校园网服务器虚拟化实施步骤,具体包括以下几个方面:

1)按照不同的操作系统的应用服务进行物理服务器分类,建立Windows、UNIX、Linux等物理服务器,在此基础上建立各自的虚拟服务器。

2)的物理服务器上根据各个数据库应用负载、存储空间、并发用户数和用户满足度等各项参数,配置相应的小你服务器,包括分配CPU、内存、硬盘大小及虚拟网络类型等,建立冗余的虚拟应用环境,既满足数据的快速拷贝,又能满足数据系统的灾难恢复的需要。

3)将需要用到的Oracle、SQL Server等数据库电子资源数据库进行整合,利用虚拟工具中的迁移助手将多个不同物理服务器中的系统迁移到虚拟服务器上,建立独立的数据库集群虚拟机,这样既可以保证了数据库后台的高可用性,同事也极大地提高了服务器的实际使用率,提升了应用平台的整体性能和降低了过来复杂度。

4)根据休息资源种类不同,将功能相同或相近的应用进行整合,建立虚拟服务器机群,如Web服务、FTP服务、APP服务、E-Mail服务等转移到相同的虚拟机上,使用虚拟IP地址,提高系统安全性能。

5)根据传统应用使老式操作系统机这些应用在编写时就必须独占服务器的特点数字化校园,利用虚拟化技术合并传统应用,使服务器能够快速频繁地重新分配。

4.2服务器虚拟化方案

本方案拓扑架构如图2所示:硬件采用联想万全R630 G7服务器,每台服务器均配置双HBA卡,通过两台光纤交换机分别连接到Lenovo-HDSAMS2100存储阵列的双控制器上,保证了整个硬件平台的冗余。软件选用VMware vSphere4.0 Enterprise版本,提供了诸如HA、DRS、Vmotion的高级功能特性,方便用户快速调整虚拟机的分布、资源的利用及当故障出现时的快速恢复能力,配合其提供的Data Recovery或者VCB备份接口功能则可对虚拟机文件进行快速的备份及恢复,另外虚拟化所具备的克隆技术则可以大大缩短新的业务平台或测试平台建设时间。独立的虚拟机管理服务器则提供了对整个虚拟化平台的集中化管理能力,通过集中化管理来大大提升整个平台的管理效率。通过虚拟化技术的使用也解决了很多数据中心存在的硬件设备资源利用低及大量硬件设备所造成的数据中心供电、散热等问题,保护用户投资。

图2 服务器虚拟化拓朴结构图

5.结束语

服务器虚拟化技术虽然不算是新技术,但是对于很多人来说,还是要有一个了解和接受的过程。在过去的数字化校园建设重在IT基础架构建设,现在和未来必将侧重于建设领先的虚拟化IT环境。服务器虚拟化技术在飞速发展的同时,虚拟化的基础架构也受到了很大的挑战,突出的问题是一个篮子里放了太多的鸡蛋是否安全?如果运行着10台虚拟服务器的主机出了故障,造成的损失能否补救?其实,这个问题已经有了很多的解决办法,不久的将来还会有新的解决方案供用户选择。相信在虚拟化厂商和用户的不懈努力下,虚拟化过程遇到的困难和问题鄢会一一被解决,虚拟化的明天必将更美好。

[参考文献]

[1]谭文辉.利用VMware实现数据中心服务器虚拟化[J]. 舰船电子工程,2008,6.

[2]周铁成.虚拟化技术在数据中心架构中的应用研究[J]. 现代计算机,2009,4.

[3]张文盛.虚拟化服务器的应用研究[J]. 办公自动化, 2010,8.

第8篇

《操作系统原理》是计算机专业的核心课程,具有很强的实践性与实用性。大多学生都认为该课程容易学,就是掌握一些算法,比如进程调度算法、死锁避免算法、磁盘调度算法等。这反映出目前计算机教学中普遍存在的一些问题,即课程与课程之间相对独立,课程的章节之间相对独立,使得大部分学生缺乏系统结构观,只注重解决局部的编程和应用问题[1]。笔者发现,对《操作系统原理》课程的学习如果仅注重于细节的算法,难以真正培养学生的系统思维能力。让学生通过该课程的学习,构建大型软件的系统和结构化思维至关重要。 

在课程体系中,操作系统论文被安排在程序设计、数据结构、汇编语言、计算机组成原理等课程之后,是第一门侧重研究大型计算机软件组成结构的课程。目前,计算机专业的系统能力培养已经被国内计算机教育专家所重视[1],有条件的学校已进行了课程体系重构,而对目前尚未改革的学校而言,操作系统课程可以担当起该职责。 

本文结合笔者在教学中的体会,提出应在操作系统原理教学过程强化结构概念和培养结构思维,从多方面探讨操作系统课程中无处不在的结构概念及其对教学的作用。 

1结构的含义 

操作系统是一个大型系统,所谓系统,是由相互作用和相互依赖的若干要素结合而成的、具有特定功能的有机整体[2]。所谓结构,是指系统内部各组成要素之间在时间或空间上排列和组合的具体形式。与结构相对应,系统的外延是系统对外呈现的功能,例如操作系统作为用户接口和服务提供者、操作系统作为资源管理者和控制者,都是从功能角度来阐述操作系统的外在表现。“结构决定功能”。系统论认为,功能是系统内部固有能力的外部表现,它终究是由系统的内部结构所决定。对于操作系统这样的大型软件而言,结构的好坏决定了软件的可移植性、可靠性、健壮性和可扩展性。 

结是结合之义,构是构造之义。在科学研究和工程设计中,人们总是孜孜不倦地追求通过定义最小的本元集合和构造规则来产生某个目标系统。老子言:“道生一,一生二,二生三,三生万物。”这与中国古代人讲究的“金、木、水、火、土”一样,都是朴素的探索世界结构的例子。这些与现代科学的认知殊途而同归。现代科学表明,物质都由相同的最基本粒子构成,结构的差异产生不同的物质,碳原子的同素异形体石墨和钻石便是最好的诠释。在计算机科学中,这一方法也被广泛应用,例如:程序由数据结构和控制结构决定。数据结构的本元是基本数据类型,而通过线性构造规则、层次构造规则和网状构造规则可以创建任意复杂的数据类型。控制程序的基本要素是语句,理论上通过顺序结构、分支结构和循环结构可以构造出任何程序。 

结构在人类的认知过程中也扮演着非常重要的角色。结构化思维方法是以事物的结构为思维对象,以对事物结构的积极建构为思维过程,力求得出事物客观规律的一种思维方法。认知结构学习理论的创立者布鲁纳指出“掌握事物的结构,就是以使许多别的东西与它有意义地联系起来的方式去理解它。简单而言,学习结构是指学习事物是如何相互关联的。 

综上所述,结构一方面强调构造,另一方面强调联系。因此,在教学过程中,应该重视结构概念和结构思维,注重操作系统各要素的组合方式和相互之间的联系,引导学生掌握操作系统构造的一般性规律。 

2操作系统中结构的概念 

可以说,结构贯穿于操作系统原理课程教学的始终。有效识别《操作系统原理》课程中的结构并理解其对操作系统原理教学的重要作用对于提高学生的认知效率非常关键。 

2.1操作系统整体结构 

操作系统的结构方面,较为普遍的是如图1所示的自底向上的由硬件、操作系统、应用程序等组成的层次化静态结构图。从静态的角度看,一个计算机系统由各种物理特性和传输速度各异的硬件、实现不同功能的资源管理模块和众多应用程序组成。这些是计算机系统的基本要素。抽象和分层将这些要素组合成一个有机整体。在这一结构图中,以内核为基准,向下,通过硬件驱动程序屏蔽具体硬件的类型差异,使内核能够独立于纷繁芜杂的硬件设备而演化;向上,提供统一的系统调用接口,作为运行于用户态的应用程序访问内核功能的门户,从而使上层应用程序可以独立于内核而演化。无论是Windows XP操作系统、Unix操作系统、还是Android操作系统,都可以看作是这一基本结构的演化。 

2.2内核结构 

具体到内核本身,其发展历程中也经历了多种结构的演变,从早期的整体式单内核结构到后来的层次式单内核结构再到微内核结构。Unix和Linux都是单内核结构,而Windows XP和Mach属于微内核结构。图2给出了层次式单内核和微内核的结构示意图[3]。鉴于操作系统软件的复杂性,内核的结构对操作系统软件的正确性、效率、可扩展性、可移植性等具有重要作用,是“结构决定功能”的典型范例。 

整体式结构存在于上世纪50年代,当时对结构的关心甚少,内核被划分成功能相对独立的模块,而模块之间可以不加控制地自由调用。这一结构的优点是结构紧密、组合方便、系统效率高,但缺点也很明显,即模块之间调用关系复杂,系统结构不清晰,可移植性差,当系统规模变大时难以保证正确性。

层次式结构则将模块依照功能的调用次序排列成若干层次,各层之间单向调用。其优点是接口少而简单,下层模块的正确性为上层模块的正确性提供了基础。然而,严格的层次难以界定,严格的分层也降低了系统效率。此外,由于一层包括了非常多的功能,对于某个层次进行大的增删可能会对相邻层产生意想不到的影响。因此,很难在某个操作系统基础上通过适当增/删功能实现定制的操作系统,而这一点正是微内核的初衷。 

微内核认为只有最核心的操作系统功能(例如进程切换、消息传递、设备驱动等)需要运行于内核态,而其它服务可以建立在微内核之上,作为服务进程运行在用户态,相互之间依赖于微内核的消息传递进行交互。通过这一结构的改变,微内核操作系统具备了可扩展性强、移植性好、可靠性高和易于支持分布式实现等诸多优点。 

2.3进程结构 

2.3.1内核功能组织和进程映像逻辑结构 

在教学过程中,笔者发现部分学生会将操作系统看作是一种独立而神秘的特殊程序。确实,操作系统有其特殊性,例如其运行在内核态。但更重要的是,操作系统程序和普通程序一样,需要获得处理器后才能执行;操作系统程序并不一直占用处理器,只要有可能,就会主动放弃对处理器的控制。为了深入理解操作系统程序和普通程序的异同,则必须理解操作系统内核功能的组织模型和进程映像结构。 

在多道程序操作系统中,用户程序被组织为进程在用户模式执行,而操作系统的功能是否也需要被组织成独立的进程,则有不同的选择。一种早期的组织方式是,操作系统的功能运行在任何进程之外,拥有自己独立的地址空间和运行栈。第二种组织方式是让大部分内核功能在用户进程内执行,将OS看成是一组用户进程经常会调用的常用功能的集合。为此,每个进程映像不仅包括用户程序执行所需的环境,还需要包含为执行操作系统内核程序执行所需的代码、数据和堆栈。这一执行模型很好地诠释了进程和程序的关系并非是1对1的。在同一个进程内,可以执行用户程序和操作系统程序,而在不同进程中执行的操作系统程序是相同的(通过共享地址空间共享)。最后一种方式是将大部分操作系统功能也组织成进程,与用户进程一样可被独立调度。这种方式的好处在于一些非关键的操作系统功能可以按照某个优先级和其它进程交错运行,同时,在多处理器环境下,也便于操作系统服务在不同的处理器中运行,从而提高性能。图3为上述3种操作系统的内核功能组织方式。这一差别导致了进程映像逻辑结构的不同,如图4所示。在教学的过程中,学生经常难以理解为何用户进程映像还需要包括内核栈,在对内核功能的组织方式和进程映像结构有了基本了解后,应该可以释疑。 

2.3.2多线程环境下的进程结构 

引入线程后,进程成为地址分配和保护的基本单位,而线程是CPU调度的基本单位。为了让学生更深入理解同一进程中的多个线程对进程地址空间的共享和线程切换的代价,有必要对多线程环境的进程结构有所了解。图5给出了单线程进程和多线程进程的结构示意图。当引入线程后,多个线程共享进程的地址空间,因此一个线程对数据所做的改变对其它线程可见,这要求多个线程之间采用某种互斥/同步机制以解决线程并发可能造成的数据不一致问题,为后续并发并同步相关内容教学作好铺垫。 

引入线程后,原有的进程控制块相关信息进一步分解,与进程有关的如存储管理信息、打开文件列表等依然保存在进程控制块中,而线程执行相关的寄存器上下文则保存在各线程控制块中。当在同一个进程内进行线程切换时,仅需保存线程控制块中的信息即可,进程控制块中的信息无需保存,因此线程的切换开销更小。 

2.4存储管理中的结构 

在存储管理相关内容的教学过程中,笔者发现学生虽然能够掌握复杂的存储管理策略的地址转换方法,但对地址转换的发生时刻却仍然模糊。观察发现,如果让学生对程序生命周期的编译、链接、装入和运行这4个阶段的关系有明确的认识,学生会对整个存储管理结构更加了解。图6给出了源程序经过编译、链接和装入后变成内存可执行程序的过程。编译和链接后的程序都使用逻辑地址空间,链接同时会进行全部或部分的符号解析。逻辑地址和物理地址的转换既可以在装入时即发生(静态重定位),也可以在运行时发生(动态重定位)。由于动态重定位能支持进程运行过程中在内存移动(例如进程被挂起后又被激活,页面/分段在虚拟存储管理中被替换出内存后又被载入),因此广受青睐。 

虚拟内存是存储管理中的另一项重点教学内容。理解虚拟内存首先必须理解由于技术和经济因素决定的层次化存储系统设计和各个存储层次之间的联系,图7给出了一个现代的多核处理器的层次化存储结构。在这一层次化结构中,每个上层的存储设备都可以被看成是下层存储设备的缓存。在此基础上,进一步掌握虚拟地址空间、内存映射表、物理内存和外部磁盘存储器的关系。在理解层次结构和各组成要素关系的基础上,掌握虚拟内存的管理就会变得更加容易。 

2.5文件系统结构 

文件的逻辑结构和物理结构是文件系统教学的一大重点。文件的逻辑结构是指文件的逻辑组织方式,从构成文件的基本元素而言,有字节和记录两种。流式文件指将文件看成由字节按顺序排列而成,记录式文件指将文件看成由记录按顺序排列而成,而索引文件则将记录按照某种规则排序,并建立记录的索引项提供快速的文件检索。现代操作系统大部分都支持流式文件,而将记录的重构交给应用程序完成。从结构的角度而言,流式文件仅支持最本元的字节操作,无法体现任何语义,但其也具有最大的灵活性。 

文件的物理结构则是文件的物理组织方式,与物理磁盘的结构紧密相关。物理文件的基本组成单元是磁盘块。物理文件的结构指逻辑上连续的字节以物理磁盘块为基础单位的排列组合方式,也即逻辑文件到物理文件的映射方式。文件的物理结构决定了对文件进行修改和扩充的能力、对文件进行顺序访问和随机访问的性能等。连续文件需要以物理上连续的磁盘块来存储文件,因此文件难以扩充和修改,但类似于数组,顺序访问和随机访问效率高。连接文件允许以离散的磁盘块存放逻辑上连续的字节,易于修改和扩充,但类似于链表,需要按序读取,随机访问效率低。FAT文件简单地将这些离散的以链接方式存储的映射信息集中起来存放,在文件被访问时载入内存,因此较之连接文件访问速度大大提升。索引文件同样是将映射信息集中存放,但是以索引表的方式,因此既方便文件的修改和扩充,也能支持快速的随机存取。

文件系统的另一项重点教学内容是文件的目录结构及物理实现方式。文件目录采用哪种结构决定了文件系统中文件保护和共享的能力。例如,早期的单级或两级目录结构不利于文件的共享和保护;纯粹的树形结构能实现文件保护,但不利于文件共享;而DAG(Directed Acyclic Graph)结构有利于文件共享;更通用的图结构则不利于文件检索。 

3教学过程中的结构思维培养 

《操作系统原理》课程教学中,教学人员一般都会对上述结构予以讲解,但为何会出现本文开篇所提及的学生在学完课程后普遍认为《操作系统原理》就是学算法的课程,这一点值得深思。笔者认为,没有强化结构概念是导致这一结果的原因之一。操作系统的教学人员已经认识到应该在操作系统教学过程中帮助学生建立整体概念[45],强化结构概念和注重结构思维培养是帮助建立整体概念的主要途径。 

一般而言,教学过程都遵循自顶向下的原则,即先介绍整体结构,再介绍局部功能以及提高该局部性能的具体算法。但这一方法的问题在于,在初次介绍整体结构时,学生并未能对结构中的构成元素产生感性认知,因此对结构的作用感受不深。笔者建议按照图8的方法来加强学生对结构的认识。首先,通过自顶向下的结构分解建立学生对操作系统结构的初步印象;其次,在具体层次的功能讲解过程中,对存在的结构进行强化教学,注重各要素之间的联系;再次,对于重要的结构概念,注重在不同的教学单元进行交叉强化。例如,图7所示的层次化存储结构可以在不同的章节得到强化,包括进程七态模型的挂起态、多核CPU的进程或线程调度算法、存储管理中的快表、虚拟存储、文件系统的磁盘缓冲区和内存映射I/O等。进程的系统上下文概念也可以在进程映像结构、存储管理、I/O管理和文件管理中得到强化;最后,在讲授完主要层次后,通过自底向上的方式再次完成操作系统整体结构的重构。例如,图9给出了操作系统中的三大概念(进程、虚拟存储和文件系统)之间的结构关系。文件系统建立在I/O的基础上,对上层软件简化了外设操作。虚拟内存则是对包括主存和外存在内的存储进行抽象,从而使得用户可以按照内存操作的方式来访问文件。更进一步,进程则是对处理器资源和存储资源管理的抽象,构成了操作系统的核心概念。这一结构关系的重构可以在讲授完文件管理之后开展。基于图8所示的教学方法对结构概念从不同角度予以强化,学生对操作系统的整体认识将会产生由量变到质变的过程。 

4结语 

本文以“结构”作为《操作系统原理》课程教学的抓手,在教学过程中注重操作系统各要素的组合方式和相互之间的联系,引导学生掌握操作系统构造的一般性规律,探讨了操作系统中无处不在的结构概念,通过自顶向下分解、单元教学强化、交叉强化和自顶向上重构4个过程,深化了学生对操作系统结构的认识。 

参考文献参考文献: 

第9篇

关键词:计算机科学导论;教学方法;考核方式

《计算机科学导论》课程是计算机专业的引导性课程,为计算机专业的新生提供了关于该专业学科的入门介绍。使学生能够全面掌握计算机的基础知识,并了解该专业的学生在该领域工作应具有的职业道德和应遵守的法律准则。《计算机科学导论》课程在大一第一个学期开设,新生虽然具有计算机的基本使用能力,但在计算机理论知识上的专业性不够,大部分的知识对新生来说都是第一次接触。如果一味地想把如此广的知识介绍给学生,理解上的难度会影响他们学习的积极性,效果并不好。根据该课程近几年的教学实践,笔者总结出了教学中存在的一些问题,并对教学内容的选取、教学方法和考核方式给出思考。

教学中存在的问题

计算机科学导论的教学内容虽然相对浅显,但是涵盖的知识面很广,几乎包括计算机领域所有的理论知识,应用技术、热点研究问题等。在授课中不仅要把基本的概念介绍清楚,还要对最新的专业动态有所介绍。在教学过程中主要存在以下几个问题。

1.合适教材难以选择

我国的计算机科学导论教材非常多,按其内容主要有以下三种:一、内容为计算机各种办公软件的使用,使学生具有使用计算机的初步能力,和非计算机专业开设的《大学计算机文化基础》课程等同[1];二、将计算机专业学生大学四年要学的专业核心课程进行了浓缩,内容涉及面广;三、计算机和计算的本质属性用高度抽象的数学模型来刻画[2],内容进行系统化、形式化的概括。由于目前中小学已开始开设了相关的课程,新生都具有不同程度的使用计算机的能力。所以选择第一种教材对于计算机专业的学生会过于简单,失去“专业引导”课程的本质属性;第二种教材在广度和深度上是比较难以把握的;第三种教材过于抽象,教师难讲,一般院校的学生难以理解。再加之计算机科学技术和应用技术的发展变化非常快[3],可谓日新月异,许多教材内容的更新速度严重滞后。

2.理论教学过于复杂

新生非常渴望专业知识,计算机专业的新生对第一学期开设的计算机科学导论课程抱有很大的期望。教师希望通过讲授该课程给学生初步建立整个学科的框架,指明计算机专业学习的方向,激发他们的学习兴趣。但是把如数据结构,操作系统,数据库系统,编译原理等专业课浓缩为一章进行叙述[4],叙述方式上又较少考虑新生的知识背景和理解能力。理论教学中勉强把计算机科学系统知识精装到学生的知识结构中[5],不断出现的新概念、新理论和新知识使学生难以真正理解,又要求他们在短期内消化吸收,这样不但起不到很好的专业引导,反而使学生对计算机的学习望而生畏。

3.实验内容与理论教学相对独立

本课程配有相应的实验内容,但一般是以Windows操作系统和常用办公软件的操作为主,与理论教学相对独立。

4.考核方式传统化

对学生来说,最熟悉的考试方式是闭卷考试,这种考试方式注重对知识的记忆、理解和应用。在大学学习期间,很多课程没有单元测试、期中考试,采取的是直接的期末考试。学生到了期末死记硬背搞突击,平时很少去细细思索所学内容。本课程不只是介绍一些计算机专业的知识,更应该引导学生思考相关的一些问题。

教学的几点思考

1.教材内容和补充新信息相结合

教材的内容对基本知识介绍得比较全面,但为了提高教学质量和教学的有效性,在教学内容上教师需要适当地选择一些专业领域的新知识进行补充,如计算机技术和产品的最新发展、新成果、未来发展趋势等[6]。学生在掌握计算机基本知识的基础上对专业新知识有所了解,紧跟时代的新发展,与学生实际生活中接触到的产品和概念有所共鸣,这样可以激发他们学习本专业知识的兴趣。

2.构建启发式教学模式

传统的教学模式是非常封闭的,教师讲解学生听课,两者的交流比较少。学生的这种被动局面制约了他们学习主动性的发挥。启发式教学模式就是让学生的学习方式从被动变为主动。教师在对基础知识的介绍过程中,根据相应的知识点设置相关问题,对学生进行分组选择相应问题;进行前期的文献查找,撰写论文培训后,让学生自己去查阅相关资料,提炼内容,形成一份综合的材料,并在课堂上讲解给同学们;教师及时对学生所讲内容进行总结评述。把课堂的某些时间让学生掌控,教学中充分调动教师和学生的交流,在问题中探讨学习,在参与中掌握相关知识。在这个过程中让学生学会检索文献,整理资料,初步阅读计算机专业文献等;鼓励学生从问题出发,去钻研去思考,逐步训练专业的创新能力;在团队中学会合作;锻炼学生的表达能力;提高办公软件的使用能力;培养学生专业自信心;充分发挥学生的主动性。

3.适当增加理论教学的实验

Windows操作系统和常用办公软件的操作这些操作技能需掌握,但课堂上讲到的有些内容最好配合相应的实践,给学生实实在在的接触,这样能使理论教学的效果更理想。

4.改变考核方式

大学的课程在考核上一般采取期末考试成绩和平时成绩相结合的方法。计算机导论课程内容多,授课中若不采取传统的教学方式,而是结合专题讲座、学生参与教学的方式,该课程的部分考核可以在教学过程中完成。例如,可采取分组合作课题和独立选题论文相结合的考核形式。分组合作课题在授课中完成,学生按所在分组,分工合作完成相关课题,上台讲演,并通过各小组之间的评比给出相应成绩,这项成绩在教学中完成;独立选题论文,学生自主选取与计算机领域相关的选题,以论文形式上交,培养学生独立思考能力,这项考核在结课后一定时间内完成。两者结合,不增加学生记忆的压力,又给了学生充分的自。

结束语

《计算机科学导论》课程在专业知识整体介绍的同时要激发学生学习本专业的兴趣,发挥学生学习的主动性。课程难度和广度不容易把握,教师要不断更新教学内容,改进教学方法,使《计算机科学导论》课程真正起到引导的作用。

参考文献:

[1]许晴媛.《计算机导论》课程内容探索与改革[J].宁德师范学院学报(自然科学版),2011,23(3):303-306.

[2]何昭青.《计算机导论》课程内容体系构建的研究与实践[J].湖南第一师范学院学报,2010,10(5):63-66.

[3]李明东,等.《计算机导论》课程内容及体系结构改革研究[J].四川师范学院学报(自然科学版),2003,24(1):6-8.

[4]薄树奎.“计算机导论”课程教学方法初探[J].郑州航空工业管理学院学报(社会科学版),2011,30(4):182-184.

相关文章
相关期刊