《面向对象的操作系统.doc》由会员分享,可在线阅读,更多相关《面向对象的操作系统.doc(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、面向对象的操作系统目录目录摘要及关键词封面目录正文第一章 面向对象和操作系统(根据两者的定义引出主题,对于对象与类的理解也是不可或缺的)1.面向对象2.操作系统第二章 操作系统为什么要使用面向对象设计?(阐述面向对象设计的优势)第三章 面向对象操作系统的历史在面向对象设计操作系统的路上,前人的肩膀给了我们更高的起点。原创阶段和早期系统发展阶段当前代表性水平第四章 面向对象操作系统的开发方法(说明面向对象操作系统的开发方法)第五章 面向对象操作系统的大致特点(最主干部分)1面向对象操作系统的面向对象式的图形用户界面2面向对象操作系统的面向对象式的设备管理3面向对象操作系统的面向对象式的统一分布式
2、管理4面向对象操作系统的面向对象式的标准类以及导出类5面向对象操作系统的面向对象式的高可靠高扩充性内核6面向对象的操作系统与其他系统的比较结论参考文献及引用后记致谢摘要传统的操作系统在设计之初并没有考虑到今后要管理网络、多处理机等硬件与支持并行、分布与面向对象(OO方法)的程序设计。计算机硬件技术的发展要求与之相适应的操作系统,这样便出现了采用OO方法设计的操作系统。本文从面向对象设计的优势与面向对象操作系统的历史出发,阐述面向对象操作系统的开发方法,开发方法主要在于对象的划分和对象结构与对象的通信。并在之后用很多采用面向对象的操作系统的例子概述出面向对象的操作系统的特点,面向对象操作系统的面
3、向对象式的图形用户界面,面向对象操作系统的面向对象式的设备管理,面向对象操作系统的面向对象式的统一分布式管理,面向对象操作系统的面向对象式的标准类以及导出类,面向对象操作系统的面向对象式的高可靠高扩充性内核,并通过对面向对象的操作系统与其他系统的比较,总结出面向对象操作系统的优势所在。At the begin of traditionaloperating systemsdesigning,we dont think about we will manage the network,multiprocessing computer,and the program with Object Ori
4、ented,the develoing of computer hardware need new operating system to fit it,so,the operating system with object oriented arise. In this paper,we begin with the advantages of object-oriented design and object-oriented operating system in history, we get methods of object-oriented operating system on
5、 the development, mainly due to the development of methods and objects into the object structure and object of communication. And after the use of many object-oriented operating system, examples of object-oriented overview of the characteristics of the operating system, object-oriented operating sys
6、tem, object-oriented graphical user interface-based, object-oriented operating system, object-oriented style equipment management, object-oriented operating system of a unified object-oriented distributed management, object-oriented operating system, object-oriented style of the standard categories,
7、 as well as export type, object-oriented operating system, object-oriented type of highly reliable high - scalable core, and through the object-oriented operating system with other systems, , we summed up object-oriented operating system with its advantage.关键词关键词:面向对象 操作系统Key Words: Object Oriented;
8、Operating System正文第一章 面向对象和操作系统(根据两者的定义引出主题,对于对象与类的理解也是不可或缺的)1.面向对象面向对象的方法(Object-Oriented Method)是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,简称OO (Object-Oriented)方法,是建立在“对象”概念基础上的方法学。对象是由数据和容许的操作组成的封装体,与客观实体有直接对应关系,一个对象类定义了具有相似性质的一组对象。而每继承性是对具有层次关系的类的属性和操作进行共享的一种方式。所谓面向对象就是基于对象概念,以对象为中心,以类和继承为构造机制,来认识、理解、刻画
9、客观世界和设计、构建相应的软件系统。用计算机解决问题需要用程序设计语言对问题求解加以描述(即编程)对象:对象是要研究的任何事物。从一本书到一家图书馆,单的整数到整数列庞大的数据库、极其复杂的自动化工厂、航天飞机都可看作对象,它不仅能表示有形的实体,也能表示无形的(抽象的)规则、计划或事件。对象由数据(描述事物的属性)和作用于数据的操作(体现事物的行为)构成一独立整体。从程序设计者来看,对象是一个程序模块,从用户来看,对象为他们提供所希望的行为。在对内的操作通常称为方法。 类:类是对象的模板。即类是对一组有相同数据和相同操作的对象的定义,一个类所包含的方法和数据描述一组对象的共同属性和行为。类是
10、在对象之上的抽象,对象则是类的具体化,是类的实例。类可有其子类,也可有其它类,形成类层次结构。消息:消息是对象之间进行通信的一种规格说明。一般它由三部分组成:接收消息的对象、消息名及实际变元。面向对象主要特征:封装性:封装是一种信息隐蔽技术,它体现于类的说明,是对象的重要特性。封装使数据和加工该数据的方法(函数)封装为一个整体,以实现独立性很强的模块,使得用户只能见到对象的外特性(对象能接受哪些消息,具有那些处理能力),而对象的内特性(保存内部状态的私有数据和实现加工能力的算法)对用户是隐蔽的。封装的目的在于把对象的设计者和对象者的使用分开,使用者不必知晓行为实现的细节,只须用设计者提供的消息
11、来访问该对象。 继承性:继承性是子类自动共享父类之间数据和方法的机制。它由类的派生功能体现。一个类直接继职其它类的全部描述,同时可修改和扩充。继职具有传达室递性。继职分为单继承(一个子类只有一父类)和多重继承(一个类有多个父类)。类的对象是各自封闭的,如果没继承性机制,则类对象中数据、方法就会出现大量重复。继承不仅支持系统的可重用性,而且还促进系统的可扩充性。多态性:对象根据所接收的消息而做出动作。同一消息为不同的对象接受时可产生完全不同的行动,这种现象称为多态性。利用多态性用户可发送一个通用的信息,而将所有的实现细节都留给接受消息的对象自行决定,如是,同一消息即可调用不同的方法。例如:Pri
12、nt消息被发送给一图或表时调用的打印方法与将同样的Print消息发送给一正文文件而调用的打印方法会完全不同。多态性的实现受到继承性的支持,利用类继承的层次关系,把具有通用功能的协议存放在类层次中尽可能高的地方,而将实现这一功能的不同方法置于较低层次,这样,在这些低层次上生成的对象就能给通用消息以不同的响应。在OOPL中可通过在派生类中重定义基类函数(定义为重载函数或虚函数)来实现多态性。综上可知,在OO方法中,对象和传递消息分别表现事物及事物间相互联系的概念。类和继承是是适应人们一般思维方式的描述范式。方法是允许作用于该类对象上的各种操作。这种对象、类、消息和方法的程序设计范式的基本点在于对象
13、的封装性和类的继承性。通过封装能将对象的定义和对象的实现分开,通过继承能体现类与类之间的关系,以及由此带来的动态联编和实体的多态性,从而构成了面向对象的基本特征。2.操作系统操作系统(Operating System,简称OS)是管理计算机系统的全部硬件资源包括软件资源及数据资源;控制程序运行;改善人机界面;为其它应用软件提供支持等,使计算机系统所有资源最大限度地发挥作用,为用户提供方便的、有效的、友善的服务界面。 操作系统中四大部分的不同布局,也就形成了几种整体结构的分野。常见的结构包括:简单结构、层结构、微内核结构、垂直结构、和虚拟机(Virtual Machine)结构。内核结构内核是操
14、作系统最核心最基础的构件,因而,内核结构往往对操作系统的外部特性以及应用领域有着一定程度的影响。尽管随着理论和实践的不断演进,操作系统高层特性与内核结构之间的耦合有日趋缩小之势,但习惯上,内核结构仍然是操作系统分类之常用标准。内核的结构可以分为单内核(monolithic kernel)、微内核(microkernel)、超微内核(nanokernel)、以及外核(exokernel)等。我们这里介绍一下采用面向对象方法的操作系统的重要的内核结构:微内核结构是1980年代产生出来的较新的内核结构,强调结构性部件与功能性部件的分离。20世纪末,基于微内核结构,理论界中又发展出了超微内核与外内核等
15、多种结构。尽管自1980年代起,大部分理论研究都集中在以微内核为首的“新兴”结构之上,然而,在应用领域之中,以单内核结构为基础的操作系统却一直占据着主导地位。在众多常用操作系统之中,除了QNX和基于Mach的UNIX等个别系统外,几乎全部采用单内核结构,例如大部分的Unix、Linux,以及Windows(微软声称Windows NT是基于改良的微内核架构的,尽管理论界对此存有异议)。 微内核和超微内核结构主要用于研究性操作系统,还有一些嵌入式系统使用外核。基于单内核的操作系统通常有着较长的历史渊源。例如,绝大部分UNIX的家族史都可上溯至1960年代。该类操作系统多数有着相对古老的设计和实现
16、(例如某些UNIX中存在着大量1970年代、1980年代的代码)。另外,往往在性能方面略优于同一应用领域中采用其他内核结构的操作系统(但通常认为此种性能优势不能完全归功于单内核结构)。微内核的概念所谓微内核(Microkerne1)技术,就是把操作系统最基本的功能放在一个核心中实现其他功能尽量放在核心外的用户层实现。采用微内榜技术使操作系统本身的可移植性与可扩展性、可靠性、实时性大大增强适应了当前随着计算机硬件技术的发展而导致的操作条统功能越来越庞大,越来越复杂的趋势。以MACH30微内核为蓝本的操作系统的体系结构为例,Maeh微内核只包括进程间通信、处理器管理、进程与线程管理、虚存管理、lO
17、设备操作低层模块等5部分出于市场目标与效率的考虑各个操作系统生产商对哪一部分放人核心运行有不同的选择。总之微内桉的思想就是将传统操作系统核心的功能进行大量裁减,核心中只保留必须的模块(内存管理,处理器低层的管理、IPC(InterProcessCommunication)外部设备驱动程序等)。其他部分(文件系统、网络系统、进强管理等)提到核心外的用户层实现。这体现了OO方法中的对象思想,一些系统的内核设计对内核特性提供了对象封装,因而使系统的扩充更容易利用面向对象思想所带来的优势。 下面通过回顾操作系统的发展史来引出采用OO方法设计的操作系统。操作系统的发展与计算机硬件技术的发展大致相对应,它
18、经历了以下4个阶段t19451955年,电子管计算机与操作系统的早期形式Monitor(监控器);19551965年晶体营计算机与批处理系统;19651980年中小规模集成电路构成的计算机与支持分时多道程序设计的操作系统;19801995年,大规模集成电路构成的单机、多机、网络硬件环境与分布式操作系统、网络操作系统、并行操作系统。各个时期的操作系统与硬件环境相适应功能上不断完善以满足用户的新要求。随着计算机硬件体系结构的不断发展(并行、分布),处理器的RISC化(ReduccdInstructionSetComputer)大容量高速磁盘等外部设备、高速网络器件及联网技术等方面取得的飞跃发展,像
19、UNIX这样在发展初期以短小灵活、易移植著称的操作系统也不得不逐渐庞大起来,可移植性、可扩展性与可维护性越来越差究其原因,UNIX原本是为单处理机开发的支持分时多道程序设计的一种环境。在设计初期并没有考虑到今后要管理网络、多处理机等硬件与支持并行、分布与面向对象(OO方法)的程序设计。计算机硬件技术的发展要求与之相适应的操作系统,这样便出现了采用OO方法设计的操作系统。 那我们为什么要用面向对象来设计与我们息息相关的操作系统呢?第二章 操作系统为什么要使用面向对象设计?(阐述面向对象设计的优势)对象有明确的边界,是易于管理的实体。对象的封装实现了接口和实现的分离,即机制和策略的分离。这种分离使
20、同一接口可以有不同的实现,便于系统在保持原有结构的条件下进行扩充和升级(PEACE提出incremental system design的概念)。同时,清晰的接口使开发定制部件的工作变得容易并且规范化。这种分离体现出来的对象多态性使系统也呈现出多态性(PEACE提出OS Family的概念),便于根据需要对系统进行配置优化,以最好地满足应用的需要。对象的尺度比较小,便于以更细的粒度配置系统,可以使系统更灵活,更容易扩充。在对象模型和微内核技术的共同作用下,系统和应用程序的边界变得模糊了,便于系统功能直接配置应用程序里面。这个趋势进一步加强了系统的可定制性和可配置性,提高了性能。对象模型提供了对
21、各种资源的统一抽象,便于实现分布环境中的单一系统映像(Single System Image),有利于分布式计算实现统一模型。基于对象模型带来的这种可配置特点,发展自适应(或自配置)的系统也变得容易了。派生机制提供了一种耦合的界面,便于定制部件的开发。派生机制有利于基于类架构的代码复用。第三章 面向对象操作系统的历史对象操作系统的发展有三个阶段,在利用面向对象方法设计操作系统的路上,前人的肩膀给了我们更高的起点。原创阶段和早期系统:这个时期从70年代到80年代末。这个时期的很多系统都基于自己的面向对象编程语言和对象模型,许多系统支持大颗粒对象或active对象。这个时期的系统有Hydra、Ed
22、en、Argus、Chorus、Amoeba、Clouds、GUIDE。这个时期系统的一些特点:基于自己的面向对象编程语言和对象模型,许多系统支持大颗粒、active对象。HydraHydra系统是卡内基梅隆大学(Carnegie-Mellon University)开发的系统,发表时间是1974年。Hydra的目标是建立“统一适用”和“绝对可靠”的机制,从上面可以方便、灵活、有效、可靠地构建各种操作系统功能。Hydra是一个包含了许多原创概念的系统。这个系统是非常早在操作系统级提出对象概念的系统。提出这个概念的目的是为各种系统资源提供一个统一的抽象。一个Hydra对象有一个名称、一个类、一个
23、表现(其实是数据和capability)。Hydra的capability就是带权限的对象引用。类是由一个对象来表达的 这实际上是一个元对象。Hydra并没有明确提出元对象的概念,元对象的概念实际上是在几乎20年以后的反射操作系统Apertos上才被明确地采纳。但从某种意义可以说,Hydra开创了反射操作系统(Reflective Operating System)的先河。Hydra类的创建就等同于元对象的创建。每个Hydra对象包含一个引用计数,引用计数为零该对象就会被删除。和现在主流的对象的定义不同,Hydra对象具有更加广泛的含义:在Hydra对象模型中,过程也是一种对象。过程对象包含一
24、个capability。Hydra内核提供了对Hydra对象的支持:支持类的创建和表现、支持类上定义的操作、对不同execution domain(其实就是进程)中对象的安全访问、以及在不同execution domain之间进行的控制转移(其实就是进程间通信)。进程间通信是通过调用进程的过程对象实现的。当发生调用时,调用者调用内核提供的CALL原语把控制转移到被调用者,被调用者调用内核提供的RETURN原语把控制转移回调用者。CALL原语的功能其实是创建一个过程对象、检查和传递参数、并把控制转移到过程的代码。Hydra区分了保护和安全的概念:在Hydra中,保护被视为一种机制,而安全被视为策
25、略。Hydra提供了一种保护机制,可以在上面使用各种安全策略从而实现不同的安全级别(包括不支持安全的系统)。不仅在安全方面,Hydra在其它方面也实现了机制和策略的分离。Hydra把“操作系统”看作一种用户环境。这种环境由各种对象组成,每个对象都属于一个类,而类定义了一个操作集,实际上是一个接口。同一个接口可以有不同的对象实现。这种同一接口、不同实现的方式允许环境有许多种实现配置,即实现不同配置的操作系统。发展阶段:这个时期从80年代末到90年代前期。这个时期的系统不再强调基于特有的面向对象编程语言,而是开始使用一些流行的面向对象编程语言如C+。这些系统主要支持小粒度对象,或是粒度可变,没有专
26、门支持大粒度对象的系统。有些系统支持类的派生。一部分系统采用了微内核设计。这个时期的系统有PEACE、SOS、Choice、Grasshopper、Apertos。这个时期系统的一些特点:一部分系统采用了微内核设计,主要是基于小粒度对象的系统,或是粒度可变的系统如Apertos,没有专门支持大粒度对象的系统。PEACEPEACE系统德国National Research Center for Information Technology从1986年开始开发的,1995年发表。PEACE的目标是支持大规模并行计算和高度的可配置性。PEACE开始是基于微内核设计,但后来发现微内核设计存在严重的性能
27、问题。1990年进行了重新设计,不再把微内核作为核心考虑,而是转而应用面向对象原则进行内核设计,允许系统根据不同的需要进行配置,试图把PEACE变成一个内核族(kernel family),进而变成一个操作系统族(operating system family) 在操作系统级呈现出多态性。同时,允许进行增量系统设计(incremental system design),允许在未来把更高性能的部件配置入系统,以最大限度地满足性能需要。在应用对象技术的同时,微内核设计也没有被彻底放弃。在PEACE实践中还发现:尽管用户通常会很希望获得多任务的功能,但实际上在并行运算中,每个节点上的运算几乎都是单任
28、务的。也就是说,任务分配实际上更倾向于一个节点一个任务。PEACE基于分布式共享内存(DSM)。支持Active对象、Passive对象、Dual Object。Dual Object实际上是Fragmented对象。为了支持Dual Object,开发了一个C+的预处理器,名叫P+。当前代表性水平:这个时期从90年代之今。这个时期的系统大多基于可扩充内核(Extensible kernel)设计,强调系统的可定制和可配置。基本不支持Active对象,主要支持Passive对象,接口的概念得到广泛接受,系统不支持类的派生。这个时期的系统有Lipto、Spring、Vino 、Opal 、SPA
29、CE 、Paramecium、Tigger 、MetaOS、EROS 、Mungi、Pebble、E1。进入90年代后期,Internet得到了大规模的普及。在这个时期出现了一些支持面向大规模、异构分布式环境的系统,有些系统被称为宽域(Wide Area)操作系统。这些系统有Legion、WebOS、2K、GridOS。这个时期系统的一些特点:大多基于可扩充内核(Extensible kernel)设计,基本不支持Active对象,主要是Passive对象,接口的概念得到广泛接受,很少系统支持派生。LiptoLipto系统是University of Arizona在1993开发的一个原型,目
30、标是支持应用程序级(Application-specific)的可定制性和可配置性,以及高度的可移植性。第四章 面向对象操作系统的开发方法(说明面向对象操作系统的开发方法)操作系统中的对象是对操作系统管理的信息和资源的抽象。同开发其它面向对象的系统一样,其关键如何根据设计要求和目标来定义和划分对象、对象之间的结构以及对象之间的通信方式。1.对象的划分和对象结构关于对象划分,在操作系统中常用的方法是除了系统内部定义的缺省对象之外。只提供一十对象生成工具,由用户自定义或生成对象实例。这样,解决了网络环境下对象的继承性问题。同类的层次结构一样系统中的对象都按照一定的规律构成一定的层次结构。图1为对象
31、结构概图。对象对象对象超级对象超级对象超级对象2.对象的通信对象与对象之间互相发送消息来启动对方进行操作以改变它们的状态对象之间的通信方式可分为两种一种是远程过程调用(RPC),可完成网络环境下的对象之间的信息传递工作。当然,在阿络环境下传递消息时,由于通信对象之间没有共同的物理存储器,因此不能依靠参数的方法来实现过程调用。此外,由于通信双方是并行执行的。还应考虑对象之间的同步因素。第二种是共有存储器方式传递消息这种机制实际上为消息缓冲机制利用一个缓冲区,将消息放在缓冲队列中传送时释放队列中的元素第五章 面向对象操作系统的大致特点(最主干部分)面向对象的操作系统能够把一个大范围的网络例如一个全
32、球网表达成一台虚拟的计算机,并把其中各种各样的数据和设备表达成对象,同时把它们统一组织在一个树状的对象空间中。这个统一的对象空间建立在面向对象操作系统支持的一个分布式对象模型的基础之上。基于这个模型,用户可以在这个对象空间中用类似于文件路径的对象路径来引用网络中的任何对象,然后通过一个类似于CORBA的远程调用机制来访问这些对象。这样,不同地点的用户,不管是一个人还是一台计算机,都可以在这个统一的对象空间中方便地访问整个网络中的任何资源,从而实现了在整网范围内的漫游。这个功能使面向对象的操作系统适合于支持构建大范围的分布式系统。另外,面向对象的操作系统支持一个对象文件系统,用来存储持久对象,即
33、在程序结束后还能存在的对象。使用持久对象,程序员就可以不必象从前一样需要写大量的代码来存储对象了,因为这些对象会自动地被存储进持久设备如磁盘中。对象文件系统可以允许持久对象之间有非常复杂的相互引用关系,从而支持非常复杂的存储结构,提供比常规的文件系统强大得多的存储功能 - 这也正是Microsoft一直未能实现的梦幻操作系统Cairo所追求的目标。由于支持对象文件系统,面向对象的操作系统特别适合支持新一代的复杂数据库系统如对象数据库等等,也适合于支持一些需要较强存储能力的应用如CAD/CAM软件、办公软件、电子字典、单词记忆软件等等,尤其适合支持一些需要巨大复杂存储能力的应用如基因/蛋白分析、
34、科学模拟、天气预报等等。面向对象的操作系统是一个可移植的操作系统,基于一个第二代微内核级的高可靠高扩充性内核。它分完全版和剪裁版两个版本。其完全版运行于32位保护模式,具有多进程、高并发多线程、实时抢占式多任务支持以及先进图形界面设计等特性。同时,该操作系统的现有实现还支持Windows格式的可执行程序、动态加载的设备驱动程序和FAT文件系统等等功能。作为一个可移植的操作系统,面向对象的操作系统的剪裁版只占用较小的内存,可以运行在C51及8086上,适合大多数嵌入式应用。面向对象操作系统的面向对象式的图形用户界面面向对象操作系统采用面向对象式的图形用户界面,我们这里以Windows操作系统的图
35、形用户界面的面向对象的图形用户设计为例。Windows是操作系统发展史上一个里程碑式的作品,它对Windows3.1版作了许多重大改进,包括很重要的面向对象的图形用户界面,从而减轻了用户的学习负担;Windows之所以取得成功,在于它具有以下优点:直观、高效的面向对象的图形用户界面,易学易用:从某种意义上说,Windows用户界面和开发环境都是面向对象的。用户采用“选择对象-操作对象”这种方式进行工作。比如要打开一个文档,我们首先用鼠标或键盘选择该文档,然后从右键菜单中选择“打开”操作,打开该文档。这种操作方式模拟了现实世界的行为,易于理解、学习和使用。面向对象操作系统的面向对象式设备管理面向
36、对象操作系统的面向对象式设备管理采用面向对象的设计,使得代码的共享程度更高,减少了依靠机器的代码量,增加了可移植性我们以对采用OO方法的Mach30操作系统的微内核的面向对象设备管理的源程序进行剖析方法依据Math的I0管理机制分析源程序,以并行接口为端口编写通讯驱动程序,并验证其正确性结果在分析的基础上,通过修改有关驱动程序的接El,实现了两台Mach机或Mach与基于DOS机之间的通信结论Math30采用端口和消息机制,110接E1支持的设备驱动程序独立于设备和位置,而且是在用户级实现的面向对象设计,使得代码的共享程度更高,减少了依靠机器的代码量,增加了可移植性1独立于设备的设备驱动程序U
37、NIX的设备驱动是基于硬件设备的,把操作系统移植到新机器上时,对视频控制芯片(RAMDAC)、串行接I:1芯片(UART)、SCSI控制器,ethernet控制器等驱动程序的修改或编写工作量很大虽然每个芯片的作用不同,但在一个设备类内,所有芯片执行的操作基本相同例如每个视频控制芯片都有移动光标的能力,每个串行控制芯片都有设置速度和奇偶校验的能力找出这些公共的功能并将它们封装在类似的类分层结构的底层并生成一个系统这样很容易用不同的芯片代替原有芯片的代码,从而增加了可移植性Mach是通过创建设备类,然后标识每一类依赖设备芯片的接口,编写基本上独立于硬件设备的驱动程序目前,设备驱动不再区分字符和块设
38、备,而是一组在功能上成类的(grouped)设备驱动程序,包括屏幕、控制台、串行接I:1(serialline)、磁盘、磁带和ethemet等每个驱动程序都有一层或多层独立于芯片的代码,提供外部接口和实现设备驱动程序应有的功能在底层仅有简单的核心功能直接处理硬件这种分层结构减少了Mach依赖机器的代码量,大大增加了可移植性和代码共享程度如Mach30的serialline驱动程序,它被分成独立于设备的部分和一个小的依赖于设备(chip)的部分独立于设备部分处理字符缓冲及所有与控制台有关的操作,包括openclosereadwrite函数、startstopmodem操作、控制和基于一个字符一次
39、中断的简单的中断处理,调试程序错误时用查询方式向系统控制台发送接收字符,位映射驱动(鼠标和控制台callout)的转换代码在一个通用内核中找到恰当的控制台行依赖芯片的层仅实现直接操作设备寄存器的一些操作,包括probe(探测设备)、attach(连接设备)、设置速度、奇偶校验和modem控制、取出和送人字符至芯片对于screen的驱动程序,所有屏幕设备共享的代码部分是终端仿真器、字体(font)和屏幕保护器,如openclosereadwrite接口例程、压键和移动的事件处理逻辑,还有其它如控制屏幕保护器和光标位置的状态控制操作每个屏幕设备的专用代码控制探测、通知openfclose操作,在给
40、定位置画字符、滚屏、光标移动、视频onioff和空白、是否允许垂直回扫中断和返回映射到用户地址空间寄存器的物理地址即使在专用芯片的较底层,也能够使各设备共享一些代码例如,基于帧缓冲的所有显示共享画字符和滚动文本的相同代码。对于与屏幕模块分离的键盘和鼠标驱动程序,则只能由serialline或屏幕驱动程序调用,而不允许一般的用户调用键盘驱动程序将键盘的键码重新映射成终端仿真任务的ascii字符鼠标驱动程序将来自鼠标的字节再装配成坐标和鼠标按钮的击键设备专用部分处理鼠标报告的格式和键码翻译表2用户级的设备管理Mach以前版本的核内驱动程序不仅充当设备控制器,而且也用作数据缓冲器这样,当数据在用户和
41、设备之间进行传送时,就要使处理机在核心,用户状态进行转换从而降低了IO性能Mach30提供的用户级的设备驱动程序,避免用户和核心空间之间的数据拷贝,像基于图形工作站的显示设备一样,直接将设备映射到应用的地址空间,从而缩短了IO路径,提高了IO性能Mach的用户级设备管理是通过将所有设备的中断引向应用线程来实现的其核心是将设备寄存器、保存控制信息的共享页和处理设备DMA的某些存储空间映射到用户空间当发生中断时,一个小的中断例程保存寄存器的内容在共享页中,以便后用户代码使用,然后清设备的中断允许位,屏蔽中断当用户线程运行时,它仅调用驱动的中断例程处理中断在进行所有必要处理后,线程再置设备中断允许位
42、为此要求用户级的设备管理提供中断优先级仿真和内存分配用户级设备管理所要求的同步,是在核心中断处理程序和应用线程之间,通过用户方式下的threadsuspend和核心方式下的threadresume原语来实现的,而且每个设备仅需要一个专用线程从而使得应用程序如UNIXServer操作系统服务器直接控制设备的活动3Mach操作系统设备管理的实现在系统初启时,创建deviceservice(1线程,为其分配一个主设备端121号,用于设备管理,实现对各种设备的操作这些操作由dsroutinesc文件中的函数实现设备服务器提供用户和系统对设备请求操作的接口,它是各种硬件的最高管理者它把各种设备可能实现的
43、操作归纳为:打开设备(deviceopen),关闭设备(deviceclose),写设备(devicewrite),读设备(deviceread),取得设备状态(devicegetstatus)和设置设备状态(devicesetstatus)等对各种不同设备统一用device结构描述,对设备能完成的各种操作用devops结构描述系统或用户对设备的操作,必须按照如下步骤进行:首先打开设备,然后写读设备,或取得设备状态设置设备状态,最后关闭设备打开设备时,必须提供主设备的端口号和设备对象的名称用名称在设备操作表devops中查找该设备,若该设备名合法,则创建一个device结构用于描述和管理该设备
44、将该设备状态设置为打开,并增加该设备的打开计数打开成功后,将该设备对象的端口号返回绐用户或系统,以后对该设备对象的所有访问均通过该端口号进行设备一经打开,便可进行读写操作用户调用读写接口函数进行读写时,系统为其分配一个Io请求结构,并用读写函数所带参数对该结构进行初始化,然后,通过该设备的device结构中的devops操作表调用该设备的读写驱动程序,实现与该设备相关的具体操作为了共享代码,对于那些以字符方式输人输出的设备(包括键盘、显示器,打印机,串行口等),系统为它们分别分配一个T11Y结构进行描述,并把它们在输人输出时所必须进行的独立于设备的公共处理操作提取出来,放进charioc文件中
45、,形成T11Y驱动程序对于块设备,则把它们的共性操作用一个heifer结构来表述这一类设备的属性并把输人输出中共享的一些公共部分提取出来作为这个类的操作,放在blockioc文件中,形成块设备的驱动程序这样,字符设备输人输出操作中的大部分处理工作均由T1Y驱动程序中的函数完成字符设备中剩下的与具体硬件设备有关的驱动操作,由具体硬件驱动部分负责接收和发送字符,处理与输人输出过程的同步操作,从而减少了依赖设备的代码数量T1Y驱动程序按照线路规程(1inediscipline)同系统的其余部分发生联系它由过程接口linesw(线路开关)结构描述1inesw结构规定了线路规程的人121(很像UNIX字
46、符设备开关表cdevsw),列出字符设备驱动程序的人口Mach操作系统具有面向对象操作系统的特征它把设备分别当作对象,这些对象作为设备有一些共同的特性,可以当作一个类,用统一的device结构来描述这类设备对象的属性结构中的变量表示了它们所共有的属性(成员数据),device结构中包含有devops操作表,用于描述这些设备对象所具有的操作(成员函数)对于字符输人输出设备,由于它们有一些局部共性,于是用TTY结构来表述这一类设备的属性把在字符输人输出过程中共享的一些函数作为这个类的操作所以这类设备可以看作是从device设备父类派生出的子类它除了具有父类的共性外还有自己的特性不同的字符设备可以看
47、作是从nY设备类派生出的不同子类这样,各设备驱动程序中的函数,一部分为该设备类特有的操作,另一部分为该设备从父类继承的设备作为独立的对象,分别有各自的驱动程序其中,除了包含各设备作为它们所属类所必须的公共函数操作外,还有设备对象所特有的函数操作在这方面,Mach首先采用设备服务器作为设备管理统一的人口,这样,各设备驱动程序共享了与操作系统其它部分衔接的接El程序,各设备都用服务器中的函数操作完成接口数据交换面向对象操作系统的面向对象式的统一分布式管理从某种程度上说,面向对象的操作系统的灵感来自于Microsoft的梦幻操作系统 Cairo。由于面向对象的操作系统实现了Cairo所提出的关键特性 对象文件系统, 所以可以在某种意义上被视为Cairo操作系统的一个原型。 面向对象的对象文件系统实际上是一个分布式的持久对象系统,该对象文件系统基于一个被称为Object Connecting Protocol (OCP)的统一分布式持久对象模型,具有能够把现有的非对象系统,例如Web系统、文件系统或分布式文件系统映射进面向对象的操作系统的对象空间,并提供以分布式持久对象的方式访问的能力。这样,访问本地和网络