面向对象操作系统的设计.ppt

上传人:本田雅阁 文档编号:2603312 上传时间:2019-04-16 格式:PPT 页数:40 大小:259.01KB
返回 下载 相关 举报
面向对象操作系统的设计.ppt_第1页
第1页 / 共40页
面向对象操作系统的设计.ppt_第2页
第2页 / 共40页
面向对象操作系统的设计.ppt_第3页
第3页 / 共40页
面向对象操作系统的设计.ppt_第4页
第4页 / 共40页
面向对象操作系统的设计.ppt_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《面向对象操作系统的设计.ppt》由会员分享,可在线阅读,更多相关《面向对象操作系统的设计.ppt(40页珍藏版)》请在三一文库上搜索。

1、第10章 面向对象操作系统的设计,10.1 面向对象的基本概念 10.2 面向对象和操作系统 10.3 面向对象操作系统的分类,10.1 面向对象的基本概念 “面向对象”或“对象”的概念起源于20世纪60年代末期。进入80年代以后,随着计算机软、硬件技术的发展,面向对象技术在数据库、程序设计语言、CAD/CAM、人工智能技术、程序设计以及操作系统和计算机网络通信等几乎所有的软件领域都受到了极大重视和广泛研究。特别是在操作系统领域中,由于面向对象技术除了在设计方法上更接近于设计人员脑子中的“思维形象”之外,它还具有隐蔽数据以及由消息激活对象等特性,从而它比传统技术更容易应用于分布式操作系统的设计

2、与实现。因此,许多面向对象的操作系统都正在被研究和开发,以便用作分布式网络操作系统。,例如Windows NT,Solaris 2.x和mache等。这些系统的共同特点是:使用面向对象技术设计和实现操作系统,从而使得所实现的操作系统能够管理一个超大规模的、开放式的、自我发展的以及分布式的计算环境。这里,首先介绍面向对象的基本概念。,1. 对象和面向对象 对象可分为物理对象、抽象对象和计算机对象三个层次。计算机对象是把抽象对象的属性、特征和行为数据化和过程化的结果。本书中所述对象都指计算机对象。 对象是一个由一组数据集以及对这些数据集进行操作的封装模块。对象接收其他对象发来的消息,并由对象自己根

3、据本身的状态和所具有的功能决定是否根据接收到的消息进行操作。另外,对象一般具有自己的存储结构,对存储内容的访问、操作和变更只能由对象自己完成。再者,为了区别不同的对象,系统内的每一个对象都具有唯一的对象名。因此,一般,一个对象由对象名、表示存储内容的对象状态以及对存储数据进行操作的过程集合组成。,把系统以及系统中的元素用对象及对象的集合表示来构造的系统就是面向对象的系统。 面向对象的系统具有两个重要特性,即封闭性(encapsulation)和继承性(inheritance)。封闭性对应于系统中对象的分类抽象化,即每一种类型的对象都定义有对该类对象的属性及操作方法,且只允许按定义的方法对该类对

4、象进行操作。换句话说,一种类型对象的动态性质封闭于该类对象的属性和方法之中。继承性对应于系统的一般化,即具有某些共同属性的对象所组成的类(class)可继承它们的超类(superclass)所具有的属性和操作。,2. 对象的动作 被激活的对象在系统中怎样动作呢?一个面向对象的系统应具备以下两种功能:第一,向其他对象发送消息。这是对象间相互通信的唯一手段。第二,能生成或创建新的对象。这是用对象来描述系统变化所必须的手段。 3. 消息 面向对象的系统中环境对某一对象发出消息以激活该对象,从而通知它需要做什么。消息中一般包含请求对象的标识符以及完成该工作所必需的信息,例如参数值等。另外,请求对象的对

5、象名也可包含在消息中。,4. 类和实例 具有相同属性和行为的对象集合称为类。换句话说,属于同一类中的对象具有相同的存储结构,使用相同的过程集合对数据进行操作。每一个类都具有一个反映其特征的型(type),型提供选择和区分对象操作的依据。 类也可以被看作是对象,而且,类具有分层构造特点,即从具有共同属性和行为特征的对象的集合中,可进一步抽出具有某些特殊属性或行为特征的对象构成该类的子类;而该类又是该子类的超类。这些超类、类、子类等构成类的层次结构,子类继承其所有高层超类的属性和行为特征,但反过来,超类或类不具有子类所具有的独特的属性与行为特征。,一个类中的对象即是该类的一个实例,实例具体描述一个

6、对象。一般来说,一个类中有多个实例。类和实例的关系近似于数据结构与具体数据的关系。 5. 过程或方法 过程或方法是定义于某一特定类的操作与法则。一种类型的对象只能被事先定义好的过程或方法所操作。不过,不同类型的对象可以分别包含同一过程或方法。例如,在实数子类和二进制数子类中定义“+”法,则实数子类中的对象和二进制数子类中的对象都可使用该方法改变自身的状态。显然,对于同一消息(1,1),实数子类的输出结果是2,而二进制子类的输出结果将是0。 关于对象的几个主要关键词如图10.1所示。,图10.1 关于面向对象技术的几个关键词,10.2 面向对象和操作系统 本节主要讲述为什么要把面向对象技术引入操

7、作系统和怎样用面向对象技术开发操作系统。 10.2.1 面向对象技术的引入 面向对象技术最初在操作系统中出现是在20世纪60年代后期,J. Dennis等从资源保护的角度出发提出了权能(capability)的概念,权能的概念也是造成面向对象概念产生的重要因素之一。,在操作系统中,无论是软件资源还是硬件资源,传统的设计方法都是使用相应的表格或队列链等数据结构以及相应的标识符(或过程名)来描述它们。对这些资源的访问和使用顺序则是由进程中的程序来规定的。也就是说,对操作系统资源数据的使用是依靠程序员或设计人员所设计的算法来决定的。设计人员必须保证这些算法的正确性,否则将会由于不当的访问操作带来不可

8、估量的恶果。 首先开始解决资源保护问题的尝试是分段。分段把一个进程的逻辑地址空间分成多个不连续的段,且每个段具有独立的逻辑意义和连续的段内地址。从而,可以使用段表来进行地址变换和段内数据保护。例如,可以使用段表中的相应栏目来设置进程对某个段的读写权限,从而起到保护该段的作用。,但是,由于段表是从属于进程的,因此,对于同一段程序来说,在不同的进程中具有不同的段号,即其逻辑地址只在一个进程内有效。这样,对逻辑地址的访问权限就掌握在进程手中而不是段中或系统中。 再者,对于长期保存的数据文件来说,文件系统中设置有文件名和读写权限检验等。这种保护方式又完全不同于对段的读写保护方式。是否有一种不依赖于上下

9、文关系和长期、短期之分的统一的数据保护方法呢?J. Dennis在1966年提出了对系统内的所有“物体”赋予权能,实施统一保护的概念。,权能包括对象名和访问权。从权能的眼光看,系统内的所有物体都是对象,而每一个对象在访问另一个对象时,都必须提出自己的权能,只有被访问对象和操作在该权能限定的范围内,该访问才是正确的。对于各用户或进程来说,系统为每个用户或进程设置一张权能表。该表中含有允许该用户或进程访问的所有对象的权能。这样,由权能表就规定了该用户或进程可以操作和访问的范围以及封闭了各个对象。再者,操作系统严格限制用户或进程任意修改权能表,从而保证了系统的完整性。如果把用户和进程也看作对象(它们

10、的确是对象),则可以认为由权能表把该对象可以使用的数据和操作封闭起来了。,另外,可以把权能表赋给任何一个过程,从而把过程的操作领域和操作进行封闭保护。 图10.2是使用权能表进行地址变换的例子。在图10.2中,由于每个段都被看作一个对象,因此,在一个进程是否可访问某段时除了给出段内相对地址之外,还必须提出它所访问对象的权能,以验证它是否有权访问该对象。权能中的对象名又进一步指向该对象的描述信息,例如对象数据在存储空间的位置、长度等。由对象描述信息和段内相对地址l就可得到实际要访问的物理地址。,图10.2 使用权能表进行地址变换,使用权能表的另一个好处就是做到了单级寻址,即无论待访问指令是在内存

11、中还是在外存内,都可以通过权能表所指示的对象而找到它们。这样就可以把文件系统也纳入进程的逻辑空间中。使用权能表的面向对象系统有hydra、starOS等。 引入面向对象概念的另一个重要原因是“对象”比起“算法+数据结构”方式更接近于人的思维。这表现在两个方面:第一方面是用户使用面向对象的工具作为开发环境;另一方面是系统设计人员使用面向对象的概念设计出性能好、结构清晰和能力强的操作系统。,进入20世纪80年代中后期以来,为用户提供友好用户接口的面向对象开发环境不断被开发出来。这些开发环境为用户提供各种直观的对象如窗口、按钮、菜单、翻滚条等。用户通过键盘或鼠标对这些对象进行操作。这些对象都含有自己

12、的数据和过程以允许用户对其进行直接操作,而不必不停地激活应用程序。另外,这些对象还向系统发送消息或事件以驱动其他对象完成相应的功能。 面向对象的操作系统得到广泛重视和研究的另一个重要因素是它适合于超大规模的、开放式分布环境。由于面向对象技术采用对象间发送消息来驱动对象完成特定功能方法,且对象的定义不受距离和系统的限制,因此,面向对象的概念被广泛地用于分布式操作系统或网络操作系统。,10.2.2 面向对象操作系统的设计方法 用面向对象方法设计操作系统除了增强系统的安全功能之外,还具有以下几个好处: (1) 通过对象的复用性降低开发操作系统的难度。操作系统中所设计的各类对象在第一次设计和开发时,经

13、过了设计、编码、测试和在开发出来后的使用中得到了提高和改进。复用这些软件既可以节省开发成本,又能提高系统的可靠性。面向对象设计技术的使用将会极大地降低操作系统的开发难度。 (2) 系统将具有更好的可扩展性以及可维护性。由于面向对象技术的封装特性,对象和对象之间的边效应很小。这有利于产品的升级维护和更新。更重要的是,对于新的应用对象,面向对象系统可以很方便地将其链接到一起。,(3) 方便设计和系统组织,因为面向对象的思想与概念更接近于现实世界。 操作系统中的对象是对操作系统管理信息和资源的抽象。对象拥有自己的状态或存储空间,而且,其状态也就是存储内容,只能由预定义好的操作来改变。而改变对象状态的

14、操作又需要其他对象发来相应的消息后才能被启动。因此,也可以认为操作系统中的对象是受某种手段保护的物体。正如前面提到过的,以对象为要素构成的系统被称为面向对象的系统。那么,怎样使用面向对象技术来设计和开发操作系统呢?与开发其他面向对象的系统一样,其关键是如何根据设计要求和目标来定义和画分对象、对象之间的结构以及对象之间的通信方法。,1. 对象的定义和对象结构 对象的画分和定义有两种基本方法。一种是像面向对象的语言smalltalk或CLU那样,把系统内的所有物体看作对象。另一种方法则是除了系统内部定义的默认对象之外,只提供一个对象生成工具,由用户根据需要自定义对象或生成对象实例。 对于把所有物体

15、都看作对象的方法来说,由于只在类中描述生成一个对象实例用的信息和对一个对象实例进行操作的方法,因此,在网络环境下实现时,如果超类、类、子类以及对象实例之间的依赖关系不在同一主机中的话,其实现将会较为困难。,在操作系统中常使用的是第二种方法,即定义默认对象和提供生成对象与对象实例的工具。这样,在单机系统中,人们可以按照smalltalk或C+等面向对象语言的方法把系统内所有物体看作局部对象,而把网络环境下的对象看作广域对象且具有不同的类型,从而解决了网络环境下对象的继承性问题。 不同的系统中对象的定义各异。一般来说,对象应被定义成一个寻址保护的基本单位,它包括三个部分,即 对象名,对象类型,对象

16、状态 其中对象名是对象的逻辑标识符,系统内的所有对象名构成一个对象名空间。对象类型指明该对象所属的类和可允许的操作。对象状态是该对象所存储的数据集合和权能。,在Hydra系统中,系统默认定义的对象类型有:进程、过程、页、信号量、I/O设备、数据、策略、端口、文件、通用对象和类型对象等,其中类型对象用来创建一种新的对象类型。再者,系统定义有一creat语句来创建任一对象类型的实例。 为了管理的方便和利用面向对象的继承性特点,系统中的对象都按照一定的规律构成一定的层次结构。例如,在Muse系统中,其对象就分为超级对象(meta-object)和一般对象(object)。其中超级对象定义一般对象的内

17、部结构,并为一般对象提供一个最佳执行环境。图10.3给出了Muse的对象结构概念图。,图10.3 对象结构示例,2. 过程和通信 定义了对象类型之后,还必须定义控制和操作对象实例用的过程。对不同的对象实例来说,能改变其状态的过程是不同的。而且过程在系统中也被看作对象,它们具有自己的权能表和自己的执行域。另外,由于同一过程可被不同的进程对象调用,因此,过程对象的执行域不是固定的,过程对象的执行域在过程对象被调用时发生转换。 对象和对象之间通过互相发送消息来启动对方的过程进行操作以改变它们的状态,对象不能在没有消息驱动的情况下自由地进行操作或修改自己的状态。对象之间的通信方法可以大致上分为两种。一

18、种是远程过程调用(RPC),远程过程调用可完成网络环境下的对象之间的消息传递工作。,图10.4给出了网络环境下对象之间互通消息时的通信顺序结构。 在图10.4中,netname_look_up和send是送信对象的过程;port_allocate、netname_check_in以及receive是接收对象的过程。 另外,在网络环境下传递消息时,由于通信对象之间没有共同的物理存储器,因此,不依靠参照参数的办法来实现过程调用。而且,由于通信对象双方是并行执行的,因此,必须考虑对象之间的同步因素。图10.5 给出了一种最典型的RPC处理流程。,图10.4 利用网络环境的通信结构,图10.5 RPC

19、的处理过程,在图10.5中,由于客户对象必须区分所发出的过程调用是否是远程调用,因而设有远程过程区分模块stub,该模块把远程过程调用的有关参数进行组包后作为消息交给消息发送模块发出,并把远程过程调用返回的结果值进行拆包后交给原调用部分。 远程过程调用使得系统可以在网络环境中执行不同的对象。但是,在网络环境中执行的对象的寻址范围必须是在该对象的地址空间内。换句话说,在一个对象的权能中没有描述的过程或对象,不可能依靠远程过程调用得到执行。 第二种方式是共有存储器方式传递消息。这种方式与前面章节中讲述进程通信时所述方法大致相同。,3. 进程和资源的关系 在操作系统中,进程是动态的,而资源是静态的。

20、无论是传统操作系统设计方法,还是使用面向对象设计,都会涉及到如何为进程分配资源的问题。在传统设计方法中,进程获得资源是通过系统调用(例如文件资源等)或过程调用(例如缓冲分配)等方法。 在面向对象设计的操作系统中,进程和资源之间的调用关系是通过对象之间互相发送消息进行消息通信实现的。而这些消息的发送和接收又要依赖于对象中所包含的过程来实现。 图10.6给出了Windows NT系统中使用的进程对象与资源的关系。,图10.6 NT进程对象与资源,如图10.6所示,NT用户必须首先通过访问托肯(Token)对象检验其身份的合法性之后才能有权创建相应的进程对象。进程对象的属性中包含有与它相关联对象指针

21、的对象表,包括线程、文件以及内存分区等。这里,线程、文件以及分区都可以是多于一个的。 虚存空间管理对象将给进程对象分配相应的地址空间结构。进程自身不能修改这些数据结构。 进程对象可以通过对象表访问其他对象。,4. NT进程对象和线程对象 NT的进程对象和线程对象如图10.7所示。 其中,进程号与线程号分别表示进程和线程的识别符,它们在系统中是唯一的。安全性描述则指出是谁创建该进程对象,以及谁可以访问或使用该对象。 进程基本优先级是为进程中不同线程设置的,而线程的动态优先级和静态优先级则分别指线程在执行过程中的优先级和线程动态优先级的下限。 线程上下文指相关寄存器中的值和那些定义线程执行状态的数

22、据结构。 默认处理器个数指线程可以同时执行的处理器个数。 最大资源限制指系统内存量、文件空间大小以及用户进程可以使用的处理机时间。,图10.7 Windows NT进程 与线程对象描述,进程的执行时间指该进程中所有线程的已执行时间之和,而线程的执行时间则是线程在用户态和核心态两种执行模式下占有处理机的时间之和。 I/O计数器和虚存操作计数器分别记录进程中各线程对不同类型的I/O设备以及虚存进行操作的变量。 进程的断点则提供不同进程之间进行通信的通道。 线程的异步调用标识指出该线程是否在进行异步过程调用。线程的挂起数表示该线程未被恢复的挂起次数。线程访问控制允许该线程暂时访问其他进程。 线程的结

23、束断点也是为进程间通信预备的通道。进程管理程序可通过该通道控制线程结束。 进程和线程的结束状态则分别给出进程和线程终止的理由。,10.3 面向对象操作系统的分类 面向对象的操作系统首先是为了保护公有资源而开发的。自20世纪80年代初期第一个面向对象的操作系统Hydra开发成功以来,人们开发出了许多不同种类的面向对象的操作系统。这些系统具有一个共同特点,就是无论何种对象,都可被看作是受保护的基本单位。因此,面向对象的系统具有比面向进程的系统更为广泛的意义,因为进程只是一种类型的对象,且面向进程的系统只有在系统执行过程中才对有关资源提供保护。下面,根据面向对象的操作系统所提供保护的范围来对现有面向

24、对象的操作系统进行一个简单的归类。,面向对象的操作系统可以分为三类,即数据受保护的系统、数据和过程受保护的系统以及数据、过程和处理器受保护的系统。 数据受保护的系统指把执行时必需的状态数据和管理用数据定义为对象加以保护的系统。这些被保护的数据可以是进程控制表、设备控制表、页表等。在数据受保护的系统中,对对象进行操作的过程是另外定义的。 数据和过程同时受保护的系统指那些对象中包括数据以及对这些数据进行操作的过程的系统。不过,执行这些过程进行有关操作的处理器未包括在对象中。数据、过程和处理器同时受保护的对象是指那些本身具有执行能力的对象。,1. 数据受保护的系统 数据受保护的系统的典型例子是Hyd

25、ra。由于加强了数据保护,Hydra将操作系统的功能作为一般用户程序(对象)来实现。在Hydra系统中,各种状态数据和资源管理数据都被定义成对象且都具有进行访问控制的权能表。 在Hydra系统中,对象由具有唯一性的对象名、对象类型以及数据部分和权能表组成。对象名由用户指定,对象类型除了设备、文件、目录、过程、进程、信号量等之外,还有用户用来生成新对象类型用的类型对象。权能表则是由该对象可以访问的对象名及操作权限组成。,尽管在Hydra中过程也被看作对象而受到保护,但由于并不属于某个对象或某个对象类(即Hydra的对象中不包括操作数据的过程),因此,仍把Hydra看作只是数据受保护的系统。,2.

26、 数据和过程受保护的系统 数据和过程一体化的对象中,过程是作为对象的内部过程存在的。不过,在这样的系统中,对象仍然是静态的和被动的,过程由非对象的处理器执行。过程的执行有静态链接执行和动态链接执行两种方法。特别是动态链接执行涉及到如何动态地进行对象选择和切换,比起将过程作为单独对象的方法来说要复杂得多。 将对象和处理器分开考虑的模型被称为“对象线程模型” ,这里线程代表处理器,它只拥有状态信息和堆栈等所必需的最小限度的上下文,操作系统由提供地址空间、过程的对象以及在该地址空间上执行有关过程的能动部分线程构成。在这样的系统中,对象间的通信靠过程调用或远程过程调用完成。,3. 数据、过程和处理器受保护的系统 数据、过程和处理器三者都受保护的系统被称为动态对象模型(active object model)系统。在这样的系统中,对象包括了数据、过程以及执行这些过程的处理器。对象之间的通信要依靠事先规定的协议来进行。再者,对象内的处理器除了完成一般操作之外,还负责管理对象内部的资源。 以动态对象为基础,有的系统还在对象中定义原语、进程、并发等控制机制以提高系统的可靠性。 动态对象模型的最一般的实现方法是在通常的进程上建立一个面向对象的环境。这样,对象的动态性质可由进程得到,而对象间的通信则可由进程间的通信完成。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1