Download - 作業系統
![Page 1: 作業系統](https://reader036.vdocuments.net/reader036/viewer/2022081603/56812ae8550346895d8ece49/html5/thumbnails/1.jpg)
1
作業系統
第二十章 分散式系統實例
![Page 2: 作業系統](https://reader036.vdocuments.net/reader036/viewer/2022081603/56812ae8550346895d8ece49/html5/thumbnails/2.jpg)
2中正資工中正資工 即時系統實驗室即時系統實驗室
第二十章 分散式系統實例
Java RMI RMI 架構 RMI 伺服端程式設計 RMI 客戶端程式設計
CORBA
網路檔案系統 摘要
![Page 3: 作業系統](https://reader036.vdocuments.net/reader036/viewer/2022081603/56812ae8550346895d8ece49/html5/thumbnails/3.jpg)
3中正資工中正資工 即時系統實驗室即時系統實驗室
Java RMI
Java 在 JDK1.1 之後提供了 RMI 的機制,將複雜的資料結構傳遞問題交由 RMI 機制處理。
與 RPC 的基本概念相同,透過網路執行遠端伺服器上的程式,並取回執行結果。RMI 強調物件導向,可以將一個物件序列化,也就是將物件轉換成一連串的位元組而當成參數傳遞。 RMI 程式必須用 Java 撰寫,較缺乏彈性。
![Page 4: 作業系統](https://reader036.vdocuments.net/reader036/viewer/2022081603/56812ae8550346895d8ece49/html5/thumbnails/4.jpg)
4中正資工中正資工 即時系統實驗室即時系統實驗室
RMI 架構RMI 採用三層式架構。
stub/skeleton 層 遠端參考層 傳輸層
傳輸層
skeletonstub
應用程式
RMI 架構
客戶端 伺服端
遠端參考層
![Page 5: 作業系統](https://reader036.vdocuments.net/reader036/viewer/2022081603/56812ae8550346895d8ece49/html5/thumbnails/5.jpg)
5中正資工中正資工 即時系統實驗室即時系統實驗室
RMI 呼叫遠程物件流程圖以客戶端呼叫遠端物件的 Check_out(object, object) 函式為例。
客戶端 伺服端遠程物件
Check_out(object N , object M) {// 相關程式碼return val;
}
stub
skelketon
布林回傳值
A 、 B 參數、 Check_out() 名稱及相關資訊
整碼 反整碼
整碼 反整碼
flag = Server.Check_out(A , B)
![Page 6: 作業系統](https://reader036.vdocuments.net/reader036/viewer/2022081603/56812ae8550346895d8ece49/html5/thumbnails/6.jpg)
6中正資工中正資工 即時系統實驗室即時系統實驗室
RMI 伺服端程式設計步驟一:定義遠端物件的服務介面,透過這個介面,客戶端才能呼叫遠端物件的函式。
必須繼承自 java.rmi.Remote 介面。 必須定義遠端物件的方法,並且宣告會發出 RemoteException 的例外事件,用來截取可能發生的例外事件。以 javac 指令將服務介面編譯成位元組碼。
![Page 7: 作業系統](https://reader036.vdocuments.net/reader036/viewer/2022081603/56812ae8550346895d8ece49/html5/thumbnails/7.jpg)
7中正資工中正資工 即時系統實驗室即時系統實驗室
RMI 伺服端程式設計 ( 續 )
步驟二:實作遠端介面,也就是撰寫遠端物件函式的程式碼。
必須宣告欲實作的介面。必須繼承自 UnicastRemoteObject 類別。必須宣告 RemoteException 例外事件。將遠端物件編譯成位元組碼。
步驟三:以 rmic 指令產生 stub 和 skeleton 程式。 步驟四:將 RMI 註冊處啟動,並啟動遠端物件向其註冊。步驟五:啟動伺服器程式。
![Page 8: 作業系統](https://reader036.vdocuments.net/reader036/viewer/2022081603/56812ae8550346895d8ece49/html5/thumbnails/8.jpg)
8中正資工中正資工 即時系統實驗室即時系統實驗室
RMI 客戶端程式設計步驟一:呼叫 System.setSecurityManager() 作安全上的限制,避免客戶端的環境被惡意破壞。步驟二:向 RMI 註冊處查尋物件並轉型成該物件所實作的介面名稱。 步驟三:呼叫遠端物件的函式。
![Page 9: 作業系統](https://reader036.vdocuments.net/reader036/viewer/2022081603/56812ae8550346895d8ece49/html5/thumbnails/9.jpg)
9中正資工中正資工 即時系統實驗室即時系統實驗室
第二十章 分散式系統實例
Java RMI
CORBA CORBA 架構 ORB 簡介 物件服務
網路檔案系統 摘要
![Page 10: 作業系統](https://reader036.vdocuments.net/reader036/viewer/2022081603/56812ae8550346895d8ece49/html5/thumbnails/10.jpg)
10中正資工中正資工 即時系統實驗室即時系統實驗室
CORBA
CORBA 是 OMG ( Object Management Group )組織所提出的物件導向分散式工作環境標準。
基於物件導向的觀念與使用,加強了軟體的可攜性、可重用性、以及可交互運作性。許多廠商推出各種符合 CORBA 標準的產品,可以用來輕易地發展分散式程式。
![Page 11: 作業系統](https://reader036.vdocuments.net/reader036/viewer/2022081603/56812ae8550346895d8ece49/html5/thumbnails/11.jpg)
11中正資工中正資工 即時系統實驗室即時系統實驗室
CORBA 架構CORBA 的基本定義裡,介面用來定義物件的型態;伺服端為一個或多個介面的物件實作;客戶端可以透過 ORB 呼叫伺服端物件所提供的函式。 CORBA 的架構中包含
ORB 介面 介面定義語言 客戶端 IDL stubs 靜態 IDL skeletons 動態請求介面 介面保存庫 動態 skeleton 介面 實作保存庫 物件調適器
![Page 12: 作業系統](https://reader036.vdocuments.net/reader036/viewer/2022081603/56812ae8550346895d8ece49/html5/thumbnails/12.jpg)
12中正資工中正資工 即時系統實驗室即時系統實驗室
CORBA 架構示意圖
客戶端 伺服端物件實作
動態請求介面
DII
物件調適器
ORB 核心( IIOP )
實作保存庫
動態skeleton
請求 , DSI
介面保存庫
靜態IDL
skeleton
靜態 IDL stub
ORB 介面
![Page 13: 作業系統](https://reader036.vdocuments.net/reader036/viewer/2022081603/56812ae8550346895d8ece49/html5/thumbnails/13.jpg)
13中正資工中正資工 即時系統實驗室即時系統實驗室
ORB 簡介ORB 可以視為一種物件匯流排,讓客戶端的應用程式傳送要求給本地端或遠端的物件,並且接收執行後所傳回的結果。
客戶端不需要知道應用程式與這些物件之間的溝通協調方式。讓物件可以在執行期間才尋找所要呼叫的物件,並且呼叫物件提供的服務。 具有能靜態與動態地呼叫遠端物件、高階程式語言互通性、動態查詢系統資訊、本地端/遠端的通透性 、內建安全機制交易與程式擴充性高等優點。
![Page 14: 作業系統](https://reader036.vdocuments.net/reader036/viewer/2022081603/56812ae8550346895d8ece49/html5/thumbnails/14.jpg)
14中正資工中正資工 即時系統實驗室即時系統實驗室
ORB 架構示意圖 C C++ smalltalk Ada COBOL Java
IDL IDLIDL IDL IDL IDL
客戶端 stubs 伺服端 skeletons
CORBA IIOP ORB
C C++ smalltalk Ada COBOL Java
![Page 15: 作業系統](https://reader036.vdocuments.net/reader036/viewer/2022081603/56812ae8550346895d8ece49/html5/thumbnails/15.jpg)
15中正資工中正資工 即時系統實驗室即時系統實驗室
物件服務OMG 於 1995 年提出 COSS 規格,定義了以下的物件服務支援物件的使用與實作。
名稱服務 並行控制服務 事件服務 永久性物件服務 生命週期服務 外部服務 交易服務
![Page 16: 作業系統](https://reader036.vdocuments.net/reader036/viewer/2022081603/56812ae8550346895d8ece49/html5/thumbnails/16.jpg)
16中正資工中正資工 即時系統實驗室即時系統實驗室
名稱服務 名稱服務提供了將名稱連結到一個物件的能力,提供一個標準化介面,讓客戶端可以依照物件名稱而找到該物件的位置。 目的都是提供客戶端方便快速地連接一個伺服端物件程式。 ORB 仰賴名稱服務機制將名稱對應到物件,並以這個物件找到其物件實作所在的位置。 可以提供非物件導向設計的客戶端透過 ORB 要求一個物件實作。
![Page 17: 作業系統](https://reader036.vdocuments.net/reader036/viewer/2022081603/56812ae8550346895d8ece49/html5/thumbnails/17.jpg)
17中正資工中正資工 即時系統實驗室即時系統實驗室
名稱服務機制的流程
名稱伺服器 < name1 , obj_ref1>
< name2 , obj_ref2>
< name3 , obj_ref3>…
客戶端
2. resolve(name)
3. 回應物件位置
4. 利用物件參考找到物件實作
1. bind(name , obj_reference)
物件實作
![Page 18: 作業系統](https://reader036.vdocuments.net/reader036/viewer/2022081603/56812ae8550346895d8ece49/html5/thumbnails/18.jpg)
18中正資工中正資工 即時系統實驗室即時系統實驗室
第二十章 分散式系統實例
Java RMI
CORBA
網路檔案系統 網路檔案系統簡介網路檔案系統實作 網路檔案系統協定
摘要
![Page 19: 作業系統](https://reader036.vdocuments.net/reader036/viewer/2022081603/56812ae8550346895d8ece49/html5/thumbnails/19.jpg)
19中正資工中正資工 即時系統實驗室即時系統實驗室
網路檔案系統簡介網路檔案系統是一個分散式檔案系統。
可以讓執行在 LAN 或 WAN 環境下的電腦共享一個檔案系統。網路檔案系統伺服器可以分享一個或多個目錄給客戶端存取,被分享的目錄會記錄在 /ext/exports 的檔案中。 客戶端使用網路檔案系統伺服器提供的目錄及檔案前,必須先掛載這些目錄,之後這些目錄將變成客戶端目錄結構的一部分。可以節省下許多的硬體花費。
![Page 20: 作業系統](https://reader036.vdocuments.net/reader036/viewer/2022081603/56812ae8550346895d8ece49/html5/thumbnails/20.jpg)
20中正資工中正資工 即時系統實驗室即時系統實驗室
網路檔案系統簡介 ( 續 )
網路檔案系統具備存取通透性、地點通透性、錯誤通透性、效能通透性與遷移通透性等優點。但是有不具備複製通透性、不具備同步通透性、擴充性不佳等缺點。
![Page 21: 作業系統](https://reader036.vdocuments.net/reader036/viewer/2022081603/56812ae8550346895d8ece49/html5/thumbnails/21.jpg)
21中正資工中正資工 即時系統實驗室即時系統實驗室
掛載伺服器的目錄
/root
/nfs1
/dir1file1.txt
/root
/nfs2
/dir2file2.txt
/root
/usr
/Bill/Jack
掛載掛載
伺服器 B伺服器 A 客戶端
![Page 22: 作業系統](https://reader036.vdocuments.net/reader036/viewer/2022081603/56812ae8550346895d8ece49/html5/thumbnails/22.jpg)
22中正資工中正資工 即時系統實驗室即時系統實驗室
網路檔案系統實作網路檔案系統採用多層級的架構來實作。
客戶端或伺服端的模組會載入到 UNIX 核心中執行。 客戶端是以使用者層級的行程來使用伺服器檔案。UNIX 檔案系統介面主要負責檔案的實際開啟、讀取、寫入、和關閉的動作。 虛擬檔案系統架於檔案系統之上,作用是將本地端檔案的處理與遠端檔案的處理分開,並且能以下層不同的檔案系統進行本地端檔案處理的操作。
![Page 23: 作業系統](https://reader036.vdocuments.net/reader036/viewer/2022081603/56812ae8550346895d8ece49/html5/thumbnails/23.jpg)
23中正資工中正資工 即時系統實驗室即時系統實驗室
網路檔案系統實作 ( 續 )
網路檔案系統包含了以下幾個機制。網路檔案系統模組整合到系統核心 存取控制及認證機制 路徑名稱轉譯 伺服端快取 客戶端快取
![Page 24: 作業系統](https://reader036.vdocuments.net/reader036/viewer/2022081603/56812ae8550346895d8ece49/html5/thumbnails/24.jpg)
24中正資工中正資工 即時系統實驗室即時系統實驗室
網路檔案系統軟體架構
使用者行程
系統呼叫
UNIX 核心虛擬檔案系統( VFS )
本地端 遠端
UNIX檔案系統
NFS客戶端
磁碟
UNIX 核心虛擬檔案系統( VFS )
NFS伺服端
UNIX檔案系統
磁碟
網路NFS 協定
客戶端 伺服端
![Page 25: 作業系統](https://reader036.vdocuments.net/reader036/viewer/2022081603/56812ae8550346895d8ece49/html5/thumbnails/25.jpg)
25中正資工中正資工 即時系統實驗室即時系統實驗室
網路檔案系統協定網路檔案系統的客戶端和伺服端模組溝通的機制都是使用遠端程序呼叫。
在客戶端已經掛載遠端目錄後才能使用。提供對目錄作建立、刪除等操作,開啟、讀取和寫入檔案與存取檔案屬性等功能。使用 XDR 的編碼架構,而可以在不同平台間傳送 RPC 的訊息。 採用 UDP 作為傳輸層的協定,並封裝在 IP 的封包內,客戶端與伺服端不需要一直維持連線狀態。使用 TCP 能夠保證傳輸訊息的正確性,但是客戶端與伺服端會一直保持在連線的狀態。
![Page 26: 作業系統](https://reader036.vdocuments.net/reader036/viewer/2022081603/56812ae8550346895d8ece49/html5/thumbnails/26.jpg)
26中正資工中正資工 即時系統實驗室即時系統實驗室
網路檔案系統協定架構
NFS
XDR
RPC
UDP/TCP
IP
![Page 27: 作業系統](https://reader036.vdocuments.net/reader036/viewer/2022081603/56812ae8550346895d8ece49/html5/thumbnails/27.jpg)
27中正資工中正資工 即時系統實驗室即時系統實驗室
第二十章 分散式系統實例
Java RMI
CORBA
網路檔案系統 摘要
![Page 28: 作業系統](https://reader036.vdocuments.net/reader036/viewer/2022081603/56812ae8550346895d8ece49/html5/thumbnails/28.jpg)
28中正資工中正資工 即時系統實驗室即時系統實驗室
摘要Java RMI 可以透過網路去執行遠端伺服器上的程式,並取回執行結果。
與 RPC 的基本觀念是一樣,但是更強調物件導向的特性。可以將一個物件序列化而當成參數傳遞。 程式必須使用 Java 撰寫,比較缺乏彈性。
CORBA 是功能更強大、更複雜的 RPC 機制。可以在執行期間才尋找要呼叫的物件,並且使用物件所提供的服務。 名稱服務扮演一個相當重要的角色, 可以利用名稱對應到物件位置而找到物件實作。
![Page 29: 作業系統](https://reader036.vdocuments.net/reader036/viewer/2022081603/56812ae8550346895d8ece49/html5/thumbnails/29.jpg)
29中正資工中正資工 即時系統實驗室即時系統實驗室
摘要 ( 續 )
網路檔案系統可以讓執行在 LAN 或 WAN 環境下的電腦共享檔案系統。
網路檔案系統伺服器可以分享一個或多個目錄給客戶端。客戶端利用掛載的方式使用遠端的檔案系統。 包含在核心執行、使用快取機制、採用不具狀態服務、和擁有認證機制等特性。有不具備檔案複製通透性、無法處理同步問題、和擴充性不佳等缺點。