QEMU/KVM 源碼解析與應用

李強著

  • 出版商: 機械工業
  • 出版日期: 2020-09-01
  • 定價: $1,008
  • 售價: 8.5$857
  • 語言: 簡體中文
  • 頁數: 471
  • 裝訂: 平裝
  • ISBN: 7111661168
  • ISBN-13: 9787111661160

下單後立即進貨 (約4週~6週)

買這商品的人也買了...

商品描述

《QEMU/KVM源碼解析與應用》從源碼層面對當今重要的虛擬化方案QEMU與KVM的實現進行了詳細分析。
涉及的源碼包括QEMU程序的基本組成與重要組件、主板與固件虛擬化、CPU虛擬化、內存虛擬化、中斷虛擬化、設備虛擬化等。
本書的內容以QEMU和KVM代碼分析為主,也涉及其他與虛擬化密切相關的代碼,例如SeaBIOS和Linux內核中的virtio與VFIO的驅動代碼。
對虛擬化安全、容器與安全容器技術、虛擬化技術的下一步發展也做了簡單介紹。
《QEMU/KVM源碼解析與應用》可供從事雲計算,特別是從事IaaS層相關工作的人員閱讀和使用,
也適合對底層計算機系統、虛擬機技術、操作系統技術感興趣的讀者學習和使用。
虛擬化技術如今已經廣泛應用於安全領域,本書還可供安全研究人員參考和使用。

目錄大綱

第1章 QEMU與KVM概述1
1.1 虛擬化簡介1
1.1.1 虛擬化思想1
1.1.2 虛擬機簡介2
1.1.3 系統虛擬化的歷史3
1.2 QEMU與KVM架構介紹4
1.2.1 QEMU與KVM歷史4
1.2.2 QEMU與KVM架構5
1.3 KVM API使用實例8

第2章 QEMU基本組件12
2.1 QEMU事件循環機制12
2.1.1 glib事件循環機制12
2.1.2 QEMU中的事件循環機制13
2.1.3 QEMU自定義事件源17
2.1.4 QEMU事件處理過程21
2.1.5 QEMU主循環監聽的fd解析23
2.2 QEMU線程模型25
2.2.1 QEMU線程模型簡介25
2.2.2 QEMU線程介紹26
2.3 QEMU參數解析27
2.4 QOM介紹32
2.4.1 類型的註冊33
2.4.2 類型的初始化36
2.4.3 類型的層次結構39
2.4.4 對象的構造與初始化42
2.4.5 屬性44
2.5 hmp與qmp介紹52
2.5.1 hmp與qmp52
2.5.2 qmp的使用53
2.5.3 qmp源碼分析54
2.5.4 qmp命令添加56

第3章 主板與固件模擬58
3.1 Intel 440FX主板簡介58
3.1.1 i440fx與piix3介紹58
3.1.2 QEMU模擬主板架構59
3.2 QEMU的主板模擬與初始化61
3.2.1 虛擬機初始化61
3.2.2 i440fx初始化64
3.2.3 中斷和其他設備的初始化66
3.3 fw_cfg設備介紹67
3.3.1 fw_cfg設備的初始化67
3.3.2 向fw_cfg設備添加數據69
3.3.3 添加用戶自定義數據74
3.3.4 數據的讀取75
3.4 SeaBIOS分析79
3.4.1 SeaBIOS簡介79
3.4.2 QEMU加載SeaBIOS80
3.4.3 SeaBIOS源碼結構84
3.4.4 SeaBIOS的編譯與調試91

第4章 CPU虛擬化93
4.1 CPU虛擬化介紹93
4.1.1 CPU虛擬化簡介93
4.1.2 VMX架構簡介93
4.1.3 VMCS介紹94
4.2 KVM模塊初始化介紹97
4.2.1 KVM源碼組織97
4.2.2 KVM模塊初始化98
4.3 虛擬機的創建105
4.3.1 QEMU側虛擬機的創建105
4.3.2 KVM側虛擬機的創建107
4.4 QEMU CPU的創建110
4.4.1 CPU模型定義110
4.4.2 CPU對象的初始化113
4.4.3 CPU的創建120
4.5 KVM CPU的創建122
4.5.1 KVM創建VCPU流程122
4.5.2 QEMU與KVM之間的共享數據126
4.5.3 VCPU CPUID構造128
4.6 VCPU的運行133
4.7 VCPU的調度144

第5章 內存虛擬化149
5.1 內存虛擬化簡介149
5.2 QEMU內存初始化150
5.2.1 基本結構150
5.2.2 QEMU虛擬機內存初始化154
5.2.3 分配虛擬機RAM過程157
5.3 內存佈局的提交161
5.3.1 內存更改通知161
5.3.2 虛擬機內存平坦化過程164
5.3.3 向KVM註冊內存169
5.4 內存的分派174
5.4.1 內存分派表的構建174
5.4.2 頁表簡化182
5.4.3 地址分派184
5.5 KVM內存虛擬化186
5.5.1 虛擬機MMU初始化186
5.5.2 虛擬機物理地址的設置189
5.5.3 EPT頁表的構建193
5.6 MMIO機制200
5.6.1 虛擬設備MMIO實現原理200
5.6.2 coalesced MMIO203
5.7 虛擬機臟頁跟踪205

第6章 中斷虛擬化210
6.1 中斷機制簡介210
6.1.1 中斷分發方式210
6.1.2 中斷線與中斷向量211
6.2 中斷模擬211
6.2.1 虛擬化環境下的中斷注入212
6.2.2 PIC中斷模擬214
6.2.3 I/O APIC中斷模擬225
6.2.4 MSI中斷模擬234
6.3 APIC虛擬化236
6.3.1 APICv簡介236
6.3.2 APICv源碼分析238

第7章 設備虛擬化245
7.1 設備虛擬化簡介245
7.1.1 總線數據類型245
7.1.2 總線的創建248
7.1.3 設備數據類型249
7.1.4 設備的創建251
7.1.5 設備的樹形結構252
7.2 PCI設備模擬258
7.2.1 PCI設備簡介258
7.2.2 PCI設備的模擬260
7.2.3 PCI設備中斷模擬270
7.3 設備模擬後端274
7.3.1 網卡模擬介紹275
7.3.2 網卡參數解析277
7.3.3 前端網卡設備的創建286
7.3.4 虛擬機網卡發包流程294
7.3.5 虛擬機網卡接收數據包297
7.4 virtio設備模擬298
7.4.1 virtio簡介298
7.4.2 virtio設備的初始化300
7.4.3 virtio驅動的加載314
7.4.4 virtio驅動的初始化320
7.4.5 virtio設備與驅動的通信330
7.5 ioeventfd和irqfd347
7.5.1 eventfd原理347
7.5.2 ioeventfd351
7.5.3 irqfd358
7.6 vhost net簡介362
7.6.1 vhost net介紹362
7.6.2 vhost的初始化363
7.6.3 vhost net網絡模塊367
7.6.4 vhost net的啟動376
7.6.5 vhost net的收發包378
7.7 設備直通與VFIO380
7.7.1 VFIO簡介380
7.7.2 VFIO相關內核模塊分析387
7.7.3 VFIO與設備直通404

第8章 虛擬化雜項425
8.1 QEMU Guest Agent425
8.1.1 QEMU Guest Agent的使用425
8.1.2 qga源碼分析426
8.1.3 qga的QEMU側源碼解析431
8.2 QEMU虛擬機熱遷移439
8.2.1 熱遷移的用法與基本原理439
8.2.2 熱遷移流程分析441
8.2.3 熱遷移中的髒頁同步454
8.2.4 熱遷移中的相關參數控制459
8.3 QEMU及虛擬化安全460
8.3.1 QEMU軟件安全460
8.3.2 QEMU安全思考466
8.4 容器與虛擬化466
8.4.1 Docker容器467
8.4.2 gVisor467
8.4.3 nemu468
8.4.4 crosvm、Firecracker與
cloud-hypervisor468
附錄 重要術語470