商品描述
本書系統性地剖析Linux系統虛擬化的核心技術,構建從基礎原理、實現細節到安全攻防的完整虛擬化知識體系。書中內容涵蓋CPU、內存、IO虛擬化與中斷虛擬化等核心模塊,結合QEMU/KVM等主流開源框架的代碼實例,揭示虛擬化軟件的設計邏輯與底層實現機制。在此基礎上,本書專門設置虛擬化安全章節,系統介紹了虛擬化賦能的安全特性、虛擬化引入的潛在威脅,以及相應的防禦方法。
目錄大綱
前言
第1章 系統虛擬化概述 1
1.1 什麼是系統虛擬化 1
1.2 系統虛擬化發展史 1
1.2.1 誕生:20世紀60年代至20世紀70 年代 1
1.2.2 沈寂:20世紀80年代至20世紀90 年代 2
1.2.3 覆興:21世紀初 3
1.2.4 爆發:21世紀初至今 4
1.3 系統虛擬化分類 4
1.3.1 虛擬化方案分類 4
1.3.2 虛擬化軟件架構分類 5
1.4 KVM系統虛擬化軟件 7
1.4.1 KVM簡介 7
1.4.2 KVM核心代碼文件 7
1.5 實驗題 8
1.5.1 實驗一:虛擬化平臺搭建 8
1.5.2 實驗二:虛擬機創建 8
第2章 CPU虛擬化 9
2.1 X86 硬件架構 9
2.1.1 X86架構簡介 9
2.1.2 X86虛擬化漏洞 10
2.2 Intel VT-x 11
2.2.1 VMX的兩種運行模式 11
2.2.2 新增指令 12
2.2.3 虛擬機控制結構體 12
2.3 VCPU數據結構 14
2.3.1 通用VCPU數據結構 14
2.3.2 VMX相關VCPU數據結構 15
第3章 內存虛擬化 48
3.1 內存管理 48
3.1.1 內存尋址 48
3.1.2 KVM內存虛擬化核心數據結構 50
3.1.3 虛擬機物理內存構建 55
3.2 影子頁表 64
3.2.1 影子頁表原理 64
3.2.2 影子頁表初始化 64
3.2.3 影子頁表加載 68
3.2.4 影子頁表缺頁處理 69
3.3 擴展頁表 EPT 79
3.3.1 EPT原理 79
3.3.2 EPT初始化 79
3.3.3 EPT加載 81
3.3.4 EPT缺頁處理 82
3.3.5 多EPT切換 84
3.4 VPID機制 84
3.5 氣球模型 85
3.5.1 氣球模型原理 85
3.5.2 氣球模型實現 87
3.6 實驗題 90
3.6.1 實驗一:影子頁表隔離 90
3.6.2 實驗二:EPT頁表切換 91
3.6.3 實驗三:氣球模型頁面監控 91
第4章 IO虛擬化 92
4.1 設備管理 92
4.1.1 物理計算機系統中的設備管理 92
4.1.2 虛擬化環境中的設備管理 93
4.1.3 PCI 設備 94
4.2 完全設備虛擬化 100
4.2.1 設備模型 100
4.2.2 MIO處理流程 100
4.2.3 Port I/O處理流程 105
4.3 Virtual I/O 110
4.3.1 Virtqueue 110
4.3.2 Virtio-balloon實現 117
4.3.3 Virtio-net實現 153
4.4 VHost 183
4.4.1 VHost原理 183
4.4.2 VHost實現 184
4.5 輕量級I/O退出 199
4.6 Intel VT-d 202
4.6.1 概述 202
4.6.2 根條目表和上下文條目表 203
4.6.3 I/O頁表 204
4.6.4 硬件探測 205
4.7 SR-IOV 206
4.7.1 概述 206
4.7.2 VFIO基本概念 206
4.7.3 VFIO實現 207
4.8 實驗題 214
4.8.1 實驗一:軟件完全虛擬化設備創建 214
4.8.2 實驗二:Virtio設備創建 214
4.8.3 實驗三:VHost設備創建 214
4.8.4 實驗四:DA權限控制 214
第5章 中斷虛擬化 215
5.1 中斷處理流程 215
5.1.1 單核處理器中斷響應 215
5.1.2 多核處理器中斷響應 216
5.2 虛擬PIC中斷處理實現 218
5.2.1 虛擬PIC核心數據結構 218
5.2.2 虛擬PIC的創建 220
5.2.3 虛擬PIC處理中斷請求 226
5.3 虛擬APIC中斷處理實現 232
5.3.1 虛擬APIC核心數據結構 232
5.3.2 虛擬APIC的創建 235
5.3.3 虛擬APIC處理中斷請求 237
5.4 硬件中斷虛擬化支持 243
5.4.1 Virtual-APIC page 244
5.4.2 Interrupt-window exiting 244
5.4.3 Posted-interrupt processing 246
5.5 MSI 中斷機制 248
5.5.1 MSI 原理 248
5.5.2 MSI 虛擬化 251
5.6 實驗題 253
5.6.1 實驗一:自定義中斷 253
5.6.2 實驗二:異步中斷機制 253
第6章 虛擬化安全 254
6.1 虛擬化技術在安全中的應用 254
6.1.1 虛擬機自省 255
6.1.2 虛擬機內存訪問控制 257
6.1.3 案例分析--基於LibVMI的虛擬機內核符號表獲取 259
6.2 虛擬化技術中的安全威脅 260
6.2.1 虛擬化軟件架構設計中的安全風險 260
6.2.2 虛擬化軟件棧安全漏洞 262
6.2.3 攻擊與威脅模型 265
6.3 面向虛擬化的安全防禦 272
6.3.1 虛擬化軟件安全增強 272
6.3.2 面向不可信虛擬化軟件的虛擬機安全防護 277
6.4 實驗題 278
6.4.1 實驗一:虛擬機內核完整性度量 278
6.4.2 實驗二:虛擬機系統調用捕獲 279
6.4.3 實驗三:降權虛擬化軟件 279
參考文獻 280
附錄 縮略語 285
