[OS] 虛擬化

1. 抽象與接口

管理計算機(jī)系統(tǒng)復(fù)雜性的關(guān)鍵是通過一些定義明確的接口灵汪,把計算機(jī)系統(tǒng)劃分成不同的抽象層次杜秸。抽象層次允許忽略或簡化系統(tǒng)設(shè)計的底層實現(xiàn)細(xì)節(jié),從而簡化高層組件的設(shè)計么介。

明確的接口可以分解計算機(jī)的設(shè)計任務(wù)罪治,使得硬件和軟件設(shè)計能夠或多或少的獨立開展工作丽声。指令集就是這樣一個接口。例如觉义,Intel和AMD的設(shè)計工程師開發(fā)實現(xiàn)IA-32指令集(x86)的微處理器雁社,同時微軟的軟件工程師開發(fā)把高級語言映射到該指令集的編譯器。只要這兩個設(shè)計小組都能夠遵從該指令集的規(guī)范定義晒骇,編譯好的軟件就可以在由IA-32處理器組成的機(jī)器上正確執(zhí)行霉撵。操作系統(tǒng)接口被定義為一組函數(shù)調(diào)用的集合,是計算機(jī)系統(tǒng)中另一個重要的標(biāo)準(zhǔn)化接口厉碟。

2. 虛擬化

當(dāng)一個系統(tǒng)(或子系統(tǒng))喊巍,例如處理器,存儲器或IO設(shè)備被虛擬化箍鼓,它的接口和所有通過接口可見的資源都被映射到實現(xiàn)它的真實系統(tǒng)的接口和資源上崭参。從而,真實系統(tǒng)可以表現(xiàn)為一個不同的虛擬系統(tǒng)或多重虛擬系統(tǒng)的集合款咖。

形式上何暮,虛擬化是構(gòu)建一個將虛擬的客戶系統(tǒng)映射到真實的主機(jī)系統(tǒng)上的同態(tài)奄喂。這個同態(tài)將客戶機(jī)的狀態(tài)映射為主機(jī)的狀態(tài),對于修改客戶機(jī)狀態(tài)的操作序列海洼,在主機(jī)上也有相應(yīng)的操作序列跨新,在主機(jī)上執(zhí)行對主機(jī)狀態(tài)等價的修改。

雖然這樣的同態(tài)可以同時用來描述虛擬化和抽象坏逢,但我們要加以區(qū)分:虛擬化不同于抽象域帐,虛擬化不需要隱藏細(xì)節(jié);虛擬系統(tǒng)的細(xì)節(jié)通常與底層真是系統(tǒng)的細(xì)節(jié)相同是整。

3. 虛擬機(jī)

虛擬機(jī)(VM)通過在真實機(jī)器上增加一層軟件來支持所需實現(xiàn)的虛擬機(jī)體系結(jié)構(gòu)肖揣。從發(fā)展趨勢上說,對虛擬機(jī)的討論也就是從廣義上對計算機(jī)體系結(jié)構(gòu)的討論浮入。虛擬機(jī)通常是連接體系結(jié)構(gòu)邊界的紐帶龙优,構(gòu)建虛擬機(jī)要考慮的一個主要問題是虛擬機(jī)在實現(xiàn)體系結(jié)構(gòu)接口時的保真性。

形式上事秀,體系結(jié)構(gòu)通常由接口規(guī)范和接口操縱的資源的邏輯行為來描述彤断。術(shù)語“實現(xiàn)”則用于描述具體的體系結(jié)構(gòu)。每種體系結(jié)構(gòu)都可以有多種實現(xiàn)易迹,每種實現(xiàn)都可以有不同的特征宰衙,如高性能和低功耗的實現(xiàn)。

指令集體系結(jié)構(gòu)(instruction set architecture赴蝇,ISA)菩浙,是軟件和硬件的邊界,有兩個部分在定義虛擬機(jī)時是很重要的句伶。第一部分是指令集體系結(jié)構(gòu)中應(yīng)用程序可見的部分劲蜻,成為用戶指令集(user ISA)。第二部分是只有像操作系統(tǒng)這樣的超級用戶軟件才能看到的部分考余,負(fù)責(zé)管理硬件資源先嬉,這部分稱為系統(tǒng)指令集(system ISA)。

指令集以外接口的例子楚堤,應(yīng)用二進(jìn)制接口(ABI)疫蔓,應(yīng)用程序接口(API)。
ABI為程序提供了訪問硬件資源和使用系統(tǒng)服務(wù)的能力身冬,包括兩個主要組件衅胀。第一個組件是所有用戶指令的集合,第二個組件是系統(tǒng)調(diào)用接口酥筝。ABI中不包括系統(tǒng)指令滚躯,所有應(yīng)用程序通過系統(tǒng)調(diào)用接口調(diào)用操作系統(tǒng),使操作系統(tǒng)可以為用戶程序執(zhí)行一些功能。編譯到特定ABI的程序二進(jìn)制代碼不需要修改就可以在帶相同指令集的操作系統(tǒng)的機(jī)器上運行掸掏。
API通常用高級語言(High-level Language: HLL)定義茁影。API的一個關(guān)鍵部分是標(biāo)準(zhǔn)庫,應(yīng)用程序需要通過庫調(diào)用系統(tǒng)中各種可用的服務(wù)丧凤,包括操作系統(tǒng)提供的服務(wù)募闲。API通常在源代碼級上定義,使得被寫入API的應(yīng)用程序很容易(通過再編譯)移植到支持相同API的系統(tǒng)上愿待。

4. 機(jī)器


要理解“虛擬機(jī)”浩螺,首先要討論“機(jī)器”的定義。
從執(zhí)行用戶程序的進(jìn)程角度看呼盆,“機(jī)器”由分配給進(jìn)程的邏輯內(nèi)存地址空間年扩,用戶級寄存器和允許執(zhí)行進(jìn)程代碼的指令組成。機(jī)器的IO部分只能通過操作系統(tǒng)看到访圃,進(jìn)程與IO系統(tǒng)交互唯一的方法是通過操作系統(tǒng)調(diào)用,通常是將系統(tǒng)庫函數(shù)作為進(jìn)程的一部分來執(zhí)行相嵌⊥仁保總的來說,從進(jìn)程的角度來看饭宾,機(jī)器由操作系統(tǒng)與底層的用戶級硬件組合組合而成批糟,ABI提供了進(jìn)程與機(jī)器之間的接口。
從操作系統(tǒng)的角度來看看铆,整個系統(tǒng)由底層機(jī)器支撐徽鼎。一個系統(tǒng)是一個完整的運行環(huán)境,可以同時支持許多可能屬于不同用戶的進(jìn)程弹惦,所有進(jìn)程共享一個文件系統(tǒng)和其他IO資源否淤。進(jìn)程不斷的進(jìn)進(jìn)出出,系統(tǒng)環(huán)境始終存在(偶爾會重啟)棠隐。系統(tǒng)為進(jìn)程分配物理內(nèi)存和IO資源石抡,允許進(jìn)程通過操作系統(tǒng)與分配給他們的資源交互,操作系統(tǒng)是系統(tǒng)的一部分助泽。因此啰扛,從系統(tǒng)的角度看,機(jī)器僅由底層硬件實現(xiàn)嗡贺,指令集提供了系統(tǒng)和機(jī)器之間的接口隐解。

術(shù)語上,我們通常將底層平臺稱為主機(jī)诫睬,將運行在虛擬機(jī)環(huán)境上的軟件稱為客戶機(jī)煞茫,與虛擬機(jī)相對應(yīng)的真實平臺,即虛擬機(jī)要仿真的真實機(jī)器,稱為本地機(jī)溜嗜。

5. 進(jìn)程級和系統(tǒng)級虛擬機(jī)

對機(jī)器可以從進(jìn)程和系統(tǒng)的角度去理解宵膨,相應(yīng)的也就有進(jìn)程級系統(tǒng)級虛擬機(jī)。


一臺進(jìn)程虛擬機(jī)能夠支持一個獨立的進(jìn)程炸宵,在進(jìn)程虛擬機(jī)中辟躏,虛擬軟件放在ABI接口處,操作系統(tǒng)和硬件結(jié)合部分的上層土全,虛擬軟件同時仿真用戶級指令和操作系統(tǒng)調(diào)用捎琐。在進(jìn)程虛擬機(jī)中,虛擬軟件經(jīng)常被稱為運行時裹匙。進(jìn)程級虛擬機(jī)為用戶應(yīng)用程序提供虛擬的ABI環(huán)境瑞凑。


系統(tǒng)虛擬機(jī)提供完整的系統(tǒng)環(huán)境,這個環(huán)境可以支持操作系統(tǒng)及其潛在的許多用戶進(jìn)程概页。它使客戶操作系統(tǒng)能夠訪問底層的硬件資源籽御,包括網(wǎng)絡(luò),IO惰匙,以及臺式機(jī)上的顯示和圖形用戶界面技掏。在系統(tǒng)虛擬機(jī)中,虛擬軟件常常被稱為虛擬機(jī)監(jiān)視器(Virtual Machine Monitor: VMM)项鬼。系統(tǒng)虛擬機(jī)提供一個完整的系統(tǒng)環(huán)境哑梳,在這個環(huán)境里屬于多個用戶的許多進(jìn)程可以共存。

6. 分類


為了把各種虛擬機(jī)放在一個視角中討論绘盟,把它們的共同實現(xiàn)點組織起來鸠真,我們引入了如圖所示的分類方法。首先龄毡,將虛擬機(jī)分為兩個主要類型吠卷,進(jìn)程虛擬機(jī)和系統(tǒng)虛擬機(jī)。第一類虛擬機(jī)支持一個ABI——用戶指令加上系統(tǒng)調(diào)用稚虎;第二類支持完整的ISA——包括用戶指令和系統(tǒng)指令撤嫩。在這個分類法中更細(xì)的劃分基于客戶機(jī)與主機(jī)是否使用了相同的ISA。

參考:

虛擬機(jī) : 系統(tǒng)與進(jìn)程的通用平臺

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蠢终,一起剝皮案震驚了整個濱河市序攘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌寻拂,老刑警劉巖程奠,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異祭钉,居然都是意外死亡瞄沙,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來距境,“玉大人申尼,你說我怎么就攤上這事〉婀穑” “怎么了师幕?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長诬滩。 經(jīng)常有香客問我霹粥,道長,這世上最難降的妖魔是什么疼鸟? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任后控,我火速辦了婚禮,結(jié)果婚禮上空镜,老公的妹妹穿的比我還像新娘浩淘。我一直安慰自己,他們只是感情好姑裂,可當(dāng)我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布馋袜。 她就那樣靜靜地躺著,像睡著了一般舶斧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上察皇,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天茴厉,我揣著相機(jī)與錄音,去河邊找鬼什荣。 笑死矾缓,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的稻爬。 我是一名探鬼主播嗜闻,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼桅锄!你這毒婦竟也來了琉雳?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤友瘤,失蹤者是張志新(化名)和其女友劉穎翠肘,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體辫秧,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡束倍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绪妹。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡甥桂,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出邮旷,到底是詐尸還是另有隱情黄选,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布廊移,位于F島的核電站糕簿,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏狡孔。R本人自食惡果不足惜懂诗,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望苗膝。 院中可真熱鬧殃恒,春花似錦、人聲如沸辱揭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽问窃。三九已至亥鬓,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間域庇,已是汗流浹背嵌戈。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留听皿,地道東北人熟呛。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像尉姨,于是被迫代替她去往敵國和親庵朝。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內(nèi)容