官术网_书友最值得收藏!

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)重編譯。這種方法是將高級語言程序編譯成二進制裝入模塊執行。遷移時,系統把該進程的進程狀態和數據以高級語言過程的形式嵌入該進程源代碼遷移點的位置,然后在目的機器上編譯和執行這個程序。此方法的優點是,把不同機器進程狀態和數據表示之間的差異轉換成高級語言的過程表示,通過高級語言的編譯程序來解決。另外,由于在這種方式下執行的是編譯生成的指令,所以效率比解釋執行高。

主站蜘蛛池模板: 黄梅县| 兴化市| 金山区| 英超| 太康县| 宁津县| 潮州市| 婺源县| 滁州市| 茶陵县| 阿鲁科尔沁旗| 大安市| 中超| 衡阳市| 阿克陶县| 聂拉木县| 崇州市| 广昌县| 台中市| 五河县| 西青区| 子长县| 清徐县| 中江县| 无锡市| 安乡县| 额敏县| 陈巴尔虎旗| 两当县| 安义县| 井研县| 岳普湖县| 昌黎县| 闽侯县| 宣城市| 霍山县| 石阡县| 普陀区| 呈贡县| 棋牌| 呼和浩特市|