深度探索Linux系統虛擬化

深度探索Linux系統虛擬化

《深度探索Linux系統虛擬化》是機械工業出版社出版的圖書,作者是王柏生,謝廣軍。

基本介紹

  • 作者:王柏生、謝廣軍
  • 出版時間:2020年10月22日
  • 出版社:機械工業出版社
  • 頁數:292 頁
  • ISBN:9787111666066
  • 定價:89.00 元
  • 裝幀:平裝
  • 叢書:華章原創精品
內容簡介,圖書目錄,作者簡介,

內容簡介

這是一部深度講解如何在Linux作業系統環境下用軟體虛擬出一台“物理”計算機的著作。 兩位作者都是百度的技術專家,一位是百度的主任架構師,一位是百度智慧型雲的副總經理,都在作業系統和虛擬化等領域有多年的實踐經驗。本書從計算機體系結構、作業系統、硬體等多個方面深度探索了如何從CPU、記憶體、中斷、外設、網路5個維度去虛擬化Linux系統,不僅剖析了其中的關鍵技術原理,而且深入闡述了具體的實現。 全書共6章: 第1章:CPU虛擬化 介紹了X86架構下的VMX擴展,討論了在VMX下虛擬CPU的完整生命周期,著重闡述了Host和Guest的切換、指令的模擬以及KVM是如何虛擬多處理器的。 第2章:記憶體虛擬化 討論了作業系統如何為虛擬機呈現物理記憶體,結合影子頁表以及EPT探討了KVM如何完成從GVA到HPA的2層地址映射。 第3章:中斷虛擬化 首先,討論了從單核系統的8259A開始,到多核系統的APIC,再到繞開I/O APIC直接從設備向LAPIC傳送基於訊息的MSI的虛擬化原理和實現。然後,討論了Intel為了提高效率,是如何從硬體層面對虛擬化中斷進行支持的,以及KVM是如何使用它們的。 第4~5章 外設虛擬化 從完全虛擬化開始,依次講解了半虛擬化(Virtio)和Intel的VT-d支持下的硬體輔助虛擬化。通過實現一個模擬串口帶領讀者直觀體會了設備虛擬化的基本原理,然後深入闡述了Virito標準和實現,以及支持SR-IOV的DMA重映射和中斷重映射。 第6章 網路虛擬化 討論了在通用硬體網路的基礎上,作業系統如何虛擬出專用的網路設備,為租戶組建虛擬網路。

圖書目錄

前 言
第1章 CPU虛擬化 1
1.1 x86架構CPU虛擬化 1
1.1.1 陷入和模擬模型 2
1.1.2 x86架構虛擬化的障礙 2
1.1.3 VMX 3
1.1.4 VCPU生命周期 5
1.2 虛擬機切入和退出 8
1.2.1 GCC內聯彙編 8
1.2.2 虛擬機切入和退出及相關的上下文保存 10
1.3 陷入和模擬 15
1.3.1 訪問外設 15
1.3.2 特殊指令 22
1.3.3 訪問具有副作用的暫存器 27
1.4 對稱多處理器虛擬化 28
1.4.1 MP Table 28
1.4.2 處理器啟動過程 33
1.5 一個簡單KVM用戶空間實例 41
1.5.1 創建虛擬機實例 43
1.5.2 創建記憶體 43
1.5.3 創建處理器 44
1.5.4 Guest 46
1.5.5 載入Guest鏡像到記憶體 47
1.5.6 運行虛擬機 47
第2章 記憶體虛擬化 49
2.1 記憶體定址 49
2.1.1 段式定址 50
2.1.2 平坦記憶體模型 50
2.1.3 頁式定址 54
2.1.4 頁式定址實例 55
2.2 VMM為Guest準備物理記憶體 61
2.2.1 核心是如何獲取記憶體的 62
2.2.2 建立記憶體段信息 64
2.2.3 準備中斷0x15的處理函式以及設定IVT 65
2.2.4 中斷0x15的處理函式實現 68
2.2.5 虛擬記憶體條 69
2.3 實模式Guest的定址 72
2.3.1 設定CPU運行於Virtual-8086模式 74
2.3.2 設定Guest模式下的cr3暫存器 75
2.3.3 虛擬MMU的上下文 75
2.3.4 缺頁異常處理 77
2.4 保護模式Guest的定址 81
2.4.1 偷梁換柱cr3 83
2.4.2 影子頁表缺頁異常處理 86
2.5 EPT 92
2.5.1 設定EPT頁表 93
2.5.2 EPT異常處理 95
2.5.3 EPT支持下的地址翻譯過程 97
第3章 中斷虛擬化 99
3.1 虛擬中斷 99
3.2 PIC虛擬化 102
3.2.1 可程式中斷控制器8259A 103
3.2.2 虛擬設備向PIC傳送中斷請求 106
3.2.3 記錄中斷到IRR 107
3.2.4 設定待處理中斷標識 108
3.2.5 中斷評估 110
3.2.6 中斷ACK 112
3.2.7 關於EOI的處理 113
3.2.8 中斷注入 114
3.3 APIC虛擬化 116
3.3.1 外設中斷過程 118
3.3.2 核間中斷過程 123
3.3.3 IRQ routing 125
3.4 MSI(X)虛擬化 128
3.4.1 MSI(X)Capability數據結構 129
3.4.2 建立IRQ routing表項 131
3.4.3 MSI設備中斷過程 132
3.5 硬體虛擬化支持 134
3.5.1 虛擬中斷暫存器頁面(virtual-APIC page) 134
3.5.2 Guest模式下的中斷評估邏輯 136
3.5.3 posted-interrupt processing 139
第4章 設備虛擬化 142
4.1 設備虛擬化模型演進 142
4.2 PCI配置空間及其模擬 144
4.3 設備透傳 152
4.3.1 虛擬配置空間 153
4.3.2 DMA重映射 157
4.3.3 中斷重映射 160
4.4 完全虛擬化 166
4.4.1 Guest傳送數據 167
4.4.2 Guest接收數據 173
第5章 Virtio虛擬化 182
5.1 I/O棧 182
5.1.1 檔案系統 182
5.1.2 通用塊層 190
5.1.3 塊設備驅動 194
5.1.4 page cache 196
5.1.5 bio 201
5.1.6 I/O調度器 202
5.2 Virtio協定 204
5.2.1 描述符表 205
5.2.2 可用描述符區域 207
5.2.3 已用描述符區域 208
5.2.4 Virtio設備的PCI配置空間 209
5.3 初始化Virtqueue 210
5.4 驅動根據I/O請求組織描述符鏈 216
5.5 驅動通知設備處理請求 221
5.6 設備處理I/O請求 222
5.7 驅動側回收I/O請求 226
5.8 設備異步處理I/O 229
5.9 輕量虛擬機退出 231
5.9.1 創建eventfd 232
5.9.2 kvmtool監聽eventfd 235
5.9.3 VM exit處理函式喚醒I/O任務 236
第6章 網路虛擬化 239
6.1 基於Overlay的虛擬網路方案 239
6.1.1 計算節點 240
6.1.2 網路節點 247
6.1.3 Open vSwitch 251
6.2 虛擬機訪問外部主機 255
6.2.1 數據包在計算節點Linux網橋中的處理 256
6.2.2 數據包在計算節點的Open vSwitch中的處理 257
6.2.3 數據包在網路節點的Open vSwitch中的處理 265
6.3 外部主機訪問虛擬機 272
6.3.1 數據包在網關中的處理過程 273
6.3.2 數據包在網路節點的Open vSwitch中的處理 274
6.3.3 數據包在計算節點的Open vSwitch中的處理 279
6.3.4 數據包在Linux網橋中的處理 283

作者簡介

王柏生 技術專家,先後就職於中科院軟體所、紅旗Linux和百度,現任百度主任架構師。在作業系統、虛擬化技術、分散式系統、雲計算、自動駕駛等相關領域耕耘多年,有著豐富的實踐經驗。 著有暢銷書《深度探索Linux作業系統》(2013年出版)。 謝廣軍 計算機專業博士,畢業於南開大學計算機系。 技術專家,有多年的IT行業工作經驗。現擔任百度智慧型雲副總經理,負責雲計算相關產品的研發。多年來一直從事作業系統、虛擬化技術、分散式系統、大數據、雲計算等相關領域的研發工作,實踐經驗豐富。

相關詞條

熱門詞條

聯絡我們