随着这几年计算机价格的下降和网络普遍使用,用户希望将原来单机上的应用程序能分
布到多个机器上,以便充分利用已有PC和工作站的能力。另一方面,如果多台便宜的机器联
合能完成原本计划在一台昂贵的机器上做的事,那么就可不必新添置昂贵的机器。而且如果
用户新买了机器,也希望新的机器能与老的机器很好地协同工作。
但是,在异构环境中(指不兼容的操作系统和网络连接)建立和维护这样的分布式应用程
序并不是一件十分容易的事,它可能会遇到许多问题。例如一个应用程序分布到若干台机器
上后,程序的各个部分之间采用什么样的通讯机制?是用远程过程调用还是用消息传送?通讯
时还要考虑到各种不同机器上的数据格式如字符集、字节顺序可能不同;再比如,在多机环
境中采用什么方法使一个应用程序的不同部分能最大限度地并行执行?分布式环境下的安全
问题、定时问题都比单机环境要复杂得多。不言而喻,没有安全保障的分布式系统是谁也不
敢用的,而由于各机器的时间会有一定的误差值,要正确地决定一台机器上的事件A是否发生
在另一台机器上的事件B之前也不是一件容易的事。另外在分步式环境下,如何提供网络管
理和系统管理?还有,是否也能提供像单机操作系统类似的功能(如分布式文件服务、网络打
印服务)?
开放软件基金会(OSF)的产品分布式计算环境(DCE)和分布式管理环境(DME)致力于解决
由于分布带来的种种问题,向用户和应用程序提供方便的管理机制、使用方法和开发手段,
使网络资源能得到充分利用。DCE和DME的目标是成为分布式应用的标准平台。
OSF始建于1988年,是一非盈利的研究和开发组织,现已有300多成员。OSF的工作方式是
这样的:它首先向各个大学和公司征求有关的技术,在各组织提交了他们的技术产品后,由O
SF组织专家进行评审,在每种具体技术中选出最优的,然后将这些技术集成,形成OSF自己的
产品。迄今为止,已开发的产品有OSF/1(类似UNIX的操作系统)OSF/MOTIF(窗口工具集)、D
CE、DME。OSF提供的DCE、DME(DME到现在为止仅是阶段产品)的源代码大部分是用C写的,涉
及线索的一小部分是用汇编写的DCE可在OSF/1、UNIX系统V(版本4)、IBM的AIX下运行,DME
建议在安装OSF/1的Intel 486系统上运行。由于OSF的技术集各家之优,有较大的参考价值
,故我们在下面分别对OSF的DCE和DME加以介绍。
一、分布式计算环境(DCE)
客户机/服务器结构是分布式计算的基本框架,DCE也不例外。这里想说明一点,平常常
说的某台机器是服务器的说法并不十分准确,很少有整台机器仅运行服务器软件的。一般说
来,一台机器可以同时支持客户和服务器进程,两个服务器进程也完全有可能在同一台机器
上。本文纯粹为了方便起见将某一服务器所在的机器称为某服务的服务器。
1.DCE单元(CELL)和DCE的组成
DCE单元是DCE中操作和管理的基本单位,那么什么是DCE单元?DCE中把有频率通讯联系
的客户和服务器组成一组,称为单元。每一台机器都隶属于一个单元,一个系统事实上也就
划分成若干个单元,DCE单元可大可小,可仅由两台机器组成,也可能包含若干网上的上千台
机器。DCE由两大部分组成:(1)分布式编程设施:包括线索(Thread)和远程过程调用(RPC);
(2)分布式服务和应用:包括目录服务、时间服务、安全服务、无盘服务和分布式文件服务
。它们均提供应用程序接口,可供程序员使用。
DCE体系结构示意图如下:
@@46S13100.GIF;图1@@
上图表图DCE是操作系统之上的一层系统软件,不需要增加新设备,而且只要操作系统的
接口一致,DCE便可独立于操作系统。
2.多线索(Threads)
一线索是指进程内的一个顺序控制流。单进程多线索机制是支持并发计算的有效手段
。在多线索的支持下,服务器可以同时处理多个客户的请求,而客户方应用程序的不同部分
也能同时并行地执行,这样,系统的性能可得到有效的改善。虽说这种并行性也可用进程来
实现,但由于多线索之间共享地址空间,线索间的通讯和管理开销远远比进程小,所以DCE采
用了多线索技术。DCE的多线索技术是基于POSIX 3.4A线索接口规范说明(pthread)的。在
操作系统不支持单进程多线索的情况下,可用DCE中心线索库完成与线索调度相关的所有任
务。
由于多个线索同在一个地址空间,线索间的数据共享是很容易实现的。但要保证共享数
据的数据 完整性,还要有一些控制机制。制DCE使用了 两种变量。(1)Mutex变量:用于在多
个线索之间保证共享资源的完整性。Mutex有两个状态即locked和unlocked。在访问一个共
享资源如一个全局变量之前,每个线索必须给相应的Mutex变量上锁以阻止其他线的访问,在
完成对该共享资源的访问后再释放锁。(2)条件变量:它允许一线索暂时中止自己的执行,直
到另一线索通知它某一共享数据满足某一特定的状态。
3.远程过程调用(RPC)
远程过程是指该过程不在调用它的程序所处的计算机上,而是在网络的别的地方。RPC
扩展了本地程序调用机制,屏蔽了下层复杂的网络技术,使分布式应用的开发类似于单机应
用的开发。
DCE的RPC由两部分组成:(1)接口定义语言(IDL)和相关的编译器;(2)运行库。IDL是高
级说明性语言,其语法类似ANSIC,它用于定义远程过程的提供方(即服务器一方)和使用方(
即客户方)的接口协议。在接口定义中,指定每个过程的返回值的数据类型、输入输出参数
的顺序和数据类型。接口定义经IDL编译器编译后,生成客户方存根(Stub)和服务器方的存
根,它们分别与各自的程序相连,实际运行时它们再与运行库相连,完成一个完整的RPC调用

运行库主要解决下列问题:(1)异种机间数据表示上的不同;(2)支持RPC的各种执行语义
;(3)提供传送协议的无关性,即允许程序员选择所需的协议序列;(4)与目录服务相结合,使
客户找到所需的服务器,以便做各种操作;(5)与安全服务相结合,使每个RPC的接收和发送都
经过认证(Authentication),这种RPC称为认证了的RPC。
4.目录服务
目录服务要达到两个基本目的:(1)提供统一的命名机制,使系统中的每个对象均有一个
名字,供外界识别。(2)提供位置无关性,有了目录服务,应用服务程序能很容易地识别或找
到网络上任何地方的资源,从而使用户可以透明地使用网络资源。
DCE的目录服务分成两个层次,在DCE单元内提供单元目录服务(CDS),在单元之间提供X
.500(也称为全局目录服务,GDS)或Internet的域名服务(DNS)。相应地,DCE规定了两种类型
的名字:全局名和本地名。全局名可指向单元内的一对象或单元外的一对象;本地名仅在一
单元内有效,是全局名的缩写格式。
若应用程序想查某一对象(假设其名字为X)的信息,它先要发请求给CDS管理员,CDS管理
员检查缓存中是否有X的信息如果没有,再与CDS服务器通讯。CDS服务器在其数据库中搜索
,若找到所需的信息便将其回送给CDS管理员。CDS管理员接到后,一方面将信息送给应用程
序,一方面将它存入缓存。所以这里的缓存起的作用是减少访问CDS服务器的次数,提高查找
效率。CDS的数据库可以复制,从而提高可靠性,CDS为复制数据提供了相应的管理和维护措
施。每个DCE单元内至少有一个CDS服务器。
5.分布式时间服务(DIS)
网络上每个用户均有自己的时钟,它们的时间读数可能不一样。如果在使用MAKE时,源
文件所在机器的时钟慢,而目标文件所在机器时钟快,就可能造成源文件修改了,而MAKE却不
工作。由于许多分布式应用需要统一的时间参照体,所以DCE提供了DTS,用于同步网络上的
各个时钟,并使它们与标准时间相一致。
DTS是以客户/服务器模式组织的。每个单元内可有一个或多个DTS服务器,其他机器则
都是DTS客户。由于时钟不能被连续不断地同步,而两次同步之间仍会有时间误差,所以分布
环境下的时间表示需要包含时间的误差。DTS的时间是用一个时间区间来表示的,该区间的
中点表示时间埴。
6.安全服务
分布式环境对数据安全问题是很敏感的,它所要求的安全服务有身份认证、授权服务、
数据完整性服务和数据加密。
DCE的每个单元都配有一个完全服务器,它由三部分组成:(1)注册服务机构,管理和维护
注册数据库;(2)认证服务机构,确认给予用户使用和存取资源的权力;(3)特权服务机构。
·DCE的身份认证:用户一登录,安全服务器的认证服务机构便从注册数据库中取出用户
的口令,用该口令登录许可证(TGT)加密,然后传送给用户方。这时用户输入他的口令,如果
该口令能使加密的TGT解密,那么该用户是合法的的。这种认证方式使得非法用户即使截获
了TGT,也无从得知真正的口令。
·DCE的授权服务:DCE的每一个资源(对象)均有一张访问控制列表(ACL),ACL是一张谁
能使用该对象和能在该对象上完成什么操作的清单。授权服务就是验明客户能使用哪些服
务器上的哪些资源,允许它做什么操作。
·DCE的数据完整性:数据完整性是要 通讯中未被修改。DCE的方式是,在传送数据的同
时,传送数据总量(它需加密),由接收方比较,若不同,则认为该数据被修改。
·DCE的数据保密:DCE用发送加密数据的方式实现。
有一点要指出的是,安全服务使用得越多,系统的性能就越受影响。
7.分布式文件服务(DFS)
DFS是DCE中唯一的一个分布式应用,它支持分布环境中的信息共享,提供透明的与环境
无关的文件访问,使得访问远程与访问本地文件一样方便。
DFS也是采用客户/服务器模式。DFS的文件服务器有两种类型:一种是基于本地文件系
统(LFS),一种是基于UNIX文件系统。DFS的全部功能只有在LFS基础人才可全部获得,故以后
的讨论均基于LFS。DFS的特性包括:(1)LFS把文件分成文件集。一个文件集在逻辑上相当于
文件树的一个目录。这种文件集可复制,由DFS周期性地完成复制文件的维护。(2)LFS是基
于日志的文件系统,DFS记录所有影响文件的操作信息,如果出错,可根据日志文件恢复原文
件系统。(3)文件的一致性问题出现在多个用户访问和修改同一个文件的时候。DFS采用TO
KEN机制,控制文件的一致性,保证用户总是与文件的最新版本一起工作。(4)DFS利用安全服
务中的ACL机制。提供对目录和文件访问权限的准确定义。(5)DFS的客户设有缓存,缓存的
存在能减少文件服务器和网络上的负载,提高文件服务的性能。(6)DFS能与现已广泛使用的
网络文件系统(NFS)相接。
8.支持无盘工作站
DCE对无盘工作站的服务包括:(1)无盘工作站只在ROM(只读存储器)中有一个小的启动
程序。在DCE的帮助下,无盘工作站能从网络上的某一服务器(启动服务器)获取操作系统,并
将它装入内存执行。(2)从CDS中获取必要的配置数据,这些数据包括无盘工作站的根文件系
统的位置、文件系统缓存的位置、远程交换服务器的位置等等。(3)与DFS相连,使无盘工作
站在某个文件服务器上建立自己的文件系统。(4)完成操作系统的交换和分页。启动服务器
、文件服务器、交换服务器可由一个或多个计算机来承担。
二、分布式管理环境(DME)
分布式管理分成系统管理和网络管理。传统的管理模型是Manager/Agent模型:一台机
器是管理者,其他的机器是代理。另一种更一般的模型是Peer-to-Peer模型。当被管理的系
统在能力上几乎相等(或至少在某个范围内相等)时,这种模型方法比较好。例如增加新的用
户这种管理能力应在每台机器上均可。DME考虑了在这两种模型下的管理情况。
DME由三个几乎完全独立的部分组成。:(1)网络管理选择(NMO);(2)对象管理框架(OMF
);(3)分布式服务,包括事件服务、打印服务、软件传播服务、许可证管理服务。分布式服
务既不依于依赖于NMO,也依赖于OMF,而基本上依赖于OSF的DCE。由于它们形成了分布式环
境的公共基础。OSF便也将它们归入DME。
1.网络管理选择(NMO)
NMO的组成示意图如下:
@@46S13101.GIF;图2@@
NMO支持两种管理协议:简单网络管理协议(SNMP)和通用管理信息协议(CMIP)。SNMP 是
IETF开发的,现已被广泛应用。SCNMP将被管理的对象(如各种机器、各机器上的用户记帐情
况、路由表)等存入一管理信息库MIB,MIB根据RFC 1212规定的对象类型标注法标其管理对
象。SNMP是非确认的无连接协议。CMIP由ISO开发功能比SNMP强,但比较复杂,预计今后几
年会得到广泛使用、CMIP用了一系列国际标准定义管理对象。CMIP是面向联接的,它运行在
ISO/OSI七层以上。应用程序访问SNMP和CMIP的接口是X/Open的XMP,XMP对SNMP和CMIP各有
一套C的头文件和函数调用。
XMP库函数并不直接与SNMP或CMIP打交道,而是和IRB(Instrumentation Request Brok
er,设备请求代理)通讯。IRB起一个开关作用,将应用程序与正确的协议相连接。比如有事
件发生,需由IRB经判断后将它送正确的应用程序。
2.对象管理框架(OMF)
OMF是建在OSF的DCE之上的,它利用DCE的RPC做基本的通讯手段。
OMF的一个关键部分是MRB(Management Request Broker,管理请求代理)。MRB是基于对
象管理集团(OMG)制定的CORBA(Common Object Request Broker Architecture,通用对象请
求代理体系结构)的。CORBA定义了ORB(Object Request Broker,对象请代理),ORB用于在同
一系统或不同系统的对象之间透明地传送请求和回答。CORBA定义了通过ORB访问的对象的
接口。该接口用IDL(Interface Definition Language,接口定义语言)描述。接口中定义对
象的属性、操作、接口之间的继承关系,还可定义意外事件发生时的处理操作。这些接口经
IDL编译后分别生成客户存根和服务器骨干程序(Skeleton)。CORBA提供动态引用接口,使一
些在编译时不能确定的对象接口,在运行时动态确定。CORBA定义了MOA(Management Objct
Adapter,管理对象适配器),它与服务器骨干程序通讯,利用对象的标识激活某一操作。由
于每台机器都可能作为服务器,所以每台机器上均有MOA。MRB实现了CORBA,并扩展了其中的
MOA和IDL,将IDL扩展成与IDL向上兼容的超集14DL。
OMF的另一个部分是MUI(Management User Interface,管理用户接口)。MUI是基于XWi
ndow的它有一显示服务器。就是X Windows的请求到MRB,DME对象便通过MRB和显示服务器交
互。而显示服务器又是如何知道哪个应用程序在调用它呢?这要求应用程序事先用DSL(Dia
logue Specification Language,对话规格说明语言)描述它的接口。该接口经编译后生成
对话描述,显示服务器通过读取对话描述与正确的用户交互。MUI还包括一些显示成分,如显
示对象组、显示相关对象的关系图等等。
3.分布式服务
(1)事件服务(EVS)
EVS提供了一种通用的方法让系统和应用程序生成事件并传送到相应的目的地。
事件用事件定义语言(EDL)定义,包括事件类型定义和事件信息定义,事件信息由事件发
生时的时间戳。产生该事件的系统标识符和与该事件有关的特定信息组成。应用程序的开
发者先需定义若干这样的事件。事件发生后,由EVS的事件控制器决定是丢弃、在本地记录
还是通过ERB(Event Request Broker,事件请求代理)传送到别的远程用户(某台机器发生某
事件希望哪个远程用户接收是事先登记好的)。每一个事件控制器是一组(过滤器、动作)对
,过滤器 一条件表达式,满足某一条件,就执行相应的动作。动作只有三种:丢弃、本地记
录和发送。ERB发送的只是事件的数字代码,以减少网络传送。为了便于接收方阅读,EVS设
置了Log Viewer,这样用户从命令行接口就可看见事件的内容而不仅仅是代码,应用程序则
是通过EVS库函数接口得知事件的发生。
(2)打印服务(PRS)
PRS在一DCE单元内提供分布式打印服务。
应用程序利用PRS库函数接口,发送要打印的作业。一作业的属性包括作业名、作业标
识符、打印份数、文件格式(PostScript格式或ASCII码格式)、事件报告列表。事件报告列
表用于说明该作业的哪些事件将报告给作业的提交者。每一个应用程序都可以认为有一个
逻辑打印机在为自己服务。事实上,要打印的作业通过RPC传给了打印缓冲池进程,该进程将
打印作业放入打印队列,并按某种调度算法将作业发送给打印管理(也通过RPC)。最后由打
印管理进程将作业送到某一物理打印机打印。
(3)软件传播服务(SDS)
SDS用于在异构环境快完成软件安装和传播服务
软件产品首先要用SDS提供的工具Swpackage包装成POSIX定义的格式。存放软件的机器
可有多个,这些机器记录着产品的信息如名字、 版本等等。最终软件要传播到的机器称为
目标机器,目标机器有一个已安装产品数据库(IPD)。安装过程由负责安装和传播软件的机
器执行Swinstall程序来启动。安装过程是被监控的,安装错误记录在某个日志文件上,重安
装时只需根据日志文件仅安装出错的产品成分。
(4)许可证管理服务(LMS)
LMS提供了创建、传播和使用网络许可证的机制。
许可证由软件制造商用LMS提供的许可证生成工具生成。有三种基本的许可证模式:1)
固定式许可证,它仅在网络的某个结点上有效;2)浮动式,多个许可证(数目固定)分发给多个
同时执行的程序;3)一次性使用式,使用一次便失效。LMS的许可证到一定期限便要失效,在
失效前有一个宽限期限。等待许可证的用户形成一队列,LMS允许根据用户的优先权分配许
可证。
LMS的主要成分有:1)许可证服务器,它维护和控制许可证数据库和其他一些数据文件;
2)LMS IPC库,是应用程序与LMS的接口;3)许可证管理器,用户安装和操纵许可证的工具。L
MS的安全性对软件制造商和终端用户都很重要,故应用程序与许可证服务器之间的RPC通讯
都要用加密的时间戳进行验证,许可证数据库也是加密的。
(5)其他服务
子系统管理服务(SMS):许多应用程序是依靠精灵(Deamon)进程的运行。如果精灵进程
出错,应用程序就不能正常工作。SMS的作用就是监控单个机器上的精灵进程,若它们不能运
行了,则由SMS重新启动它们,SMS可按预先定义的顺序启动它们。
PC服务(PCS):Windows环境下的PC能运行整个DME而运行DOS的PC机只能使用DME的部分
功能。通过Ally的TSR(终止驻留程序)和Ally服务器,PC应用程序(需分别使用EVS和LMS的P
C库)能与EVS和LMS通讯,还能完成简单的远程操作,如把文件拷贝到PC机等等。