时间:2022-07-18 17:44:09
序论:在您撰写操作系统论文时,参考他人的优秀作品可以开阔视野,小编为您整理的7篇范文,希望这些建议能够激发您的创作热情,引导您走向新的创作高度。
总体设计
仿真系统在指挥控制系统设计全过程的作用,如图所示:从上图可见,仿真系统在反坦克导弹连指挥控制系统的设计过程中有着重要的顶层分析、辅助设计、论证优化作用。仿真系统的定制开发的基本流程是:
1)从作战使用层面,需要详细分析反坦克导弹体系的协同和信息交互及导弹连战斗关系系统的使用环境、作战原则、系统配置、攻击对象特性和不同作战过程、不同使用模式下的系统响应、状态转换关系,形成系统的工作流程。
2)从信息交互层面,需要详细分析导弹连战斗管理系统所需信息,研究信息交互的内容、对象、交互类型和方式、交互频度和实时性要求等,明晰系统对信息融合、传输、处理和信息共享、分发及协同的需求。
3)根据需求,建立仿真所需的硬件平台,并组成相应的通信网络。
4)分析设计仿真对象,形成对象配置文件。
5)编辑系统结构、业务流程、程序接口,形成仿真规划配置文件。
6)利用可视化开发工具,编辑二维、三维可视化设计,生成可视化规划配置文件。
硬件系统设计
反坦克导弹指挥控制仿真系统通过构成无线、有线、有无线混合组网等通信方式,采用标准通信格式,模拟反坦克导弹连与上级、友邻、协同部队、保障分队通信的互联网,以及模拟反坦克导弹连内部指挥控制专用网络,实现硬件节点间的互联互通。
反坦克导弹指挥控制仿真系统包含下列硬件节点:
1)服务器:用于外部数据处理及数据传输。
2)任务规划席:用于用户对仿真任务的配置及过程控制。功能包括:开始、结束仿真;新建或选择仿真任务;配置仿真对象属性;仿真速度倍率控制。
3)车辆模拟席:用于仿真车辆的实际运行状态,包括:仿真发射车运动状态及位置数据,仿真车辆通信、侦察、指挥、射击、装填等业务能力、作业过程及作业结果。
4)车辆指控席:用于仿真车辆的指挥终端所执行的功能,当验证在研指挥控制系统时,可更换为实装设备,直接进行半实物仿真测试。
5)敌军模拟席:用于显示敌军单位信息,包括:仿真敌军位置数据及车辆的运动状态,仿真已毁和剩余敌军目标信息。硬件结构部署图如下:
软件系统设计
1软件体系结构概述
反坦克导弹指挥控制仿真系统包括业务逻辑设计和可视化界面开发两个基本层面。
1.1仿真对象模型
仿真对象的模型设计是干预、表现和分析仿真过程的实体要素,是决定仿真系统严密性、鲁棒性、可控性的关键环节。仿真对象模型设计的关键是对各作战单元的状态分工的充分考虑,仿真对象的特性和状态通过属性变量来表述控制,仿真对象的全部状态属性,构成了虚拟作战环境的总体状态空间,各仿真对象属性相互依存影响,对仿真对象属性的更改程度直接决定了仿真过程的复杂程度。
1.2仿真算法库
反坦克导弹连指挥控制系统的仿真算法库的建立是指设计整理出指挥控制系统中的基础的、典型的算法模型,定义相关数字接口,形成算法构件,实现系统的模块化、体系化功能,这对于仿真系统的有效性、通用性有着至关重要的意义,涉及仿真系统物理结构、工况及状态迁移、信息交互、信息融合等技术,主要包括:
1)基本数学库;
2)数据类型转换库;
3)时间运算库;
4)车体运动模型;
5)导弹运动模型库;
6)弹药信息组装及解析库;
7)扩展数学库;
8)坐标系转换库;
9)休眠模块。同时,仿真系统的通用软件接口,可接入典型的反坦克导弹连指挥控制模型。
1.3事件响应关系
从仿真的角度来说,模型的执行序列是由作战模拟系统的事件调度机制决定的,即使每个仿真对象都设计得完备有效,而模型间的事件调度机制不充分严密,可能无法实现想定的作战意图,甚至得到扭曲的仿真结果。事件响应关系就是进一步明确指挥控制系统中各单位分工、作战使用需求和工作流程,建立起仿真对象的调用顺序、调用条件和调用结果的规则库,来体现模型运行的约束性。
2可视化界面开发
反坦克导弹连指挥控制仿真系统的可视化平台建立了一个可视化仿真框架,包括分布式仿真系统配置模型和运行机制的可视化,以及配套的管理及开发工具,实现了仿真任务的可视化定制。同时,建立了一个具有多种指挥、显示功能的综合指挥显示系统平台,实现了整体作战态势及武器系统、车辆、设备的状态和迁移过程的二维、三维可视化集中显示和集成控制。以下为部分典型操作的可视化开发界面:
关键字组件重用操作系统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浏览器访问信息家电控制台,并对其进行远程控制,达到通过以太网、蓝牙等无线网络环境对各类信息家电设备,实现信息家电的数据传输控制。信息家电是以应用为主要目的,基于计算机技术,并且对功能及其可靠性,设备成本、能耗以及体积都有严格要求的专用计算机系统。
就象UNIX,Linux支持的网卡主要是以太网卡。如3COM、ACCTON、AT&T、IBM、CRYSTAL、D-LINK等众多品牌的以太网卡只要安装配置正确,都可以得到你所期望的效果。
一、Linux中网卡的工作原理
为了将这个问题说明的更清楚一些,不妨先简要地剖析一下Linux是如何让网卡工作的。一般来说,Linux核心已经实现了OSI参考模型的网络层及更上层部分。网络层的实现依赖于数据链路层的有效工作。网卡的驱动程序就是数据链路层与物理层的接口。通过调用驱动程序的发送例程向物理端口发送数据,调用驱动程序的接收例程从物理端口接收数据。
1.网卡驱动程序
简单地说,要将你手中的网卡利用起来,你唯一要做的是得到这块网卡的驱动程序。驱动程序提供了面向操作系统核心的接口和面向物理层的接口。
驱动程序的操作系统接口是一些用于发现网卡、检测网卡参数以及发送接收数据的例程。当驱动程序开始运作时,操作系统首先调用检测例程以发现系统中安装的网卡。如果该网卡支持即插即用,那么检测例程应该可以自动发现网卡的各种参数;否则你就要在驱动程序运作前,设置好网卡的参数供驱动程序使用。当核心要发送数据时,它调用驱动程序的发送例程。发送例程将数据写入正确的空间,然后激活物理发送过程。
驱动程序面向物理层的接口是中断处理例程。当网卡接收到数据、发送过程结束,或者发现错误时,网卡产生一个中断,然后核心调用该中断的处理例程。中断处理例程判断中断发生的原因,并进行响应的处理。比如当网卡接收到数据而发生中断时,中断处理例程调用接收例程进行接收。
2.驱动程序工作参数
驱动程序的工作参数因网卡性质的不同而不同,大致包括I/O端口号、中断号、DMA通道、共享存储区等。输入输出端口号又被称为输入输出基地址,当网卡工作于端口输入输出模式时被使用。端口输入输出模式需要CPU的全程干预,但所需硬件及存储空间要求较低。CPU通过端口号指定的空间与网卡交换数据。中断号是网卡的中断序号,只要不与其它设备冲突即可。当网卡使用DMA方式时,它要使用DMA通道批量传输数据而不需要CPU的干预。
对于一块具体的网卡,如果网卡支持完全自动检测,那么一个参数也不用指定,驱动程序的检测例程会自动设定所需参数。一般情况,你需要人工设定这些参数的一部分。如果你的网卡使用端口输入输出模式,你要设定端口号和中断号。如果你的网卡使用DMA模式,你要设定DMA通道和中断号。如果你的网卡使用共享存储区的模式,那你就得设定共享存储区的地址范围。
3.驱动程序的使用方式
有了网卡的驱动程序后,你可以选择是把驱动程序加入到Linux核心之中还是把驱动程序加工成独立模块。Linux系统一个引人入胜的长处就是可以定制系统的核心。把需要频繁调用的功能加入系统核心,可以大大提高系统的效率。在这种情况下系统启动时,系统核心自动加载网卡的驱动程序。驱动程序的参数可以通过LILO命令参数加以指
定。系统启动后驱动程序永久驻留核心,不能用常规的方法将其卸载。至于定制的系统核心,是通过重新编译得到的;如何编译核心将在后文叙及。
如果把驱动程序编译成可装载模块,就可以用系统提供的命令在系统启动后随时加载。随时加载的好处是减少内存开销,易于管理,但同时也牺牲了一点网络传输的效率。驱动程序的参数是在命令行中直接输入或通过配置文件指定。二、网卡安装前的准备在安装网卡前,务必检查是否具备下列条件:
1.硬件方面
以太网卡
网络连接线及连接头,如10base-T一般为8芯双绞线配RJ-45接口
2.软件方面
Linux操作系统
网卡驱动程序(目标码或源代码)
*网卡配置程序
*软件开发工具,如GNU工具包(包括编译器gcc、make等)
3.系统配置信息
可用的端口地址
可用的中断号
以上不带星号标记的是必要条件,带星号的是视情况不同而要求的条件。具体情况在下面进一步说明。
三、网卡的安装及配置
第一步:配置以太网卡的工作参数
配置网卡就是配置网卡的工作参数,如端口地址、中断号等。网卡的缺省参数一般存储于网卡内部的EEPROM,这是网卡出厂前设置好的。缺省参数在大多数情况下是可行的,但如果这些参数与你的系统有冲突并且网卡又不支持软件动态设置,那么你就要使用网卡的设置程序。并不是所有的网卡都要经过这一步,因为有些网卡支持通过驱动软件及其输入参数来确定网卡的工作参数。可以通过查阅网卡使用说明书来确定这一点。
网卡的设置程序与驱动程序不同,设置程序仅仅用来对网卡EEPROM中的设置进行修改。网卡程序本身可能运行在其它操作系统下,如WINDOWS95/98、OS/2、DOS等。如果是非Linux平台,那你就先在适合设置程序运行的系统中安装网卡,按设置程序说明设置网卡参数。然后再在Linux系统下安装该网卡。
第二步:安装Linux系统
假如你将要安装以太网卡的Linux系统本身还未安装,那么可以先试着在安装Linux的同时安装网卡。这一步成功的前提是你的Linux发行版本包含将要安装的网卡的驱动程序。
运行Linux的安装程序,按提示进行操作,别忘了安装核心的网络部分。当进行到LAN配置时,安装程序会列出它支持的所有网卡的类型。看看你的网卡是否榜上有名。随着Linux发行版本的不断升级,目前RedHat6.0已经覆盖了常用的网卡类型。如果很幸运地你的网卡恰好在其中,那么下文讨论的很多步骤都可以不必考虑了,安装程序会自动完成网卡的安装与驱动。但如果没找到适用于你的网卡类型,也不必担心,继续下一步。
第三步:手工安装网卡
安装网卡也就是安装网卡的驱动程序。网卡要工作必须要有驱动程序,并且驱动程序越成熟越好。驱动程序一般由网卡的生产或供应商提供。由于Linux是一个起步不久的新兴操作系统,网卡的生产商并不一定提供Linux环境下的驱动程序。这时候你就得从其它途径想办法了,比如到INTERNET上专门提供硬件驱动程序的网站查找一下,也可以在新闻组上贴个求助信息。总之,只有得到网卡的驱动程序后,方可进行下一步。
网卡的驱动程序有两种类型。一是可直接使用的二进制代码;另一种是驱动程序的源代码。二进制代码一般是预先编译好的可装载模块。源代码可以编译成可装载模块,也可以编译成系统核心的一部分。如何把源代码编译成可装载模块不在本文讨论之列,具体可以查阅驱动程序的说明书。
1.可装载模块的使用
系统提供了一组命令用于将驱动程序模块载入内存执行。这些命令包括modprobe、insmod、Ismod、rmmod。modprobe与insmod命令功能相似,但是方式各异。
modprobe命令使用配置文
件/erc/config.modules来加载可执行模块。要用modprobe命令加载以太网卡的驱动程序,可以在config.modules文件中加入:
aliaseth0drivermodule(drivermodule是驱动程序模块的名称)
这行配置信息把以太网卡的设备名与驱动程序模块联系起来。modprobe命令依据这条信息,自动加载存放于/lib/library/xxxx/net目录下名为drivermodule.o的模块。因此要使modprobe命令找到驱动程序模块,必须将该模块放在/lib/library/xxxx/net目录下。
那么驱动程序的参数如何指定呢?还是使用conf.modules文件。方法是在接着上述配置信息的后面加入下行信息:
optionsdrivermoduleparml=valuel,parm2=value2,……
这里parm1是驱动程序可以接受的参数名,valuel是该参数值;依次类推。
比如optionscs89x0io=0x200irq=0xAmedia=aui
insmod命令直接通过命令行参数将驱动程序模块载入内存,并可以在命令中指定驱动程序参数。例如:
insmoddrivermodule.oparml=valuel,parm2=value2,……
以上两个命令中可以使用驱动程序参数要依据具体的网卡及其驱动程序而定,要仔细阅读网卡及驱动程序的说明书。有的网卡驱动程序可以用这些参数覆盖网卡本身EEPROM中存储的参数。有的则必须使用EEPROM中的参数。有的因为驱动程序不自动检测网卡使用的参数,所以还得把网卡使用的EEPROM中的参数传给驱动程序。
卸载驱动程序模块使用rmmod命令:
rmmoddrivermodule.o
2.把驱动程序编译入系统核心
除了以可装载模块的形式使用驱动程序,还可以把驱动程序编译进Linux核心,以获取更高的效率。这种方式需要驱动程序的源代码、Linux核心源代码及其编译工具。Linux核心的编译过程包括配置核心、重建依赖关系、生成核心代码等步骤。配置核心的过程是用系统提供的配置工具(makeconfig或makemenuconfig)重新生成用来编译核心的众多make文件的过程。为了让核心的配置工具了解你的网卡驱动程序,你需要修改一些核心的配置文件。
(1)修改配置文件:主要修改核心源代码目录下的四个文件,即drivers/net/CONFIG文件、drivers/net/Config.in文件、drivers/net/Makefile文件和drivers/net/Space.c文件。CONFIG和Config.in文件用于控制核心配置工具(makeconfig或makemenuconfig)的运行,主要是加入关于是否包括该网卡的支持提示。Makefile和Space.c文件用于编译核心代码并说明面向核心的接口。详细语句参见下面例子。
(2)运行核心配置工具:在核心源代码目录下执行makeconfig或makemenuconfig命令。makeconfig是面向命令行的,通过逐句回答提问来配置核心。由于其在配置过程中不可改变或撤消以前的回答,故多有不便。makemenuconfig则是通过窗口菜单方式,使用起来很方便。就本文而言,你只要在上一步中正确修改了配置文件,那么在config中会出现是否需要该网卡支持的提问,你选择‘y’。或者在menuconfig中的network菜单中出现表示该网卡的菜单项,把它选上即可。
(3)重建依赖关系:很简单,执行makedep和makeclean命令。
(4)生成核心代码:执行makezImage命令。这个命令开始真正编译核心代码,并把核心代码存放为arch/i386/boot目录下的zImage。
(5)为了使用新的核心代码,你需要用新的核心代码替换原有的。原有的核心代码一般存放在/boot目录下,文件名称类似于vmlinuz-v.s.r-m(v.s.r-m)表示核心的版本号)。如vmlinuz-2.0.34-1。执行下列命令:
cparch/i386/boot/zImage/boot/vmlinuz-v.s.r-m
为了安全起见,可以先把原有的核心代码做个备份,以便发生错
误时恢复。
至此,你可以重新引导系统以使用新的带有正确网卡驱动支持的Linux核心。唯一剩下未解决的是驱动程序的参数问题。有些网卡驱动程序如果不输入参数,那它工作就会不正常,甚至根本不工作。由于现在网卡的驱动程序是系统启动时由核心载入运行的,系统启动之后用户就很难改变这些参数了,所以你必须在系统启动时告诉Linux核心网卡驱动程序使用的参数。具体方法有两种:
(1)在系统引导程序LILO中输入。
在LILO开始引导系统时,用ether子命令设定以太网卡驱动程序的参数。ether命令的使用方式为:
LILO:linuxether=IRO.BASE_ADDR,NAME
这里带下划线的是要输入的部分,IRQ表示中断号,BASE_ADDR表示端口号,NAME表示网卡的设备名。例如:linuxether=15,0x320,eth0
(2)在LILO配置文件中设定。
每次在系统启动时再输入驱动程序参数似乎有点过于麻烦。幸好系统提供了LILO的配置文件可以用来永久性的设置Linux系统启动时的子命令。方法是在/etc/lilo.conf文件中的适当位置加入以下一行:
append=“ether=IRQ,BASE_ADDR,NAME”
这里带下划线部分的意义同上。加入这一行后,还需要用/sbin/lilo命令把这个配置写入引导程序。
第四步:网络配置及测试
安装完网卡就可以配置网络通信了。配置网络简单地就是使用ifconfig命令,
例如:
ifconfigeth01.2.3.4netmask255.0.0.0up
最后ping一下网上其它机器的ip地址,检查网络是否连通。
五、一个以太网卡安装实例
下面以Cirrus公司生产的CrystalCS8920以太网卡为例,详细说明上述安装配置过程。本例中,有些命令参数,如核心源代码目录等,是以我使用的系统环境为出发点。具体应用中还要加以本地化。为了更接近实际,例子中也包括了对安装中碰到的问题的描述。
1.此网卡是IBMPC机的内置式网卡,机器只提供了Windows95/98环境下的驱动程序。由于RedHat5.0发行版本尚未提供对此网卡的直接支持,所以从Cirrus的站点上找到并下载了该网卡驱动程序的Linux版本,是一个名为Linux102_tar.gz的压缩文件。
2.文件Linux102_tar.gz解压后包括五个文件。包括源代码,仅适用于Linux2.0版本的目标模块以及readme文件。
3.查阅readme文件后,了解到这个驱动程序只能使用网卡EEPROM中设定的端口号(I/O基地址)、中断号。为了知道网卡EEPROM的设置,又从Cirrus站点下载了该网卡DOS版本的设置程序setup.exe
4.在DOS中运行setup.exe,发现网卡的起始端口号为0x360,中断号为10,与别的设备有冲突。选择setup.exe程序的相应菜单,把中断号改成5。另外,此驱动程序不支持plugandPlay,故也在setup.exe中将网卡的PnP功能屏蔽掉。
5.我所使用的RedHat5.0的Linux核心版本为2.0.34,所以不能用现成的驱动程序目标模块,需要自己动手编译。如上文所述,有两种方式使用此驱动程序。
6.如果要编译成独立模块,执行下列命令:
gcc-D_KERNEL_-I/usr/src/linux/include-I/usr/src/linux/net/inet-Wall-Wstrictprototypes-02-fomit-frame-pointer-DMODULE-DCONFIG_MODVERSIONS-ccs89x0.c
编译结果是名为cs89x0.o的驱动程序目标模块。要装载此驱动程序,输入下列命令:insmodcs89x0.oio=0x360irq=10
要卸载此驱动程序,用rmmod命令:
rmmodcs89x0.o
7.如果要将驱动程序编进系统核心,
修改/usr/src/linux/drivers/net/CONFIG,加入:
CS89x0_OPTS=
修改/usr/src/linux/drivers/net/Config.in,加入:
tristate‘CS8920Support’CONFIG_CS8920
以上两行是为了让makeconfig在配置过程中询问是否增加CS8920网卡的支持。修改/usr/src/linux/drivers/net/Makefile加入:
ifeq((CONFIG_CS8920),y)
L_OBJS+=cs89x0.o
endif
修改/usr/src/linux/drivers/net/Space.c,加入:
externintcs89x0_probe(structdevice*dev);
……
#ifdefCONFIG_CS8920
&&cs89x0_probe(dev);
#endif
以上两段是为了编译并输出网卡驱动程序及其例程。
把驱动程序源代码拷到/usr/src/linux/drivers/net目录下。
在/usr/src/linux目录下执行makeconfig或makemenuconfig,选择核心CS8920网卡支持。
执行makedep、makeclean命令。最后用makezImage编译Linux核心。
如何设置核心驱动程序参数,上节已有说明,不再赘述。
下面是由本课程的全部教学内容所提炼并加以有机整合而形成的出的精髓教学框架:
(1)系统发展历史的回顾与当前技术发展潮流追踪许多学校的计算机专业在讲解操作系统课程时,往往局限于介绍具体方法和技术细节,忽略对技术发展历史和当前技术潮流的诠释。既不能开拓学生专业视野,又无法对专业历史有深入的了解。本门课程争取使用3-4学时的时间详细讲解操作系统的发展历史、著名人物、分类体系和技术发展趋势。这样的内容极大的激发了学生的学习兴趣和专业使命感,具有很好的教学效果。
(2)作系统基本设计原理与核心技术方法的分析讲解本门课程注重对基础专业理论的讲解,从五个方面详细剖析操作系统的核心原理。对进程管理、存储管理、文件系统、设备管理、系统接口等基本的设计原理均进行了详细的介绍和分析。操作系统的各种基本设计原理中包含了大量的算法设计与技术实现优化考虑,在教学过程中,要特别注重剖析算法设计思想和优化教学法的差别,强调激发学生的主动思考能力,而不是僵化的向学生灌输思想。
(3)真实操作系统案例的组成结构与实现特色剖析对比。操作系统的设计原理体系严密,各种技术方法错综复杂。要注重选用真实操作系统作为学习的案例。通过对真实案例的剖析以提高学生的感性认识。例如在讲解“进程管理”时,将Linux系统与WindowsXP系统进行对比;讲解“文件系统”时,对Linux、FAT32、NTFS等各类不同的文件系统进行对比;讲解内存管理时,对Minix、Linux、Win-dowsXP系统进行对比。这样的教学内容虽然备课难度大,但是教学效果却非常好。
(4)操作系统原理与计算机原理、编译原理、数据库、计算机网络等课程的关联。《操作系统原理》课程是计算机及相关专业的学生在本科阶段“承上启下”的重要课程,讲授过程中必须注重与其他专业基础课内容和知识的结合。在教学过程中,专门讲解“操作系统硬件基础知识”以融合《计算机原理》课程知识;重点分析“应用程序编译链接过程”以融合《编译原理》课程知识;在“进程同步互斥、I/O设备同步阻塞-异步传输”的内容中有机融合《数据库原理》、《计算机网络》的基本概念。这样的关联式教学方式使得学生能够将多门专业基础课程进行有机的融合贯通,有效的促进了专业理论体系的完善。
基于以上对教学内容的有机的系列化分类,在选用优秀计算机经典教材的基础上,必须强调教学方式的科学与合理,主要采用以下教学方式:
(1)定位于专业基础必修课,帮助学生建立扎实的专业理论基础。计算机领域各相关专业的学生都需要建立扎实完整的软件基础理论体系。《操作系统原理》是讲述计算机硬件资源管理、应用程序运行控制、人机交互接口实现等内容的基础性课程,在专业人才培养方面具有极为重要的作用。应该不断加强对《操作系统原理》课程的教学投入,积极完善师资队伍、改进教学计划、建立完整实践环境、主动追踪技术发展潮流,使得本门课程的教学质量不断提升。
(2)面向应用、软件等各专业学生授课,实现“承上启下”的总体教学目标。《操作系统原理》是计算机科学与技术专业必修基础课,是自动化专业的专业选修课,也是非计算机专业的软件方向主干课。在教学计划中,本门课程最主要的作用就是实现对低年级专业基础知识的综合与提升,帮助学生建立系统、完整的专业基础理论体系,培养学生的研究型思维和动手实践能力,开拓学生的专业学术视野,为后续课程的学习和专业发展奠定重要的基础。
(3)原理、实践、现实应用相结合,为培养高水平专业人才服务。《操作系统原理》是综合了基础理论讲授、动手实践、观察体验、最新技术发展潮流追踪等多项内容的专业基础课程。课程建设存在教学工作量大、上机实践环节重要、学生学习任务重等特点,课程教学过程中,常常存在原理讲授与上机实践脱节、课堂学习与现实应用剥离的情况,导致老师在教学过程中常采用“灌输式”教学法、学生在学习过程中常采用“机械记忆”的学习习惯,教学质量难以提升。为此,在《操作系统原理》课程建设中应该积极进行教学改革和创新,近年来不断引进国内外经典操作系统教材,努力搭建多种操作系统平台的上机实践环境,加强师资队伍建设和教学督导力度,加强对技术发展潮流的追踪。
(4)“启发式、关联式”的课堂讲授与课堂讨论相结合。在对基础性的操作系统原理进行讲解时,要注重讲授与讨论的结合,教案的内容组织并不完全遵循各类教材的内容安排,在讲解顺序、思路整理方面均体现了教师对学习过程的把握和指导。在详细讲解各类原理之前,安排小规模“课堂讨论”分析猜测设计思想,激发学生的好奇心和主动思考能力;在讲解原理的过程中,不断的问“为什么”,提高学生的对比分析能力;在原理讲解完成后,进行系统性的总结和展望,指导学生建立系统性的思维方式。为激发课堂讨论的积极性,对讨论过程中表现优异的学生给予“小额加分”的激励,鼓励学生表达自己观点。
考核内容及计分方法
A地区通信公司根据当前所管辖的网络系统维护单位的具体情况,要求各单位网络运维工作的考核由网络运行质量管理、市场支撑管理、网络运维成本管理、基础管理等指标构成(考核指标分类、主要指标、权重等信息见表1)
考核办法实施
对于日常工作完成情况,A地区通信公司考核网络运维生产各专业,包括网管、交换、传输、数据、电源空调、本地网线路、接入网、无线市话、大客户业务响应、资源管理等专业,网络运维部在年底组织对单位网络运维工作现场检查,对重点考核内容打分。
对于专项重点工作完成情况考核,主要是考核各维护单位对市公司全年安排的重点工作完成情况,如末梢设备整治、无线市话网络优化及网络运维巡检等重点工作。
考核内容以“大客户电路故障恢复及故障报告提供及时率”为例进行列示。在考核的过程中,为了防止网络系统问题带来的损失,还制定了“否决内容”(指对各单位指标完成情况进行检查或抽查),对于发生以下情况之一的单位,取消全年考核资格,以0分计:一是未能按时、按质完成重要通信、抢险救灾、战备以及其它应急通信任务,造成严重后果;二是拒不服从省、市公司的生产调度令造成严重网络责任事故;三是在发生重大故障后,不按照省、市公司相关管理规定进行报告,或者故意隐瞒故障、在故障原因报告中恶意歪曲事实、在故障调查中有明显舞弊行为;四是因违反互联互通原则给企业造成重大负面影响;五是在考核指标数据采样点的设置或数据上报中存在弄虚作假行为。
对考核数据的统计及保存,各单位应根据本考核细则中的各项指标定义解释、数据来源及计分方法,认真完成与指标相关的原始数据测试、统计、汇总和报送工作,并且妥善保管测试报告、电路调单、故障报告、网管数据等原始记录。
具体考核指标与准则举例
由于网络系统内部控制考核项目较多,指标繁杂,本文列示了“大客户电路故障恢复及故障报告提供及时率”的指标定义、计算与方法说明如下:第一,指标定义:统计期内电路故障及时恢复比率和及时提供故障报告比率的加权平均。
第二,指标值:全年累计100%。
第三,计算公式:考核的范围为所有通过省大客户故障处理系统受理的大客户业务故障。大客户电路故障恢复及故障报告提供及时率=第四,考核不含不可抗力和客户原因等造成的超时电路业务障碍。对故障原因不明且电路障碍业务恢复超时故障,则障碍受理方和有关责任方各计未及时恢复业务1次;对故障原因不明且电路障碍业务恢复未超时故障,则障碍受理方和有关责任方各计未及时恢复业务0.5次。
大客户电路故障恢复时限按照《通信业务故障处理及故障报告管理规定》执行,要求提供故障报告数为管理规定要求提供的报告数(包括超时故障、重要客户故障、重保期间故障,客户或客服部门要求提供故障报告的故障,上级维护部门要求提供报告等)。
第五,数据来源及统计报送周期。数据来源于省内大客户故障处理系统的统计数据,大客户业务响应部按月统计、汇总,并在年终计算各单位指标完成情况。第六,计分方法。完成或超过指标值的得基本分,不能完成核定指标值的,每低0.5个百分点扣1分,直至扣完为止。第七,评分标准。具体的大客户业务相应考核标准如表2所示。
A地区通信公司对网络系统考核评价的启示
网络系统的运行维护和安全措施是通信公司的基础工作,也是非常重要的一项内部控制工作。相关启示如下:第一,考核指标与业务工作紧密结合,具有很强的实际操作性。
一、人力资源战略是根据企业远景制定的,是企业经营战略的一部分,并主要通过促进企业长期可持续发展来实现对经营战略的贡献。
远景是要回答:企业将成为、想成为一个什么样的企业?经营战略则是实现远景的策略,人力资源战略是其中的重要组成部分。企业为实现其远景需要倡导的核心价值观是什么?采取什么样的理念来开展人力资源工作?如何制定人力资源规划?
例如,一家管理咨询公司的远景是成为向中国企业提供咨询方案的最佳服务机构。由于远景目标的知识性特点,其人力资源规划可以是初期选拔经验丰富并具有咨询业素质的专业人士,随着公司的成长和专业技术的完善,再加入毕业生由公司自己培养,以便尽快壮大队伍。其核心价值观可以是"信任、团队、智慧、创新",以激发员工的价值认同感。一流企业之所以能吸引并凝聚优秀的员工,认同感是其中的关键因素。
二、大人力资源管理涵括组织建设、文化建设与系统建设,通过企业文化整合战略、组织和系统,落实到各个相互配套的操作系统。
组织建设包括"硬"的组织结构规划设计和"软"的人力资源队伍建设,经营战略和人力资源战略决定组织建构并透过组织得以实现。文化建设首先确立核心价值观,再将其有系统的向组织渗透,并有意识的融入管理系统、制度和程序。系统建设既要求操作系统的科学与规范,更强调各系统间的配套衔接,这体现在两个方面:
1.人力资源操作系统是对战略由宏观到微观操作层面的细化,其间必须经过一个更为基础的普适性的技术分析过程,我们称之为"人力资源平台"。人力资源平台即通过对工作、人、职位的分析、评估,整理、明确三者之间的关系,为各操作系统提供技术支撑。招聘、绩效管理、培训发展、薪资福利及人员管理等子系统就是建立在此平台上。
2.操作系统是连贯一体的,如人才保留不仅是薪资待遇和发展机会的问题,在员工招聘时就应该加以考虑。面试评估标准应关注应聘人的价值观念是否符合公司的核心价值观,应聘人的发展期望是否是公司可以提供的;如果不相匹配,即使招聘进来也很难长期保留。只有综合、系统地制定各操作方法,才能保证其有效性。
三、人力资源不只是企业人力资源部门的事,所有管理者,上至总经理下到每个主管以至员工都应承担人力资源管理责任。
大人力资源观强调职业管理者应成为人力资源管理专家。因为人力资源管理是一项全局性工作,其各项职责如招聘、绩效管理、员工保留、培训规划等都需要各主管的贯彻配合和直接参与。同时,各层管理者直接承担着下属辅导培养、企业文化建设等职责。员工也越来越多地负起自我管理的责任。