介紹
基本信息
作者:英特爾開源軟體技術中心 復旦大學並行處理研究所
出版社:清華大學出版社
頁碼:238 頁
出版日期:2009年
ISBN:9787302193722
裝幀:平裝
開本:16
定價:29.00
內容簡介
《系統虛擬化:原理與實現》深入而又系統地介紹了以軟體完全虛擬化、硬體輔助虛擬化及類虛擬化為核心的各種系統虛擬化技術。全書共9章,第1章概述性地介紹了虛擬化技術; 第2章介紹計算機系統知識; 第3章從CPU虛擬化、記憶體虛擬化和I/O虛擬化三大塊對系統虛擬化技術進行概述,並介紹虛擬機監控器(VMM)的組成與分類,而且對市場上流行的虛擬化產品進行了簡單介紹; 第4~6章分別從基於軟體的完全虛擬化、硬體輔助的完全虛擬化和類虛擬化三種實現技術角度深入介紹系統虛擬化方法; 第7章介紹虛擬機的性能評測和調試技術; 第8章介紹系統虛擬化的套用實例; 最後在第9章對虛擬機和系統虛擬化技術的發展作一個展望。
《系統虛擬化:原理與實現》是系統虛擬化技術實現原理的全面展示,也是作者這些年在虛擬化學術
和工業研究領域開發的經驗總結。《系統虛擬化:原理與實現》理論與實踐相結合,用通俗易懂的語言描述系統虛擬化技術原理,其中不乏具有代表性和普遍意義的實例和技術細節,是學習系統虛擬化技術的寶貴資料。
虛擬化技術在近期成為了學術界和產業界的一大焦點,並且被認為是在將來的一段時間內最具影響力的技術之一,它可能會改變現有系統軟體的整個樣子,為系統軟體帶來一場新的革命。
虛擬化技術正在成為系統軟體中廣泛存在的一層,它的普及可以從三個角度來看待。從硬體平台來講,虛擬化技術被用於企業級伺服器、桌面平台(例如台式
計算機和筆記本式計算機)以及嵌入式系統中; 從用途來講,虛擬化技術被用於系統資源管理、容錯、軟硬體維護、增強系統安全、提升性能和節能等領域;
從趨勢來講,虛擬化技術正在廣泛地與其他技術結合,並且得到更多硬體上的支持,其性能損失不斷降低,部分固化到硬體中。
虛擬化技術的含義很廣泛。將任何一種形式的資源抽象成另一種形式的技術都是虛擬化。在常用的作業系統中就存在某種意義上的“虛擬化技術”,例如虛擬記憶體空間和進程。如果把記憶體看作是一個設備,虛擬記憶體就是將物理記憶體虛擬成多個記憶體空間。虛擬記憶體的容量可以少於或多於物理記憶體。進程的概念實際是對於物理硬體執行環境的一個抽象,每一個進程都享有一個完整的硬體執行環境,並且與其他進程相隔離。
相對於進程級的虛擬化,虛擬機是另外一個層面的虛擬化,即系統級虛擬化。與虛擬單個進程的執行環境所不同,系統級虛擬化所抽象的環境是整個計算機,其抽象出的環境稱為虛擬機,包括CPU、記憶體和I/O。在每個虛擬機中都可以運行一個作業系統,在一台計算機上可以虛擬出多個虛擬機。
本書嘗試將當前主要的虛擬機和系統級虛擬化原理梳理出來,從一個系統設計者的角度來介紹。從基本的原理出發,本書結合主流的x86體系結構和硬體上對虛擬化的支持來介紹系統級虛擬化是如何實現的。除介紹虛擬機與系統級虛擬化原理之外,本書力圖加入學術界對於虛擬化技術或利用虛擬化技術的最新研究、產業界的最新套用和將來可能的發展趨向。
編輯推薦
《系統虛擬化:原理與實現》不僅可以作為教材,供計算機相關專業的大學高年級學生和研究生閱讀; 而且可以作為一本參考手冊,供大學或企業里與系統相關領域的研究開發人員以及對虛擬機及虛擬化核心技術有興趣的研究者和開源工作者閱讀。
目錄
第1章 開篇
1.1 形形色色的虛擬化
1.2 系統虛擬化
1.3 系統虛擬化簡史
1.4 系統虛擬化的好處
第2章 x86架構及作業系統概述
2.1 x86的歷史和作業系統概要
2.1.1 x86的歷史
2.1.2 作業系統概述
2.2 x86記憶體架構
2.2.1 地址空間
2.2.2 地址
2.2.3 x86記憶體管理機制
2.3 x86架構的基本運行環境
2.3.1 三種基本模式
2.3.2 基本暫存器組
2.3.3 許可權控制
2.4 中斷與異常
2.4.1 中斷架構
2.4.2 異常架構
2.4.3 作業系統對中斷/異常的處理流程
2.5 進程
2.5.1 上下文
2.5.2 上下文切換
2.6 I/O架構
2.6.1 x86的I/O架構
2.6.2 DMA
2.6.3 PCI設備
2.6.4 PCI Express
2.7 時鐘
2.7.1 x86平台的常用時鐘
2.7.2 作業系統的時鐘觀
第3章 虛擬化概述
3.1 可虛擬化架構與不可虛擬化架構
3.2 處理器虛擬化
3.2.1 指令的模擬
3.2.2 中斷和異常的模擬及注入
3.2.3 對稱多處理器技術的模擬
3.3 記憶體虛擬化
3.4 I/O虛擬化
3.4.1 概述
3.4.2 設備發現
3.4.3 訪問截獲
3.4.4 設備模擬
3.4.5 設備共享
3.5 VMM的功能和組成
3.5.1 虛擬環境的管理
3.5.2 物理資源的管理
3.5.3 其他模組
3.6 VMM的分類
3.6.1 按虛擬平台分類
3.6.2 按VMM實現結構分類
3.7 典型虛擬化產品及其特點
3.7.1 VMware
3.7.2 Microsoft
3.7.3 Xen
3.7.4 KVM
3.8 思考題
第4章 基於軟體的完全虛擬化
4.1 概述
4.2 CPU虛擬化
4.2.1 解釋執行
4.2.2 掃描與修補
4.2.3 二進制代碼翻譯
4.3 記憶體虛擬化
4.3.1 概述
4.3.2 影子頁表
4.3.3 記憶體虛擬化的最佳化
4.4 I/O虛擬化
4.4.1 設備模型
4.4.2 設備模型的軟體接口
4.4.3 接口攔截和模擬
4.4.4 功能實現
4.4.5 案例分析: IDE的DMA操作
4.5 思考題
第5章 硬體輔助虛擬化
5.1 概述
5.2 CPU虛擬化的硬體支持
5.2.1 概述
5.2.2 VMCS
5.2.3VMX操作模式
5.2.4 VM?Entry/VM?Exit
5.2.5 VM?Exit
5.3 CPU虛擬化的實現
5.3.1 概述
5.3.2 VCPU的創建
5.3.3 VCPU的運行
5.3.4 VCPU的退出
5.3.5 VCPU的再運行
5.3.6 進階
5.4 中斷虛擬化
5.4.1 概述
5.4.2 虛擬PIC
5.4.3 虛擬I/O APIC
5.4.4 虛擬Local APIC
5.4.5 中斷採集
5.4.6 中斷注入
5.4.7 案例分析
5.5 記憶體虛擬化
5.5.1 概述
5.5.2 EPT
5.5.3 VPID
5.6 I/O虛擬化的硬體支持
5.6.1 概述
5.6.2 VT?d技術
5.7 I/O虛擬化的實現
5.7.1 概述
5.7.2 設備直接分配
5.7.3 設備I/O地址空間的訪問
5.7.4 設備發現
5.7.5 配置DMA重映射數據結構
5.7.6 設備中斷虛擬化
5.7.7 案例分析: 網卡的直接分配在Xen裡面的實現
5.7.8 進階
5.8 時間虛擬化
5.8.1 作業系統的時間概念
5.8.2 客戶機的時間概念
5.8.3 時鐘設備仿真
5.8.4 實現客戶機時間概念的一種方法
5.8.5 實現客戶機時間概念的另一種方法
5.8.6 如何滿足客戶機時間不等於實際時間的需求
5.9 思考題
第6章 類虛擬化技術
6.1 概述
6.1.1 類虛擬化的由來
6.1.2 類虛擬化的系統實現
6.1.3 類虛擬化接口的標準化
6.2 類虛擬化體系結構
6.2.1 指令集
6.2.2 外部中斷
6.2.3 物理記憶體空間
6.2.4 虛擬記憶體空間
6.2.5 記憶體管理
6.2.6 I/O子系統
6.2.7 時間與時鐘服務
6.3 Xen的原理與實現
6.3.1 超調用
6.3.2 虛擬機與Xen的信息共享
6.3.3 記憶體管理
6.3.4 頁表虛擬化
6.3.5 事件通道
6.3.6 授權表
6.3.7 I/O系統
6.3.8 實例分析: 塊設備虛擬化
6.4 XenLinux的運行
6.5 思考題
第7章 虛擬環境性能和最佳化
7.1 性能評測指標
7.2 性能評測工具
7.2.1 重用作業系統的性能評測工具
7.2.2 面向虛擬環境的性能評測工具
7.3 性能分析工具
7.3.1 Xenoprof
7.3.2 Xentrace
7.3.3 Xentop
7.4 性能最佳化方法
7.4.1 降低客戶機退出事件發生頻率
7.4.2 降低客戶機退出事件處理時間
7.4.3 降低處理器利用率
7.5 性能分析案例
7.5.1 案例分析: Xenoprof
7.5.2 案例分析: Xentrace
7.6 可擴展性
7.6.1 宿主機的可擴展性
7.6.2 客戶機的可擴展性
7.7 思考題
第8章 虛擬化技術的套用模式
8.1 常用技術介紹
8.1.1 虛擬機的動態遷移
8.1.2 虛擬機快照
8.1.3 虛擬機的克隆
8.1.4 案例分析: VMwareVMotion和VMware 快照
8.2 伺服器整合
8.2.1 伺服器整合技術
8.2.2 案例分析: VMware Infrastructure 3
8.3 災難恢復
8.3.1 災難恢復與虛擬化技術
8.3.2 案例分析: VMware Infrastructure 3
8.4 改善系統可用性
8.4.1 可用性的含義
8.4.2 虛擬化技術如何提高可用性
8.4.3 虛擬化技術帶來的新契機
8.4.4 案例分析: VMware HA和LUCOS
8.5 動態負載均衡
8.5.1 動態負載均衡的含義
8.5.2 案例分析: VMwareDRS
8.6 增強系統可維護性
8.6.1 可維護性的含義
8.6.2 案例分析: VMwareVirtualCenter
8.7 增強系統安全與可信任性
8.7.1 安全與可信任性的含義
8.7.2 虛擬化技術如何提高系統安全
8.7.3 虛擬化技術如何提高可信任性
8.7.4 案例分析: sHyper、VMware Infrastructure 3和CoVirt
8.8 Virtual Appliance
第9章 前沿虛擬化技術
9.1 基於容器的虛擬化技術
9.1.1 容器技術的基本概念和發展背景
9.1.2 基於容器的虛擬化技術
9.2 系統安全
9.2.1 基於虛擬化技術的惡意軟體
9.2.2 虛擬機監控器的安全性
9.3 系統標準化
9.3.1 開放虛擬機格式
9.3.2 虛擬化的可管理性
9.3.3 虛擬機互操作性標準
9.4 電源管理
9.5 智慧型設備
9.5.1 多佇列網卡
9.5.2 SR?IOV
9.5.3 其他
索引
參考文獻
……
序言
虛擬化技術在近期成為了學術界和產業界的一大焦點,並且被認為是在將來的一段時間內最具影響力的技術之一,它可能會改變現有系統軟體的整個樣子,為系統軟體帶來一場新的革命。
虛擬化技術正在成為系統軟體中廣泛存在的一層,它的普及可以從三個角度來看待。從硬體平台來講,虛擬化技術被用於企業級伺服器、桌面平台(例如台式
計算機和筆記本式計算機)以及嵌入式系統中; 從用途來講,虛擬化技術被用於系統資源管理、容錯、軟硬體維護、增強系統安全、提升性能和節能等領域;
從趨勢來講,虛擬化技術正在廣泛地與其他技術結合,並且得到更多硬體上的支持,其性能損失不斷降低,部分固化到硬體中。
虛擬化技術的含義很廣泛。將任何一種形式的資源抽象成另一種形式的技術都是虛擬化。在常用的作業系統中就存在某種意義上的“虛擬化技術”,例如虛擬記憶體空間和進程。如果把記憶體看作是一個設備,虛擬記憶體就是將物理記憶體虛擬成多個記憶體空間。虛擬記憶體的容量可以少於或多於物理記憶體。進程的概念實際是對於物理硬體執行環境的一個抽象,每一個進程都享有一個完整的硬體執行環境,並且與其他進程相隔離。
相對於進程級的虛擬化,虛擬機是另外一個層面的虛擬化,即系統級虛擬化。與虛擬單個進程的執行環境所不同,系統級虛擬化所抽象的環境是整個計算機,其抽象出的環境稱為虛擬機,包括CPU、記憶體和I/O。在每個虛擬機中都可以運行一個作業系統,在一台計算機上可以虛擬出多個虛擬機。
本書嘗試將當前主要的虛擬機和系統級虛擬化原理梳理出來,從一個系統設計者的角度來介紹。從基本的原理出發,本書結合主流的x86體系結構和硬體上對虛擬化的支持來介紹系統級虛擬化是如何實現的。除介紹虛擬機與系統級虛擬化原理之外,本書力圖加入學術界對於虛擬化技術或利用虛擬化技術的最新研究、產業界的最新套用和將來可能的發展趨向。
1. 面向的讀者
系統虛擬化是一門跨領域的學科,涉及作業系統、編譯和體系結構等學科知識,並延展到資源管理、性能和系統安全等問題。
本書定位的讀者包括計算機相關專業的高年級學生、研究生、研究開發人員及對虛擬機及虛擬化核心技術有興趣的學者。
2. 全書結構
本書的結構安排儘可能使每章的內容自包含,盡力讓對於某一章節感興趣的讀者不需檢索其他章節的內容。
第1章從虛擬化技術的歷史開始講起,將現有的虛擬化技術作一個分類。
第2章介紹了一個縮略版的計算機系統,幫助讀者溫習這些知識。其內容主要包括硬體抽象層、作業系統的硬體管理機制以及進程等與後續章節有關的作業系統概念。對於這些內容已經了解的讀者可以直接跳過這一章。
第3章介紹典型系統級虛擬化的技術以及VMM的組成和分類,最後還介紹一些目前市場比較流行的虛擬化產品。
第4章介紹基於軟體的完全虛擬化技術。
第5章介紹硬體輔助的完全虛擬化技術。
第6章以Xen為例介紹類虛擬化技術的實現原理。
第7章介紹虛擬機的性能評測和調試技術。
第8章介紹系統虛擬化的套用實例。
第9章對虛擬機和系統虛擬化技術的發展作一個展望。
本書的第1章由復旦大學張逢、英特爾公司董耀祖、李少凡合作撰寫; 第2章由復旦大學俞捷和英特爾公司張鑫合作撰寫; 第3章由英特爾公司田坤和余珂撰寫; 第4章由復旦大學張逢和黃弋簡撰寫; 第5章由英特爾公司余珂、李欣、蔣運宏和徐雪飛撰寫; 第6章由復旦大學張逢、劉鵬程和黃弋簡撰寫; 第7章由英特爾公司董耀祖和楊曉偉撰寫; 第8章由英特爾公司余珂、王慶和復旦大學吳曦、袁立威合作完成; 第9章由復旦大學劉鵬程、周亦勛、宋翔和英特爾公司董耀祖合作完成。英特爾公司李少凡和董耀祖對本書的每一版草稿均作了
細緻的審閱工作,余珂、張鑫、王慶以及復旦大學的張逢對全書的統編
和修改作了大量的工作。
3. 如何閱讀本書
對於虛擬機和系統虛擬化基本原理可以閱讀第1、3、4、5、6章。
希望單獨了解基於軟體的完全虛擬化、硬體輔助的完全虛擬化或類虛擬化的讀者可以單獨閱讀對應的章節。
希望了解系統虛擬化性能評測和最佳化技術的讀者可以閱讀第7章。
希望了解系統虛擬化技術背景、套用和發展的讀者可以閱讀第1、8、9章。
4. 感謝
在這裡,首先要感謝英特爾公司副總裁王文漢博士、英特爾亞太研發有限公司總經理兼首席研發官梁兆柱博士、英特爾亞太研發有限公司
創新中心總監黃波博士和英特爾開源技術中心高級
經理馮曉焰先生,以及復旦大學軟體學院院長
臧斌宇教授,他們是本書的發起人,並一直鼓勵我們完成本書。
也要謝謝所有在英特爾開源技術中心工作的同事以及所有在復旦大學軟體學院學習工作的同事和同學們,感謝他們不僅在工業界還在學術界推動虛擬化技術向前發展所做的努力,同時也感謝他們對本書草稿進行了一遍又一遍的閱讀,並提出了許多定貴的修改意見。在此,特別感謝英特爾公司辛曉慧、崔得暄、韓偉東、賀青和單海濤等,他們為本書提供了大量技術資料。
還要特別感謝復旦大學陳海波、陳榕、楊子夜、王慧紅和陳誠等,他們為本書的編撰提供了許多幫助。
最後,感謝您在茫茫書海中選擇了本書,並衷心祝願您能從中受益。
虛擬化專題寫作組
2008年9月
文摘
2.1.2作業系統概述
作業系統作為硬體平台上最重要的軟體,對下負責管理平台硬體,對上向應用程式提供標準接口。作業系統中最重要的部分稱為作業系統核心,運行在CPU最高的特權級上,可以訪問系統的一切資源,稱作業系統核心運行的狀態為核心態。應用程式通常運行在CPU最低的特權級上,只能訪問部分資源,此種狀態稱為用戶態。
作業系統利用平台架構提供的各種功能,使用硬體資源,其實現和平台架構是緊密相關的。在後面幾節的內容中會對X86架構提供給作業系統的各種功能,以及作業系統通常是如何使用它們的進行介紹。
2.2 X86記憶體架構
記憶體架構往往是硬體架構中最為複雜的部分。可以毫不誇張地說,理解了記憶體架構,就理解了現代計算機體系架構的大部分內容。下面介紹X86為作業系統提供了什麼樣的記憶體架構,以及作業系統是如何使用它們的。
2.2.1 地址空間
很多教科書把記憶體(這裡特指安插在主機板上的RAM)比作一個大數組,地址就是這個數組的索引。與之類似,地址空間則是個更大的數組,它是所有可用資源的集合,同樣,地址是這個數組的索引。地址空間可以劃分成如下兩種類型。
1.物理地址空間
硬體平台可以粗略地劃分成三個部分:CPU、記憶體和其他硬體設備。其中,CPU是平台的主導者,從CPU的角度來看,記憶體和其他硬體設備都是可以使用的資源。這些資源組合在一起,分布在CPU的物理地址空間內。如同名字的暗示,CPU使用物理地址索引這些資源。物理地址空間的大小,由CPU實現的物理地址位數所決定,物理地址位數和CPU處理數據的能力(即CPU位數)沒有必然的聯繫,例如16位的8086 CPU具有20位地址空間。