安 虹 張 昱 吳俊敏
進(jìn)入21世紀(jì),工藝技術(shù)的進(jìn)步和計算機(jī)應(yīng)用的變化推動了計算機(jī)體系結(jié)構(gòu)的迅猛發(fā)展,賦予了計算機(jī)體系結(jié)構(gòu)新的含義。現(xiàn)代計算機(jī)系統(tǒng)的硬件結(jié)構(gòu)正在朝著片上多核、系統(tǒng)多級并行處理的方向發(fā)展,并且通過Internet網(wǎng)絡(luò)互聯(lián)起來,構(gòu)成功能更強(qiáng)大、應(yīng)用更廣泛的系統(tǒng)。在系統(tǒng)的物理資源大大增加的同時,系統(tǒng)的物理實現(xiàn)也變得極為復(fù)雜,系統(tǒng)的可擴(kuò)展性、可靠性、可用性、可管理性和安全性等方面都遇到了前所未有的、難以用單點的體系結(jié)構(gòu)技術(shù)來解決的一系列問題。1992年布特勒?蘭普遜(Butler Lampson)在他獲得圖靈獎時發(fā)表的演說中引用了大衛(wèi)?韋勒(David Wheeler)的名言:“計算機(jī)科學(xué)中的任何問題都可以通過增加一個中間層來解決”,闡明了用虛擬化技術(shù)來解決這一系列問題的大方向,揭示了虛擬機(jī)技術(shù)發(fā)展動因的歷史必然。
《虛擬機(jī):系統(tǒng)與進(jìn)程的通用平臺》一書的作者James E. Smith& Ravi Nair敏銳地觀察到了現(xiàn)代計算機(jī)體系結(jié)構(gòu)發(fā)展趨勢的這一重大變化,從計算機(jī)體系結(jié)構(gòu)研究者的角度,以計算機(jī)系統(tǒng)接口抽象層次中兩個最重要的接口——應(yīng)用的二進(jìn)制接口(Application Binary Interface, ABI)和應(yīng)用程序接口(Application Program Interface, API)為邊界,將計算機(jī)系統(tǒng)資源的各種虛擬化技術(shù)劃分為進(jìn)程虛擬機(jī)和系統(tǒng)虛擬機(jī)兩大類展開討論,清晰地展現(xiàn)了虛擬化技術(shù)各種方法的各個層面和各類應(yīng)用。
教材結(jié)構(gòu):
第1章首先引入了計算機(jī)系統(tǒng)接口的抽象定義,討論了虛擬化與各層接口的關(guān)系。然后從計算機(jī)體系結(jié)構(gòu)的概念出發(fā),對各種不同類型的虛擬機(jī)進(jìn)行了分類總結(jié),將虛擬機(jī)分為兩個主要類型:進(jìn)程虛擬機(jī)和系統(tǒng)虛擬機(jī)。
第2章至第6章側(cè)重討論進(jìn)程虛擬機(jī)。第2章討論在目標(biāo)指令集體系結(jié)構(gòu)(Instruction Set Architecture, ISA)上仿真源指令集體系結(jié)構(gòu)的相關(guān)問題,并以一種CISC源指令集Intel IA-32、一種RISC目標(biāo)指令集IBM PowerPC為例來說明;然后以Shade系統(tǒng)為例介紹了二進(jìn)制翻譯技術(shù)。第3章討論進(jìn)程虛擬機(jī)的實現(xiàn)問題,包括指令集的仿真和主機(jī)操作系統(tǒng)接口的仿真,最后介紹實例FX!32系統(tǒng)。第4章討論通過代碼優(yōu)化獲得更好的仿真性能的技術(shù),包括各種程序剖析技術(shù),此外還討論了代碼重排序技術(shù),最后介紹了Dynamo動態(tài)二進(jìn)制代碼優(yōu)化器。第5章介紹高級語言虛擬機(jī)的體系結(jié)構(gòu),特別是它們支持面向?qū)ο缶幊毯桶踩奶卣?,這一章介紹了當(dāng)今兩個重要的面向?qū)ο筇摂M機(jī)——Java虛擬機(jī)和微軟的CLI。第6章進(jìn)一步討論高級語言虛擬機(jī)的實現(xiàn)問題,并以Jikes RVM作為實例研究說明本章的概念。
第7章至第9章側(cè)重討論系統(tǒng)虛擬機(jī)。第7章介紹協(xié)同設(shè)計虛擬機(jī),并以Transmeta Crusoe處理器和IBMAS/400處理器的實例研究結(jié)束本章。第8章涉及經(jīng)典的系統(tǒng)虛擬機(jī)及其實現(xiàn)方法,包括本地虛擬機(jī)和宿主虛擬機(jī)。此外還討論對計算機(jī)系統(tǒng)三個主要資源:處理器、存儲器、I/O的虛擬化技術(shù),以及如何用硬件來提高虛擬機(jī)的性能。本章給出的研究實例包括:VMware和Intel VT-x(Vanderpool)。第9章討論多處理器系統(tǒng)的虛擬化問題,包括對不同指令集的客戶和主機(jī)平臺多處理器系統(tǒng)的虛擬化。
第10章介紹了虛擬機(jī)技術(shù)新興的應(yīng)用領(lǐng)域,重點介紹了在安全領(lǐng)域(討論入侵檢測系統(tǒng)的原理以及虛擬機(jī)在系統(tǒng)攻防方面的應(yīng)用潛力)、移動計算環(huán)境(討論了商業(yè)上的應(yīng)用:VMware的VMotion)、以及計算網(wǎng)格(展示典型的系統(tǒng)虛擬機(jī)對新興網(wǎng)格系統(tǒng)出現(xiàn)的重要作用)方面的應(yīng)用。
附錄為本書的主要章節(jié)提供了計算機(jī)系統(tǒng)結(jié)構(gòu)的背景資料,討論了處理器、存儲器、I/O在計算機(jī)系統(tǒng)中的作用。
虛擬機(jī)未來應(yīng)用的廣泛性意味著本書適合各種各樣的讀者,包括從事計算機(jī)系統(tǒng)結(jié)構(gòu)、語言和編譯、操作系統(tǒng)、應(yīng)用軟件等各個領(lǐng)域的教學(xué)和研發(fā)人員。本書的寫作具有如下特點:(1)結(jié)構(gòu)清晰。本書從計算機(jī)體系結(jié)構(gòu)研究者的角度,以計算機(jī)系統(tǒng)接口抽象層次中兩個最重要的接口——應(yīng)用的二進(jìn)制接口和應(yīng)用程序接口為邊界,將計算機(jī)系統(tǒng)資源的各種虛擬化技術(shù)劃分為進(jìn)程虛擬機(jī)和系統(tǒng)虛擬機(jī)兩大類展開討論,清晰地展現(xiàn)了虛擬化技術(shù)各種方法的各個層面和各類應(yīng)用。(2)全面系統(tǒng)。作者從學(xué)術(shù)和工業(yè)應(yīng)用兩個方面對虛擬機(jī)技術(shù)幾十年的研究和發(fā)展歷史進(jìn)行了綜述,從體系結(jié)構(gòu)、程序設(shè)計語言和編譯,操作系統(tǒng)、系統(tǒng)安全等多個專業(yè)領(lǐng)域深入探討了虛擬機(jī)技術(shù)的應(yīng)用。(3)理實交融。本書提供了大量實際虛擬機(jī)系統(tǒng)的原理說明及詳實的參考文獻(xiàn),包括Shade模擬系統(tǒng)、FX!32系統(tǒng)、Dynamo/RIO、Java和CLI等流行語言虛擬機(jī)、Jikes RVM、Transmeta Crusoe處理器、IBM的AS/400和z/VM系統(tǒng)、VMware的主機(jī)虛擬機(jī)、Intel的VT-x虛擬技術(shù),以及多處理器虛擬系統(tǒng)——Cellular Disco。微軟、惠普及其他工業(yè)研究團(tuán)體的本領(lǐng)域研究人員對全書進(jìn)行了審閱。(4)面向未來。本書除在各章節(jié)討論了虛擬機(jī)技術(shù)的各種應(yīng)用以外,還在最后一章專門討論了一些新興的虛擬機(jī)應(yīng)用,包括安全領(lǐng)域(討論入侵檢測系統(tǒng)的原理以及虛擬機(jī)在系統(tǒng)攻防方面的應(yīng)用潛力)、移動計算環(huán)境(討論了兩個商業(yè)上的應(yīng)用:VMware的Vmotion)、以及計算網(wǎng)格(展示典型的系統(tǒng)虛擬機(jī)對新興網(wǎng)格系統(tǒng)出現(xiàn)的重要作用)方面的應(yīng)用。
本書涉及的知識面較寬,包括計算機(jī)體系結(jié)構(gòu)、編譯和操作系統(tǒng)、應(yīng)用開發(fā)環(huán)境等許多方面;觀點較新,提出了許多全新的概念和方法。因此,譯文難免存在錯誤和不足,希望與感興趣的老師共同交流和探討。