1. 程式人生 > >現代作業系統之多處理機系統(下)

現代作業系統之多處理機系統(下)

虛擬化

虛擬化技術唯一一個執行在核心態上的軟體上管理程式,它的程式碼比一個完整的作業系統程式碼量少兩個數量級,也就意味著軟體的漏洞數少兩個數量級, 虛擬機器的另一個好粗好在於檢查點和虛擬機器的前一(例如多伺服器間遷移以達到負載平衡)比在一個普通的作業系統中國年進行程序遷移更加容易。 虛擬機器的另一個用途是執行那些不再被支援或不能在當前硬體上的工作的作業系統中遺留的應用程式。

虛擬化的條件

有兩種虛擬化的方法:
  1. 管理程式,又稱為I型管理程式(或者虛擬機器監控器)。它是唯一執行在核心態的程式,其工作是支援真是硬體的多個副本(虛擬機器),與普通作業系統鎖支援的程序類似
  2. II型管理程式,s執行在windows或Linux平臺上能夠解釋機器指令集的使用者程式。
執行在管理程式上的系統稱為客戶作業系統,在II型上稱為宿主作業系統 簡單的說,每個有核心態和使用者態的處理器都有一組只能在核心態執行的指令集合(敏感指令)。還有一些指令如果在使用者態執行會引起陷入(特權指令) 當且僅當敏感指令是特權指令的自己時,機器彩色可虛擬化的

I型管理程式

虛擬機器在使用者態以使用者程序的身份執行,因此,它不允許執行敏感指令。虛擬機器內執行這一個客戶端作業系統,該作業系統認為自己是執行在核心態的,但實際上它是執行在使用者態但。我們將這種狀態稱為虛擬核心態。 當作業系統(認為自己執行在核心態)執行一條敏感指令(只能在核心態執行),在不支援VT技術的處理器傻姑娘,指令失效並且作業系統通常會崩潰。 在支援VT技術的處理器傻姑娘,當客戶作業系統執行一條敏感指令時,發生到核心的陷入。管理程式分析指令,檢視它是來自虛擬機器中的系統操作還是虛擬機器中的使用者程式。前者管理程式排程將要執行指令,後者會進行模擬使用者態的敏感指令陷入真實硬體的行為。

II型管理程式

在VMWare中,不含任何敏感指令基本塊的執行與它在裸機上的執行完全相同——因為就是執行在邏輯。通過將敏感指令翻譯稱VMWARE的過程呼叫,這種技術稱為二進位制翻譯。 在現代硬體上,陷入的代價是非常昂貴的。

準虛擬化

執行I型和II型管理程式之上的都是沒有修改過的客戶作業系統,但這兩類管理程式都很難或惡合理的效能。另一個逐漸開始流行的方法是更改客戶作業系統的雲程式碼,從而掠過敏感指令的執行,轉而呼叫管理程式呼叫。事實上,對客戶作業系統來說就像是使用者程式呼叫作業系統(管理程式)系統呼叫一樣。當採用這種方法時,管理程式必須定義由過程呼叫集合組成的介面以供客戶作業系統使用。這個過程呼叫集合實際上形成了API,儘管這個介面是供客戶作業系統使用,而不是應用程式。 通過這種方式我們就已經把管理程式變成了一個微核心,一些或全部敏感指令有意移除的客戶作業系統稱為準虛擬化的。 而在現實中,只有一個程式在硬體傻姑娘執行。它的一部分用來解釋陷入的敏感指令。 I型管理程式和微核心之間的界限越來越模糊,當管理程式獲得越來越多的功能和例程時,這個界限變得月假不清晰。 當核心需要執行一些敏感操作換轉而呼叫特殊的例程。這些圖書的例程被稱作VMI(虛擬機器介面),形成的低層與硬體或管理程式進行互動。這些歷程被設計的通用化。

記憶體的虛擬化

幾乎全部的現代作業系統都支援虛擬記憶體,級從虛擬地址空間到實體地址空間的頁面對映。虛擬化技術使得記憶體管理更加複雜。 一種解決方法是管理程式必須為每一臺虛擬機器建立影子頁表,用以實現該虛擬機器使用的虛擬頁面到管理程式分配給它的物理頁面之間的對映。更糟糕的是,每次可數作業系統改變它的頁表,管理程式必須相應得改變其影子頁表。 VT技術,硬體首先把虛擬頁面對映成客戶作業系統鎖認為的物理頁面,然後再把它(硬體仍然認為它是虛擬頁面)對映到實體地址空間,這樣做不會引起陷入。 在準虛擬化的擦奧做系統中,情況是不同的。這時,準虛擬化的客戶作業系統直到當它結束的時候需要更改程序頁表,此時它需要通知管理程式。所以,它首先徹底改變頁表,然後呼叫管理程式例程來通知管理程式使用新的頁表


IO裝置的虛擬化

常用的解決方法是管理程式在物理磁碟上為每一個虛擬機器建立一個檔案或區域作為它的物理磁碟。由於客戶作業系統試圖控制真正的物理磁碟,他會把需要訪問的磁碟塊數轉換成相對於檔案或區域的偏移量,從而完成IO操作。 一種處理IO的方法是讓其中一個虛擬機器執行標準的作業系統,並把其他虛擬機器的IO都反射給它執行。 在IO裝置虛擬化方面,II型管理程式相對於I型的優勢在於:宿主作業系統包含了所有連線到計算機上的多有怪異的IO裝置的驅動程式。

虛擬工具

已經包裝好的虛擬機器通常叫做虛擬工具。

多核處理機上的虛擬機器

虛擬機器之間是可以共享記憶體的。所需要完成的工作就是將物理頁面對映到多個虛擬機器的地址空間當中。如果能夠做到的話,一臺計算機就成為了虛擬的多處理機。

授權問題


分散式系統

分散式系統與多計算機類似,每個節點都有自己的私有儲存器,整個系統中都沒有共享的物理儲存器。但是,分散式系統與多計算機相比,耦合更加鬆散。 分散式系統中每個節點都是一臺完整的計算機,帶有全部的外部裝置。 一個分散式系統的節點可以執行不同的作業系統,每個節點有自己的檔案系統,並且處於不同的管理之下。 分散式系統中國年計算機鬆散耦合既是優點也是缺點。 分散式系統新增在其低層網路上的是一些通用範性,它們提供了一種統一的方法來觀察整個系統,其思想是提供某些東西來統一整個系統。 分散式系統面對不同硬體和作業系統的統一途徑是提供一箇中間件,從而允許散步的機器上的程序用一致的方式互操作。 在某種意義上,中介軟體像是分散式系統的作業系統。


網路硬體

網路主要有兩種——覆蓋一棟建築物的LAN(區域網)和更大範圍的WAN(廣域網) LAN最重要的型別是乙太網


乙太網

乙太網有其最大電纜長度限制,以及可連線的最多的計算機臺數限制。要想超過其中一個限制,就要在一座大建築物或校園中連線多個乙太網,然後用一種成為橋接器的裝置把這些意外網連線起來。 為了避免碰撞問題,現代乙太網使用交換機。如果能人後較大的交換機成本,可以使每臺機器都擁有自己的埠,從而消除所有的碰撞。作為一種妥協方案,每個埠上連線少量計算機還是可能的。

因特網

Internet包括了兩類計算機,主機和路由器。主機有PC機,路由器是專用的交換計算機,它在許多進線中的一條線上接收進來的包,並在許多個出口線中的一條線傻姑娘按照其路徑傳送包。 當一個包到達某個路由器使,該路由器抽取目的地地址並在一個表格中國年進行查詢,以找出用哪根出口線傳送該包以及傳送哪個路由器。路由表是高度動態的,並且隨著路由器和鏈路的所懷,恢復以及通訊條件的變壞在連續不斷的更新。

網路服務和協議


網路服務

計算機網路為使用網路的主機和程序提供服務。面向連線的服務是對電話系統的一種模仿,而無連線服務則是對郵政系統的一種模仿。 每種服務可以用服務質量表徵。有些服務就其從來不丟失資料而言是hike 考的,但是減緩傳送速度。 可靠的,面向連線的服務有兩種變種——訊息序列和位元組流 不可靠的(意味著沒有確認)無連線服務,常常稱作是資料報服務。 此外確認資料報服務提供給這些應用使用。

網路協議

用於特定計算機通訊的這些規則的集合稱為協議。 所有的現代網路都使用所謂的協議棧把不同的協議一層層疊加起來。每一層解決不同的問題。 大多數分散式系統都使用Internet 作為基礎,因為這些系統使用的關鍵協議是IP和TCP協議 IP協議是資料報協議,傳送者可以向網路上發出長達64kb的資料報並且網它們到達。 TCP使用IO來提供面向連線的資料流。為了使用TCP,程序需要首先與一個遠端程序建立連線。被i 請求的程序需要銅鼓哦機器的IO地址和機器的埠號確定。而對進入的連線感興趣的程序堅挺該埠。 DNS作為一個數據庫把主機的ASCII名稱名稱對映為對應的IP地址

基於文件的中介軟體

P334


基於檔案系統的中介軟體

分散式系統採用一個檔案系統模型意味著只存在一個全域性檔案系統,全世界的使用者都能夠讀寫他們各自具有授權的檔案。通過一個程序將資料寫入檔案而另一個程序把資料讀出的辦法可以實現通訊

傳輸模式

分為上傳下載和遠端訪問模式

目錄層次

命名透明性

位置透明性——路徑嗎沒有隱含檔案所在位置的資訊 如果在一個系統中檔案一棟時檔案的名稱不會隨之改變,則成為具有位置獨立性。

檔案共享的語義

正確實現共享檔案的語義是一件麻煩的使其,並不存在一個優雅和有效的解決方案。

基於物件的中介軟體

物件是變數的集合,這些變數與一套成為方法的訪問過程繫結在一起。程序不允許直接訪問這些變數,相反,要求它們呼叫方法。 每個CORBA物件是由叫做IDL的語言中國年的介面定義鎖定義的,說明該物件提供什麼方法,以及每個方法期待使用什麼型別的引數。 ORB的功能是將客戶機和伺服器程式碼中國年的所有低層次的分佈和通訊細節都隱藏起來。 對於CORBA而言,一個嚴重的問題是每個CORBA物件只存在一個伺服器傻姑娘,這意味著那些在世界各地客戶機上被大量使用的物件會有很差的效能。在實踐中,CORBA只在小規模系統中才能有效工作。

基於協作的中介軟體

Linda 釋出訂閱系統 Jini

網格

所謂網格,是一個大的,地理上分散的,通常是由私有網路或因特網連線起來的億購機器的集合,想使用者提供一系列服務。所有的管理域都會執行中介軟體的一個公共的中介軟體層以便使用者和程式可以通過方便一致的方式訪問所有資源