分布式多媒体计算机系统
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.5 异构型分布式计算机系统

异构型分布式计算机系统(HDCS)由互连的不同硬件和软件组成,一个典型的HDCS可配置不同操作系统、采用不同网络连接、具有不同类型的机器。

图2-12是一个典型的异构型分布式计算机系统的示意图。

图2-12 一个典型的异构型分布式计算机系统的示意图

2.5.1 异构性必然演化

随着计算机技术的发展以及分布、互联、协同操作计算机系统的广泛使用,HDCS越来越显示出其重要性,并得到更多的应用。即使用户的初衷是建立一个同构型系统,但往往最终也会自然地演化成异构型系统,原因如下:

(1)分布式计算机系统已成为资源共享的重要方式。随着分布式系统资源的增多,其他用户也希望加入系统,共享其资源。这些新用户系统往往与系统中现有硬件和软件不同。

(2)硬件性能的提高和价格下降。当扩充一个分布式计算机系统时,人们往往会购买或开发新型的计算机系统,而不是采用系统中已有的设备类型,保持系统的同构性。因此,异构性是不可避免的。

(3)把不同的硬件和软件系统结合在一起,计算机系统可以得到较高的性价比。在这样的系统中,如果配置有一些专门为某种操作设计的具有特殊系统结构的处理器,则普通工作站也可以共享这些功能。

然而,由于软、硬件系统上的差异,与同构型系统相比,建立一个能够在各机器之间提供资源共享的异构型分布式计算机系统要困难得多。除了一般分布式系统要解决的问题之外,还有一些异构型系统特定的问题,如通信、命名、数据表示、访问权限验证和远程执行等。

2.5.2 不兼容问题

对于异构型分布式系统的资源共享可能出现以下4种类型的异构。

1.硬件异构

通过网络互连的机器在硬件上主要有以下三个差异。

(1)机器的指令集可能不同,即一种机器的可执行代码程序不能在另一种不兼容的机器上运行。

(2)各种机器的数据表示形式可能互不兼容。例如,DUAL机使用的M68000 CPU的字长是16位,并且可按字节单位寻址。如果一个字的高字节的地址是I,低字节的地址为I+1;而IBM PC系列使用的是Intel 8086或80286 CPU,也是按字节寻址,但一个字里两个字节的顺序与M68000刚好相反。因此,IBM PC上运行的程序不能对DUAL机上的程序所产生的数据进行直接操作。

(3)尽管机器的类型可能相同,但其硬件配置也可以互不兼容。例如,某台机器可能比其他机器具有更多的内存或外设,而另一台则可能多配置了某种外设等。

2.操作系统异构

各操作系统提供的系统调用功能和形式各不统一,主要表现在以下三个方面。

(1)不同系统采用不同的文件命名方式。例如,在UNIX系统中,文件系统是层次型的,路径名的每个元素由除了字符“/”外的任意ASCII字符组成,“/”用来分隔路径名中的各个元素。MS-DOS的文件系统虽然也是层次型的,但路径名的第一个元素是驱动器名,并且文件名的形式是xxxxxxxx.xxx。因此,UNIX程序可以生成和使用任何MS-DOS文件名,反之不成立。如果把这两个系统容纳在一个系统中共享文件,则许多操作将会失败。

(2)文件保护的方法和程度也不相同。例如,UNIX把用户分成三类:文件所有者、同组用户和其他用户。UNIX对文件有保护措施,而MS-DOS则根本无文件保护措施。因此,很难要求一个文件系统在共享不同文件系统的文件时,能够按那个系统的保护方法进行文件保护。

(3)不同文件系统具有不同的文件模式。例如,UNIX只提供了字节流模式,VMS系统则提供多种记录结构文件模式。

3.通信网络异构

异构型分布式计算机系统的每个子系统都是不同的通信子网,分别有自己的拓扑结构、互连接口以及网络协议机制。它们一般通过远程过程调用(RPC)作为进程之间通信的手段,但RPC在具体实现上有很大差别,RPC在底层是通过网络设施的传输协议来实现的。

4.程序设计语言异构

不同的程序设计语言使用不同的方法在文件中存储数据。例如,用Pascal写的程序以十进制字符串的形式在文件中存放整数;而UNIX系统调用的C语言则以二进制形式在文件中存放整型数。因此,在用不同语言编写的程序之间不能直接共享数据文件。

2.5.3 异构型分布式系统的连接机制

分布式系统中各个组成部分之间的协作,以各个节点之间必须进行连接为基础,提供资源共享。连接包含两个部分:在底层,通信机制提供各节点进程通信的手段;在高层,服务接口定义各组成部分间通信的语义。分布式计算机系统的通信机制如图2-13所示,分为用户间通信、进程间通信、设备间的数据发送。

图2-13 分布式计算机系统的通信机制

1.通信机制

在用户层,各种系统一般都在通信网络基础上提供远程过程调用(RPC)作为进程之间通信的手段,对于不同的系统,RPC的设计是不同的。下面介绍它们的区别以及目前的一些解决方法。

(1)数据的表示。各机器和各种程序设计语言间同类型数据的长度及字节顺序、结构型数据的安排不同,使用远程过程调用时,不能正确地传入参数和返回结果。针对这种情况,目前有两种解决方法:

① 定义和使用一种标准的数据表示形式。例如,SUN RPC定义了一种公共数据表示形式,称为外部数据表示(XDR)。当进行远程过程调用时,用户的过程首先把调用参数转换成XDR形式发送目标机器。然后,由被调用方的过程进行解码,转换成对应数据类型在本机上的表示形式。调用结果则按相反方向送回。此种方法实现较简单和统一,但对数据通信时的编码和解码影响了系统的效率。

② 在建立连接(即调用方和被调用方进行初次通信)时,指定一种表示形式。

(2)各个系统网络设施采用不同的传输协议(如UDP、TCP、XNS等)。RPC机制在底层是通过网络设施的传输协议来实现的。一种可行的解决方法是在建立连接时,增加一个机制确定在特定的一对调用双方之间应使用哪一种传输协议。

(3)各种语言的定义和数据类型不完全相同,难以在不同语言之间保持RPC语义。Horus系统的解决方法是:支持多种语言间的RPC,在规格说明中指出不同源语言及其不同机器上数据表示形式的差异,将其与其他接口描述一起交给一个存根过程生成器,然后由该过程生成器为调用双方生成能够处理这些差异的过程。这种通过存根过程生成器的方法已能够解决不同语言语法差异的问题,但要使现存所有程序设计语言在RPC的语义环境中相容还相当困难,存根过程是用美国UC Berkeley UNIX的Socket方式传输接口定义,可采用不同方式实现。图2-14给出分布式系统中的通信与ISO/OSI 7层协议的对应关系。

图2-14 分布式系统中的通信与ISO/OSI 7层协议的对应的关系

2.服务接口

客户机/服务器是分布式系统中的一种广泛使用的资源共享模式,为了使其有效工作,客户机与服务器之间必须定义一个接口。目前有两种定义接口的方法,一种是定义一组非常简单的基本功能作为服务接口,构成所有客户机系统功能的最小公分母,一个客户机系统的远程服务可以要求多个原语来完成。这种方法的缺点是,进行机器间原语调用信息交换时,其通信开销比较大。另一种方法是设计一种网络服务语言,这种语言与具体系统无关,并且允许客户机可以详细描述其想从服务器得到的服务。当客户机要求某种服务时,它就根据所要求的服务生成网络服务语言的程序,然后把程序交给服务器,服务器解释并完成这些程序。这种方法的基础是,必须定义一个能够描述一个异构型分布式系统所需要的和所能提供的全部服务功能的网络命令语言。

2.5.4 数据共享

分布式文件系统是分布式系统数据共享的基本设施。一个异构型分布式文件系统应该提供不同机器的文件共享,使现有应用程序可以通过其局部操作系统的标准接口访问本地文件和远程文件。由于异构性还需解决文件命名、文件组织和文件保护等问题,所以对访问不同标准操作系统支撑下的远程文件还需要做特别处理。下面分别讨论文件命名和文件组织、文件保护、文件模式。

1.文件命名和文件组织

分布式系统主要有三种命名方法:

(1)用文件所在的机器名加上文件在该机上的路径指出远程文件名。优点是,易于容纳异构型系统,使分布式系统可以不必涉及每台机器上的文件系统的结构和文件名的形式,而是把要访问的文件名发到提供此文件的机器上,由该机器的文件系统解释路径名。此方法实现简单,但未提供位置透明性和位置无关性。

(2)允许用户把其他机器上的子目录安装到本机器文件树的某个子目录上。可以按照访问本地文件的方式访问远程文件。这种方法具有较好的网络透明性和位置透明性,但要求异构型分布式文件系统扩充不同的文件系统,提供一种统一的语义在不同文件系统的文件名之间进行转换,其实现方法较为复杂。Sun NFS目前能在UNIX、VMS和MS-DOS文件系统之间共享文件。

(3)全系统使用一个单一的全局的名字空间具有较高的网络透明性,有利于实现全系统范围的资源共享。这种方法实现十分复杂。Locus和Sprite采用了这种方式,但只提供基于UNIX的系统间的文件共享。Andrew可以容纳UNIX和MS-DOS,但使用MS-DOS的机器必须通过一个专门的PC服务器参加到系统中来共享资源。

2.文件保护

分布式文件系统必须防止用户对文件做未授权的访问,访问权限验证机制通常与局部操作系统紧密相关,有的采用访问权限表,有的采用权标(Capability),这种与低层操作系统有关的机制难以容纳异构。目前的方法主要有:

(1)异构型分布式文件系统保存一张访问权限表。每当用户访问远程文件时,由系统通过这张表进行访问权限验证。这种方法实现简单,但要求系统为每个共享文件保存一个访问权限信息。当系统较大时,进行访问权限验证的开销比较大。

(2)利用系统中各机器本地操作系统现有的保护机制。大多数文件系统中都设有一个保护类别“其他用户”,它包含除了文件所有者外的所有其他用户。可以把所有远程访问的用户归入“其他用户”一类。这种方法的优点是,易于容纳异构型文件系统,易于实现,但在文件保护方面存在漏洞。

3.文件模式

在异构型环境中,不同的机器支持不同的文件结构,有的是没有结构的字节流,有的是高度结构化的记录文件。设计合适的文件模式是十分困难的。下面介绍两种方法。Sun NFS的方法是,只提供一种基本的文件类型,即字节流。不同系统之间的文件共享在这种基本类型的基础上进行。Washington大学HFS的方法是,定义一种基本的记录类型和对这种类型的一组操作,在此基础上可以扩充成许多不同的文件模式。HFS在每台机器上实现把远程客户给出的文件操作请求转换成对局部相应类型的文件操作。

2.5.5 处理器共享

分布式计算机系统中的资源共享的另一个方面是处理器共享。工作站用户能够利用系统中空闲的工作站或处理器池中的处理器,提高处理效率。由于异构型分布式计算机系统中的机器硬件和操作系统等的异构性,在异构型系统中进行处理器共享远比同构型系统困难。目前,处理器共享主要有下述两种模式。

1.任务远程执行

在该模式下,应用程序采用远程执行的要求(命令),而不是将程序交给服务器。它根据客户机要求使用局部或共享文件中适合自己系统结构的二进制装入模块和有关数据进行操作,然后把计算结果返回给客户机。

现在,许多系统提供了远程执行的工具,如UNIX的rsh、rcp、rlogin;Washington大学的HCS也提供异构型工作站之间的任务远程执行。

任务远程执行模式的优点是实现相对简单,易于在异构型机器之间共享处理器,比动态进程迁移方法的开销小,比较适合于由工作站和个人计算机组成的分布式系统。但是,这种方法共享的程度比较低,需要应用程序显式指出需要远程执行的命令。另外,计算机服务器必须事先将客户机可能要求执行的命令进行编译、连接好,并存放在局部或共享文件系统中,否则将无法提供服务。

2.动态进程迁移

动态进程迁移是指通过系统中各处理机之间动态地迁移正在进行的进程,达到全系统范围内处理机的负载平衡。此种模式比远程执行具有更好的透明性,并能更有效地利用全系统处理机资源,但实现较复杂。目前,同构型系统中的进程迁移技术已趋于成熟,而异构型系统中的进程迁移难度较大,研究也刚刚开始。动态进程迁移主要有下述两种方法。

(1)源代码解释执行。此方法与任务远程执行不同,交给远程计算机服务器的不是命令,而是程序。异构型系统中的处理器不同,不能简单地把一台机器上的程序动态地移到另一台机器上执行。考虑到高级程序设计语言通常与具体物理机器无关,源代码解释执行法是在每台机器上配置一个高级语言的解释器,由解释器直接解释执行高级语言程序的源代码。当需要迁移时,把这个进程的源代码连同解释器保存的状态和运行现场数据一起移到目的机器上执行。但是,为每种高级语言都配备一个解释器及有关迁移机制,会导致开销太大,影响系统的效率。一种改进的方法是,把高级语言编译成一种与机器无关的中间语言,由每台机器上的解释器加以解释执行,并在此基础上实现进程迁移。

(2)重编译。这种方法是将高级语言程序编译成二进制装入模块执行。迁移时,系统把该进程的进程状态和数据以高级语言过程的形式嵌入该进程源代码迁移点的位置,然后在目的机器上编译和执行这个程序。此方法的优点是,把不同机器进程状态和数据表示之间的差异转换成高级语言的过程表示,通过高级语言的编译程序来解决。另外,由于在这种方式下执行的是编译生成的指令,所以效率比解释执行高。