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

虛擬化

虛擬化技術唯一一個運行在內核態上的軟件上管理程序,它的代碼比一個完整的操作系統代碼量少兩個數量級,也就意味着軟件的漏洞數少兩個數量級,

虛擬機的另一個好粗好在於檢查點和虛擬機的前一(例如多服務器間遷移以達到負載平衡)比在一個普通的操作系統中國年進行進程遷移更加容易。

虛擬機的另一個用途是運行那些不再被支持或不能在當前硬件上的工作的操作系統中遺留的應用程序。


虛擬化的條件

有兩種虛擬化的方法:
  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

網格

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章