更新时间:2022-08-25 13:59
面向对象操作系统是指采用面向对象方法开发的操作系统。利用面向对象设计方法中的封装(Encapsulation)、继承(Inheritance)和多态(Polymorphism),可以更有效地实施系统保护,降低操作系统的设计难度和开发成本,并提高系统的可维护性。
在面向对象操作系统中,对象作为一种并发单位,所有系统资源,包括文件、进程、内存块等都被认为是一种对象,对系统资源韵所有操作都是通过使用对象服务来完成的。
以对象为基础建造操作系统,可以减少操作系统在其整个生命期内所做修改时对系统本身的影响。例如,如果硬件发生了变化,将迫使操作系统也做出改动,在这种情况下只要改变代表该硬件资源的对象和对该对象进行操作的服务即可,而那些仅使用该对象的代码则不需要改变。同样,当系统需要支持新的资源时,一个新的对象被生成,并加入到系统中,而不会打乱现成的代码,这使得系统的可扩充性比较好。
面向对象操作系统的开发方法是以对象为基本元素来构造操作系统的方法。而操作系统中的对象是操作系统所管理的信息和资源的抽象。面向对象操作系统的开发方法一般可分为以下三步:
1.问题定义
问题定义是将所需解决的问题以对象为单位进行对象的划分,并对整体对象需求进行分析。划分对象通常有以下两种基本方法:一种是像面向对象语言smalltalk那样,把系统内的所有物体都看成对象;另一种则是除了系统内部定义的缺省对象外,只提供一个对象生成工具,由用户根据需要自定义对象或生成对象实例。
对于前一种方法,当在网络环境下实现时,如果超类、类、子类以及对象实例之间的依赖关系不在同一个主机中,则其实较为困难。因此,在操作系统中较为常用的是后一种方法,即定义缺省对象和提供生成对象与对象实例的工具。这样,在单机系统中,可以按照smalltalk或C++等面向对象语言的方法把系统内所有物体看作局部对象,而把网络环境下的l对象看作广域对象且具有不同的类型,从而可以解决网络环境下对象的继承问题。
2.对象的设计与定义
这一步需要对对象进行较详细的设计和定义,并可以充分利用已有的对象.在不同系统中,对象的定义各异。不过,一般来说一个对象应包括三部分,即:
{对象名,对象类型,对象状态}
其中,对象名是对象的逻辑标识符,系统内的所有对象构成了一个对象名空间,对象类型指明该对象所属的类和可允许的操作;对象状态是该对象所存储的数据集合的权能。
在定义对象类型之后,还必须定义控制和操作对象实倒用的过程.对不同的对象实例,能改变其状态的过程是不同的。而且,正如前面所提到的那样,过程在系统中也被看作对象,它们具有自己的权能表和执行域,且执行域可由过程对象的权能表给出.另外,由于同一过程可被不同的进程对象调用,因此,过程对象的执行域不是固定的,过程对象的执行域在过程被调用时发生转换。
3.建立对象之间的联系
为了达到问题的要求,须将各个对象联系起来。对象之间的联系通过消息传递来实现。一个对象通过发送消息去启动另一对象的过程进行操作,一个对象不能在没有消息的情况下自由地进行操作。
根据面向对象操作系统所提供的保护范围,把现有的面向对象操作系统简单地分为以下三类。数据受保护的系统;数据和过程受保护的系统;数据、过程和处理机受保护的系统。
1.数据受保护的系统
数据受保护的系统是指那种把执行时所必须的状态数据和管理用数据定义为对象加以保护的系统。在这种系统中,受保护的数据可以是进程控制块、设备控制表和页表等,而对对象进行操作的过程则是另外定义的。
2.数据和过程受保护的系统
数据和过程受保护的系统是指那些在对象中包括数据和对这些数据进行操作的过程的系统。但执行这些过程进行有关操作的处理机未包括在对象中。由于过程需要由非对象的处理机来执行,故这种对象仍然是静态的和被动的。在这种系统中,过程的执行可分为静态连接执行和动态连接执行两种方式。对于动态连接执行方式,它涉及到如何动态地进行对象选择和切换,比静态连接方式要复杂得多。
将对象和处理机分开考虑的模型也称为“对象线程模型”。其中,线程代表处理机,它只拥有状态信息和堆栈等所必须的最小上下文。在这种模型中,操作系统由提供地址空间和过程的对象以及在该地址空间上执行有关过程的线程所构成,对象间的通信靠过程调用或远程调用来完成。
3.数据、过程和处理机受保护的系统
数据、过程和处理机同时受保护的对象是指那些本身具有执行能力的对象。用这种对象建立的系统又被称为动态对象模型系统。在这种系统中,对象包括了数据、过程以及执行这些过程的处理机;对象内的处理机除了完成一般操作外,还负责管理对象内部的资源。至于对象间的通信,需要依靠事先规定的协议来完成。
动态对象模型系统的最一般实现方法是在通常的进程上建立一个面向对象的环境。这样,对象的动态性可由进程得到,对象间的通信可由进程间的通信来完成。
操作系统中可以作为对象描述的成分包括:进程、线程、消息、文件、设备、存储区、缓冲区、信号量、过程等。
采用面向对象操作系统设计的好处有以下几点。
(1)操作系统需要管理众多的信息和资源,如处理机、存储器、外设和文件等,用对象来描述它们,显得直观、自然、符合人的思维方式;
(2)由于引入了对象概念,使操作系统中的管理和保护,通信和同步等都变得易于实现,且便于维护;
(3)在网络操作系统和分布式操作系统中,每个结点都可以描述成多个对象的集合,这样可以提供大量不同特性的结点,使系统更为协调、灵活;