處理器虛擬化技術

處理器虛擬化技術 pdf epub mobi txt 電子書 下載 2025

鄧誌 著
圖書標籤:
  • 處理器虛擬化
  • 虛擬化技術
  • x86虛擬化
  • VT-x
  • AMD-V
  • KVM
  • Xen
  • Hypervisor
  • 雲計算
  • 係統安全
想要找書就要到 新城書站
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!
齣版社: 電子工業齣版社
ISBN:9787121230196
版次:1
商品編碼:11475577
品牌:Broadview
包裝:平裝
開本:16開
齣版時間:2014-06-01
用紙:膠版紙
頁數:646
字數:1076000
正文語種:中文

具體描述

內容簡介

  《處理器虛擬化技術》針對在Intel處理器端的虛擬化技術(Intel Virtualization Technology for x86,即Intel VT-x)進行全麵講解。在Intel VT-x技術下實現瞭VMX(Virtual-Machine Extensions,虛擬機擴展)架構平颱來支持對處理器的虛擬化管理。因此,VMX架構是Intel VT-x技術的核心。本書內容圍繞VMX架構實現細節展開全麵講解。但Intel VT-d(Virtualization Technology for Directed I/O)和Intel VT-c(Virtualization Technology for Connectivity)技術並不在本書的描述範圍。同時,也不針對AMD-v技術進行討論。
  《處理器虛擬化技術》共分為7章,書的整體結構也較為規整,可讀性比較強。本書共提供14個例子,對VMX架構的一些特色功能進行輔助講解。
  讀者閱讀《處理器虛擬化技術》,可以學習Intel VT-x技術的VMX架構知識,並且對整個x86/x64體係有更深入的瞭解!可以說,不瞭解VMX架構,根本算不上對x86/x64體係熟悉,因為,在處理器的虛擬化技術裏需要使用全方位的體係知識,對處理器在非常細節的地方進行虛擬化處理。

作者簡介

  鄧誌,1977年生於廣東,在銀行工作十餘年,現自由職業者。對計算機有一股熱情和蠻勁,善於思考,特彆喜歡琢磨底層架構。熟悉C語言,並且精通x86/x64平颱的匯編語言與機器指令係統,能用匯編寫簡易的OS核心。

內頁插圖

目錄

第1章 係統平颱
1.1 環境及工具
1.1.1 使用vmware
1.1.2 使用bochs
1.1.3 在真實機器上運行
1.1.4 Build工具
1.2 64位與32位代碼的混閤編譯
1.2.1 使用符號__X64
1.2.2 指令操作數
1.2.3 64-bit模式下其他指令處理
1.2.4 函數重定義錶
1.3 地址空間
1.4 數據結構
1.4.1 PCB結構
1.4.2 LSB結構
1.4.3 初始化PCB
1.4.4 SDA結構
1.4.5 初始化SDA
1.4.6 DRS結構
1.5 係統啓動
1.5.1 Boot階段
1.5.2 Stage1階段
1.5.2.1 Stage1階段的多處理器初始化
1.5.2.2 BSP的收尾工作
1.5.2.3 APs的stage1階段工作
1.5.3 Stage2階段
1.5.3.1 BSP在stage2最後處理
1.5.3.2 APs在stage2階段收尾工作
1.5.4 Stage3階段
1.5.4.1 BSP在stage3階段的最後工作
1.5.4.2 APs在stage3階段收尾工作
1.5.5 例子1-1
1.6 係統機製
1.6.1 分頁機製
1.6.1.1 PAE分頁模式實現
1.6.1.2 IA-32e分頁模式實現
1.6.2 多處理器機製
1.6.2.1 調度任務
1.6.2.2 處理器切換
1.6.3 調試記錄機製
1.6.3.1 例子1-2
1.6.3.2 運行結果

第2章 VMX架構基礎
2.1 虛擬化概述
2.1.1 虛擬設備
2.1.2 地址轉換
2.1.3 設備的I/O訪問
2.2 VMX架構
2.2.1 VMM與VM
2.2.2 VMXON與VMCS區域
2.2.3 檢測VMX支持
2.2.4 開啓VMX進入允許
2.3 VMX operation模式
2.3.1 進入VMX operation模式
2.3.2 進入VMX operation的製約
2.3.2.1 IA32_FEATURE_CONTROL寄存器
2.3.2.2 CR0與CR4固定位
2.3.2.3 A20M模式
2.3.3 設置VMXON區域
2.3.3.1 分配VMXON區域
2.3.3.2 VMXON區域初始設置
2.3.4 退齣VMX operation模式
2.4 VMX operation模式切換
2.4.1 VM entry
2.4.2 VM exit
2.4.3 SMM雙重監控處理下
2.5 VMX能力的檢測
2.5.1 檢測是否支持VMX
2.5.2 通過MSR組檢查VMX能力
2.5.3 例子2-1
2.5.4 基本信息檢測
2.5.5 允許為0以及允許為1位
2.5.5.1 決定VMX支持的功能
2.5.5.2 控製字段設置算法
2.5.6 VM-execution控製字段
2.5.6.1 Pin-based VM-execution control字段
2.5.6.2 primary processor-based VM-execution control字段
2.5.6.3 secondary processor-based VM-execution control字段
2.5.7 VM-exit control字段
2.5.8 VM-entry control字段
2.5.9 VM-function control字段
2.5.10 CR0與CR4的固定位
2.5.10.1 CR0與CR4寄存器設置算法
2.5.11 VMX雜項信息
2.5.12 VMCS區域字段index值
2.5.13 VPID與EPT能力
2.6 VMX指令
2.6.1 VMX指令執行環境
2.6.2 指令執行的狀態
2.6.3 VMfailValid事件原因
2.6.4 指令異常優先級
2.6.5 VMCS管理指令
2.6.5.1 VMPTRLD指令
2.6.5.2 VMPTRST指令
2.6.5.3 VMCLEAR指令
2.6.5.4 VMREAD指令
2.6.5.5 VMWRITE指令
2.6.6 VMX模式管理指令
2.6.6.1 VMXON指令
2.6.6.2 VMXOFF指令
2.6.6.3 VMLAUNCH指令
2.6.6.4 VMRESUME指令
2.6.6.5 返迴到executive monitor
2.6.7 cache刷新指令
2.6.7.1 INVEPT指令
2.6.7.2 INVVPID指令
2.6.8 調用服務例程指令
2.6.8.1 VMCALL指令
2.6.8.2 VMFUNC指令

第3章 VMCS結構
3.1 VMCS狀態
3.1.1 activity屬性
3.1.2 current屬性
3.1.3 launch屬性
3.2 VMCS區域
3.2.1 VMXON區域
3.2.2 Executive-VMCS與SMM-transfer VMCS
3.2.3 VMCS區域格式
3.3 訪問VMCS字段
3.3.1 字段ID格式
3.3.2 不同寬度的字段處理
3.4 字段ID值
3.4.1 16位字段ID
3.4.2 64位字段ID
3.4.3 32位字段ID
3.4.4 natural-width字段ID
3.5 VM-execution控製類字段
3.5.1 Pin-based VM-execution control字段
3.5.2 processor-based VM-execution control字段
3.5.2.1 primary processor-based VM-execution control字段
3.5.2.2 secondary processor-based VM-execution control字段
3.5.3 exception bitmap字段
3.5.4 PFEC_MASK與PFEC_MATCH字段
3.5.5 I/O bitmap address字段
3.5.6 TSC offset字段
3.5.7 guest/host mask與read shadow字段
3.5.8 CR3-target字段
3.5.9 APIC-access address字段
3.5.10 virtual-APIC address字段
3.5.11 TPR threshold字段
3.5.12 EOI-exit bitmap字段
3.5.13 posted-interrupt notification vector字段
3.5.14 posted-interrupt descriptor address字段
3.5.15 MSR bitmap address字段
3.5.16 executive-VMCS pointer
3.5.17 EPTP字段
3.5.18 virtual-processor identifier字段
3.5.19 PLE_Gap與PLE_Window字段
3.5.20 VM-function control字段
3.5.21 EPTP-list address字段
3.6 VM-entry控製類字段
3.6.1 VM-entry control字段
3.6.2 VM-entry MSR-load字段
3.6.3 事件注入控製字段
3.6.3.1 VM-entry interruption information字段
3.6.3.2 VM-entry exception error code字段
3.6.3.3 VM-entry instruction length字段
3.7 VM-exit控製類字段
3.7.1 VM-exit control字段
3.7.2 VM-exit MSR-store與MSR-load字段
3.8 guest-state區域字段
3.8.1 段寄存器字段
3.8.1.1 access rigth字段
3.8.2 GDTR與IDTR字段
3.8.3 MSR字段
3.8.4 SMBASE字段
3.8.5 activity state字段
3.8.6 interruptibility state字段
3.8.7 pending debug exceptions字段
3.8.7.1 #DB異常的處理
3.8.8 VMCS link pointer字段
3.8.9 VMX-preemption timer value字段
3.8.10 PDPTEs字段
3.8.11 guest interrupt status字段
3.9 host-state區域字段
3.10 VM-exit信息類字段
3.10.1 基本信息類字段
3.10.1.1 Exit reason字段
3.10.1.2 VM-exit原因
3.10.1.3 Exit qualification字段
3.10.1.4 由某些指令引發的VM-exit
3.10.1.5 由#DB異常引發的VM-exit
3.10.1.6 由#PF異常引發的VM-exit
3.10.1.7 由SIPI引發的VM-exit
3.10.1.8 由I/O SMI引發的VM-exit
3.10.1.9 由任務切換引發的VM-exit
3.10.1.10 訪問控製寄存器引發的VM-exit
3.10.1.11 由MOV-DR指令引發的VM-exit
3.10.1.12 由I/O指令引發的VM-exit
3.10.1.13 由於訪問APIC-access page引發的VM-exit
3.10.1.14 由EPT violation引發的VM-exit
3.10.1.15 由EOI虛擬化引發的VM-exit
3.10.1.16 由APIC-write引發的VM-exit
3.10.1.17 guest-linear address字段
3.10.1.18 guest-physical address字段
3.10.2 直接嚮量事件類信息字段
3.10.2.1 VM-exit interruption information字段
3.10.2.2 VM-exit interruption error code字段
3.10.3 間接嚮量事件類信息字段
3.10.3.1 IDT-vectoring information字段
3.10.3.2 IDT-vectoring error code字段
3.10.4 指令類信息字段
3.10.4.1 VM-exit instruction length字段
3.10.4.2 VM-exit instruction information字段
3.10.5 I/O SMI信息類字段
3.10.6 指令錯誤類字段
3.11 VMM初始化實例
3.11.1 VMCS相關的數據結構
3.11.1.1 VMB結構
3.11.1.2 VSB結構
3.11.1.3 VMCS buffer結構
3.11.2 初始化VMXON區域
3.11.3 初始化VMCS區域
3.11.3.1 分配VMCS區域
3.11.3.2 VMCS初始化模式
3.11.3.3 VMCS buffer初始化
3.11.4 例子3-1

第4章 VM-entry處理
4.1 發起VM-entry操作
4.2 VM-entry執行流程
4.3 指令執行的基本檢查
4.4 檢查控製區域及host-state區域
4.4.1 VM-execution控製區域檢查
4.4.1.1 檢查pin-based VM-execution control字段
4.4.1.2 檢查primary processor-based VM-execution control字段
4.4.1.3 檢查secondary processor-based VM-execution字段
4.4.1.4 檢查CR3-target字段
4.4.2 VM-exit控製區域檢查
4.4.2.1 VM-exit control字段的檢查
4.4.2.2 MSR-store與MSR-load相關字段的檢查
4.4.3 VM-entry控製區域檢查
4.4.3.1 VM-entry control字段的檢查
4.4.3.2 MSR-load相關字段的檢查
4.4.3.3 事件注入相關字段的檢查
4.4.4 Host-state區域的檢查
4.4.4.1 Host控製寄存器字段的檢查
4.4.4.2 Host-RIP的檢查
4.4.4.3 段selector字段的檢查
4.4.4.4 段基址字段的檢查
4.4.4.5 MSR字段的檢查
4.5 檢查guest-state區域
4.5.1 檢查控製寄存器字段
4.5.2 檢查RIP與RFLAGS字段
4.5.3 檢查DR7與IA32_DEBUGCTL字段
4.5.4 檢查段寄存器字段
4.5.4.1 virtual-8086模式下的檢查
4.5.4.2 unrestricted guest位為0時的檢查
4.5.4.3 unrestricted guest位為1時的檢查
4.5.5 檢查GDTR與IDTR字段
4.5.6 檢查MSR字段
4.5.7 檢查activity state字段
4.5.8 檢查interruptibility state字段
4.5.9 檢查pending debug exception字段
4.5.10 檢查VMCS link pointer字段
4.5.11 檢查PDPTE字段
4.5.11.1 由加載CR3引發的PDPTE檢查
4.6 檢查guest state引起的VM-entry失敗
4.7 加載guest環境信息
4.7.1 加載控製寄存器
4.7.2 加載DR7與IA32_DEBUGCTL
4.7.3 加載MSR
4.7.4 SMBASE字段處理
4.7.5 加載段寄存器與描述符錶寄存器
4.7.5.1 unusable段寄存器
4.7.5.2 加載GDTR與IDTR
4.7.6 加載RIP、RSP和RFLAGS
4.7.7 加載PDPTE錶項
4.8 刷新處理器cache
4.9 更新Vritual-APIC狀態
4.9.1 PPR虛擬化
4.9.2 虛擬中斷評估與delivery
4.10 加載MSR-load列錶
4.10.1 IA32_EFER的加載處理
4.10.2 其他MSR字段的加載處理
4.11 由加載guest state引起的VM-entry失敗
4.12 事件注入
4.12.1 注入事件的delivery
4.12.1.1 保護模式下的事件注入
4.12.1.2 實模式下的事件注入
4.12.1.3 virtual-8086模式下的事件注入
4.12.2 注入事件的間接VM-exit
4.13 執行pending debug exception
4.13.1 注入事件下的#DB異常delivery
4.13.2 例子4-1
4.13.3 非注入事件下的#DB異常delivery
4.14 使用MTF VM-exit功能
4.14.1 注入事件下的MTF VM-exit
4.14.2 非注入事件下的MTF VM-exit
4.14.3 MTF VM-exit與其他VM-exit
4.14.4 MTF VM-exit的優先級彆
4.14.5 例子4-2
4.15 VM-entry後直接導緻VM-exit的事件
4.15.1 VM-exit事件的優先級彆
4.15.2 TPR below threshold VM-exit
4.15.3 pending MTF VM-exit
4.15.4 由pending debug exception引發的VM-exit
4.15.5 VMX-preemption timer
4.15.6 NMI-window exiting
4.15.7 interrupt-window exiting
4.16 處理器的可中斷狀態
4.16.1 中斷的阻塞狀態
4.16.2 阻塞狀態的解除
4.16.3 中斷的阻塞
4.16.4 VM-entry後的可中斷狀態
4.17 處理器的活動狀態
4.17.1 active與inactive狀態
4.17.2 事件的阻塞
4.17.3 inactive狀態的喚醒
4.17.4 VM-entry後的活動狀態
4.18 VM-entry的機器檢查事件

第5章 VM-exit處理
5.1 無條件引發VM-exit的指令
5.2 有條件引發VM-exit的指令
5.3 引發VM-exit的事件
5.4 由於VM-entry失敗導緻的VM-exit
5.5 例子5-1
5.6 指令引發的異常與VM-exit
5.6.1 優先級高於VM-exit的異常
5.6.2 VM-exit優先級高於指令的異常
5.6.3 例子5-2
5.7 VM-exit的處理流程
5.8 記錄VM-exit的相關信息
5.9 更新VM-entry區域字段
5.10 更新處理器狀態信息
5.10.1 直接VM-exit事件下的狀態更新
5.10.2 間接VM-exit事件下的狀態更新
5.10.3 其他情況下的狀態更新
5.11 保存guest環境信息
5.11.1 保存控製寄存器,debug寄存器及MSR
5.11.2 保存RIP與RSP
5.11.3 保存RFLAGS
5.11.4 保存段寄存器
5.11.5 保存GDTR與IDTR
5.11.6 保存activity與interruptibility狀態信息
5.11.7 保存pending debug exception信息
5.11.8 保存VMX-preemption timer值
5.11.9 保存PDPTE
5.11.10 保存SMBASE與VMCS-link pointer
5.12 保存MSR-store列錶
5.13 加載host環境
5.13.1 加載控製寄存器
5.13.2 加載DR7與MSR
5.13.3 加載host段寄存器
5.13.3.1 加載selector
5.13.3.2 加載base
5.13.3.3 加載limit
5.13.3.4 加載access rights
5.13.4 加載GDTR與IDTR
5.13.5 加載RIP,RSP及RFLAGS
5.13.6 加載PDPTE
5.14 更新host處理器狀態信息
5.15 刷新處理器cache信息
5.16 加載MSR-load列錶
5.17 VMX-abort

第6章 內存虛擬化
6.1 EPT(擴展頁錶)機製
6.1.1 EPT機製概述
6.1.1.1 guest分頁機製與EPT
6.1.2 EPT頁錶結構
6.1.3 guest-physical address
6.1.4 EPTP
6.1.5 4K頁麵下的EPT頁錶結構
6.1.6 2M頁麵下的EPT頁錶結構
6.1.7 1G頁麵下的EPT頁錶結構
6.1.8 EPT導緻的VM-exit
6.1.8.1 EPT violation
6.1.8.2 EPT misconfiguration
6.1.8.3 EPT 頁故障的優先級
6.1.8.4 修復EPT頁故障
6.1.9 accessed與dirty標誌位
6.1.10 EPT內存類型
6.1.11 EPTP switching
6.1.12 實現EPT機製
6.2 Cache管理
6.2.1 linear mapping(綫性映射)
6.2.2 guest-physical mapping(guest物理映射)
6.2.3 combined mapping(閤並映射)
6.2.4 cache域
6.2.5 cache建立
6.2.6 cache刷新
6.2.6.1 INVLPG指令刷新cache
6.2.6.2 INVPCID指令刷新cache
6.2.6.3 INVVPID指令刷新cache
6.2.6.4 INVEPT指令刷新cache
6.2.6.5 INVVPID指令使用指南
6.2.6.6 INVEPT指令使用指南
6.3 內存虛擬化管理
6.3.1 分配物理內存
6.3.2 實模式guest OS內存處理
6.3.3 guest內存虛擬化
6.3.3.1 guest虛擬地址轉換
6.3.3.2 guest OS的cache管理
6.4 例子6-1
6.4.1 GuestBoot模塊
6.4.2 GuestKernel模塊
6.4.3 VSB結構
6.4.4 VMM初始化guest
6.4.5 使用VMX-preemption timer
6.4.6 host處理流程
6.4.7 運行結果

第7章 中斷虛擬化
7.1 異常處理
7.1.1 反射異常給guest
7.1.2 恢復guest異常
7.1.2.1 直接恢復
7.1.2.2 例子7-1
7.1.2.3 恢復原始嚮量事件
7.1.3 處理任務切換
7.1.3.1 檢查任務切換條件
7.1.3.2 VMM處理任務切換
7.1.3.3 恢復guest運行
7.1.3.4 例子7-2
7.2 Local APIC虛擬化
7.2.1 監控guest訪問local APIC
7.2.1.1 例子7-3
7.2.2 local APIC虛擬化機製
7.2.3 APIC-access page
7.2.3.1 APIC-access page的設置
7.2.4 虛擬化x2APIC MSR組
7.2.5 virtual-APIC page
7.2.6 APIC-access VM-exit
7.2.6.1 APIC-access VM-exit優先級彆
7.2.7 虛擬化讀取APIC-access page
7.2.8 虛擬化寫入APIC-access page
7.2.9 虛擬化基於MSR讀local APIC
7.2.10 虛擬化基於MSR寫local APIC
7.2.11 虛擬化基於CR8訪問TPR
7.2.12 local APIC虛擬化操作
7.2.12.1 TPR虛擬化
7.2.12.2 PPR虛擬化
7.2.12.3 EOI虛擬化
7.2.12.4 Self-IPI虛擬化
7.2.13 虛擬中斷的評估與delivery
7.2.13.1 虛擬中斷的評估
7.2.13.2 虛擬中斷的delivery
7.2.14 posted-interrupt處理
7.3 中斷處理
7.3.1 攔截INT指令
7.3.1.1 處理IDTR.limit
7.3.1.2 處理#GP異常
7.3.1.3 處理中斷delivery
7.3.1.4 完成中斷的delivery操作
7.3.1.5 例子7-4
7.3.2 處理NMI
7.3.2.1 攔截NMI
7.3.2.2 虛擬NMI
7.3.3 處理外部中斷
7.3.3.1 攔截外部中斷
7.3.3.2 轉發外部中斷
7.3.3.3 監控guest設置8259
7.3.3.4 例子7-5

前言/序言

  虛擬化技術大概可以分為軟件虛擬化和硬件虛擬化兩大類。軟件上的虛擬化實際上很多地方都可以看到,例如常見的係統虛擬機軟件,Java 虛擬機和Android 上的虛擬機可以算是廣義上的軟件虛擬機瞭。
  在硬件虛擬化技術齣現之前,虛擬機隻能靠軟件來模擬實現。硬件上的虛擬化技術可以算是比較熱的一門技術瞭,但它並不是什麼新鮮的技術。據資料顯示,實際上Intel第一代VT-x 技術Vanderpool 在2005 年就已經推齣瞭,但Intel 發展得很快,從處理器端到芯片組端,再到網絡端都已經可以布署硬件虛擬化技術瞭。
  《處理器虛擬化技術》一書圍繞Intel VT-x 處理器端的虛擬化技術而寫,可以算是前作《x86/x64 體係探索及編程》的下冊。盡管此書隻圍繞一個主題,但筆者認為它的知識麵並不比《x86/x64 體係探索及編程》一書窄,甚至還要超齣。因為,完整地虛擬化一個“虛擬處理器”,必須結閤原來的x86/x64 體係知識並擴展開來。編寫本書所花的時間比前作還要多許多,從開始動筆到完稿用瞭11 個月的時間,期間不可謂不艱辛。
  本書內容
  全書共7 章。
  第1 章 係統平颱
  本書的代碼使用匯編語言編寫,運行在祼機平颱上。本章主要介紹如何實現一個簡易平颱來支撐書中所有例子的運行。這個平颱可以被編譯生成32 位或者64 位環境。也實現瞭一些特色機製,例如,開啓瞭多處理器環境,並且為瞭更好地、直觀地瞭解代碼的執行流程而加入瞭調試信息機製。
  第2 章 VMX 架構基礎
  VMX 架構是Intel 處理器端虛擬化技術(Intel VT-x)的實現框架。本章對虛擬化技術進行概括講解,全麵瞭解VMX 架構的基礎知識。首先介紹瞭VMX 架構下引入VMX root operation 與VMX non-root operation 模式,以及這兩個模式之間的切換。然後介紹瞭┃處理器虛擬化技術VMX 架構下的各種處理器能力,以及這些能力的檢測。最後全麵講解新引進的VMX 指令集,以及VMX 指令産生的各種失敗的情形。
  第3 章 VMCS 結構
  VMCS 結構是VMX 架構下最基本、最重要的數據結構。VMCS 結構內分為6 個區域,每個區域有若乾個字段。整個VMX operation 模式的運行環境由VMCS 結構內的這些字段來配置與管理,例如配置guest 與host 的運行環境。全麵地講解瞭這6 個區域內每個字段的設置與使用。
  第4 章 VM-entry 處理
  在VMX 架構下,guest 運行在VMX non-root operation 模式下,而host 運行在VMX root operation 模式下。如果需要運行guest 軟件,則處理器需要從VMX root operation 切換到VMX non-root operation 模式運行,這個行為被稱為“VM-entry”。
  本章詳細地講解處理器在執行VM-entry 操作時的每個流程。例如,在VM-entry 時會檢查VMCS 結構內字段配置是否閤理,並且加載guest 的運行環境。處理器也會根據VMCS 內字段來控製guest 軟件的運行。
  第5 章 VM-exit 處理
  在guest 運行過程中,會因為某些事件而被迫返迴host 環境。處理器由VMX nonroot operation 模式切換迴VMX root operation 模式,這個行為被稱為“VM-exit”。
  本章詳細地講解處理器在執行VM-exit 操作時的每個流程。例如,在VM-exit 處理器的相應狀態信息會得到更新,guest 的環境信息會保存在VMCS 結構內的guest-state 區域,並且從host-state 區域加載host 環境信息。最後轉入host 入口執行VMM 的管理代碼。
  第6 章 內存虛擬化
  VMX 架構引進瞭EPT 機製來實現對物理內存的虛擬化管理,使得每個VM 在物理平颱上擁有自己獨立的物理內存區域,而不受VMM 及其他VM 的乾擾。同樣也避免瞭VM 對VMM 的乾擾。
  本章全麵講解瞭EPT 機製的實現細節,也著重介紹瞭VMX 架構下的cache 管理。在隨書例子中,我們實現瞭EPT 機製來管理VM 內存。
  第7 章 中斷虛擬化
  VMX 架構下也實現瞭對local APIC 的虛擬化管理,引進瞭兩個重要的頁麵:APICaccess page 頁麵與virtual-APIC page 頁麵。因此而形成瞭virtual-APIC 的概念。它是物理平颱上的local APIC 的shadow。
  在這一章裏,我們將看到處理器如何處理APIC-access page 與virtual-APIC page 之間的關係,將對APIC-access page 的訪問轉化為對virtual-APIC page 的訪問。從而實現訪問和管理virtual-APIC 組件。
  本章也著重介紹瞭VMM 應該如何處理guest 産生的異常與任務切換。最後以實際例子來展現VMM 如何監控INT 指令及NMI 與外部中斷。
  如何閱讀本書
  本書將理論結閤實際地進行講解,但每章內容還是會有側重點。以章節的篇幅來說,第2 章至第5 章偏重於理論知識。而第1 章、第6 章和第7 章偏於實際例子。
  因此,如果讀者並不想通篇閱讀,可以選擇偏重理論知識的章節來看。第6 章與第7章介紹的重點知識主要是EPT(擴展頁錶)與local APIC 虛擬化。這兩個內容也是必須掌握的。
  在第1 章中並不涉及VMX 架構知識,而是通過代碼的講解來介紹基礎平颱。書中的全部例子將構建於這個基礎平颱之上。如果讀者對此章不感興趣,可以直接跳過。但是,如果讀者對一些OS 的基礎元素感興趣,大可詳細加以閱讀。
  讀者對象
  讀者最好有一些x86/x64 體係知識基礎,如果感到這方麵的基礎知識相對薄弱,可以閱讀作者的另一本著作《x86/x64 體係探索及編程》或者Intel 官方手冊。
  如果讀者隻是想瞭解VMX 的理論知識,那麼可以選擇相應章節,對匯編知識的要求不高。如果讀者想深入全麵地瞭解整個VMX 架構知識,希望能夠仔細閱讀所有章節(第1 章可以略過),那麼需要對匯編有一定瞭解。
  隨書例子
  書中的每個章節有若乾例子, 全書共14 個例子。
  源碼包解壓後有7 個chapXX 目錄,對應於每一章。還有commom、inc 以及lib 目錄,存放所有例子共用的代碼。每個chapXX 目錄下有多個ex 實例目錄,對應於每個例子。以第1 章為例,chap01 目錄下有ex1-1 和ex1-2 實例目錄。
  每個實例目錄裏有下麵的文件。
  Bs:bochs 的配置文件。
  Build:一個DOS 批處理的編譯工具,用來編譯源碼。
  c.img:硬盤與U 盤映像文件。
  demo。img:軟盤映像文件。
  ex.asm:例子實體代碼的匯編源文件。
  ex.inc:例子實體代碼頭文件。
  在時間寬裕的情況下,我會在Windows 平颱上用C 語言來實現代碼示例。目前已經寫瞭大部分代碼,但為瞭保證代碼的正確性,力求在所有代碼完成後再放齣來。
  緻謝
  感謝電子工業齣版社博文視點公司的全體工作人員,特彆感謝本書的策劃編輯李冰,正是有你們的辛勤勞動,纔使得本書可以順利齣版。
  鄧誌
  2014 年5 月


《算法的煉金術:從理論到實踐的思維重塑》 內容簡介: 在信息爆炸的時代,數據如同奔騰的河流,而算法,便是駕馭這條河流、提取其價值的智慧船槳。然而,我們常將算法視為冰冷的數學公式或復雜的程序代碼,卻忽略瞭其背後蘊含的深層思維模式——一種將復雜問題化繁為簡、從有限信息中推導齣最優解的強大能力。本書《算法的煉金術》旨在突破傳統算法教程的局限,深入探索算法的本質,揭示驅動它們運行的思維邏輯,並指導讀者如何將這種“煉金術”般的思維模式,靈活運用到解決現實世界中的各類挑戰。 本書並非枯燥的理論堆砌,更非炫技式的代碼展示。相反,它將帶領讀者踏上一段引人入勝的探索之旅,從最基礎的邏輯推理齣發,逐步構建起一套能夠分析、設計和優化算法的思維框架。我們將以通俗易懂的語言,輔以生動形象的比喻和貼近生活的案例,層層剖析各種經典算法的核心思想,並著重講解它們是如何將抽象的問題轉化為可執行的步驟。 第一篇:思維的基石——從零開始構建算法思維 在這一篇中,我們將暫時放下對具體算法的執念,而是專注於培養構建算法思維所需的核心能力。 第一章:定義問題,洞察本質。 任何成功的算法都始於對問題的深刻理解。本章將探討如何清晰、準確地定義一個問題,識彆其關鍵約束和目標,並學會將其抽象化,剝離無關的乾擾信息。我們將學習提問的藝術,以及如何從模糊的需求中提煉齣結構化的任務。通過分析一些日常生活中常見的“小問題”,如“如何最快地到達目的地?”或“如何閤理分配資源以滿足最大需求?”,來體會問題定義的重要性。 第二章:分解與組閤,化整為零的智慧。 麵對復雜問題,分解是關鍵。本章將介紹分治策略的思維,學習如何將一個龐大的問題拆解成若乾個相互獨立或關聯性較小的子問題,然後逐個擊破。同時,我們也會探討如何將這些子問題的解決方案有效地組閤起來,形成整體的最優解。將以簡單的例子,如排序不同數量的物品,或者在迷宮中尋找齣路,來闡釋這種分解與組閤的思維過程。 第三章:模式識彆與抽象,通往通用的路徑。 許多看似不同的問題,其背後可能隱藏著相似的結構和模式。本章將引導讀者學會識彆這些模式,並從中提煉齣抽象的解決方案,從而將特定問題的解決方法推廣到更廣泛的場景。我們將探討如何從重復齣現的現象中總結齣規律,以及如何設計通用的模型來解決一類問題。例如,通過比較幾種不同的搜索場景,來理解“搜索”這一抽象概念的核心。 第四章:量化思考,度量效率的尺度。 算法的優劣,最終體現在其效率上。本章將介紹量化思考的重要性,學習如何從時間和空間兩個維度去評估一個解決方案的成本。我們將初步接觸“復雜度”的概念,理解為什麼有些方法在處理大量數據時會變得不堪重負,而另一些則能保持高效。通過簡單的計數和估算,培養對“快”與“慢”、“大”與“小”的直觀感知。 第二篇:算法的熔爐——經典算法的思維解碼 在奠定瞭堅實的思維基礎後,我們將進入算法的“熔爐”,深入剖析那些久經考驗的經典算法,重點不在於記住代碼,而在於理解其背後的設計哲學和解決問題的思路。 第五章:綫性思維的藝術——查找與遍曆。 本章將聚焦於綫性數據結構,如數組和鏈錶。我們將深入理解綫性查找和二分查找的原理,並體會它們在不同場景下的適用性。重點會放在二分查找如何利用數據的有序性,通過不斷縮小查找範圍來達到指數級加速。同時,我們也將探討各種遍曆方法,如深度優先和廣度優先,理解它們在圖和樹結構中的應用,以及如何用它們來探索信息空間。 第六章:排序的哲學——從暴力到精妙。 排序是計算機科學中最基本的問題之一。本章將介紹多種排序算法,從最直觀的冒泡排序、選擇排序,到更高效的插入排序、快速排序和歸並排序。我們不會糾結於代碼細節,而是側重於理解每種算法的設計思想:冒泡排序如何通過交換相鄰元素逐步推進;插入排序如何構建有序序列;快速排序如何進行“分而治之”的關鍵步驟;歸並排序如何通過閤並兩個有序子序列來構建整體有序。 第七章:路徑的尋覓——圖論中的智慧。 圖算法是解決網絡、關係和連接問題的利器。本章將介紹圖的基本概念,並重點講解幾種經典的圖算法:Dijkstra算法如何找到最短路徑;Floyd-Warshall算法如何計算所有頂點對之間的最短路徑;Prim算法和Kruskal算法如何構建最小生成樹。我們將通過實際的路綫規劃、社交網絡分析等例子,來體會這些算法如何解決“連接”和“距離”的問題。 第八章:動態規劃的精妙——最優子結構與重疊子問題。 動態規劃是解決具有重疊子問題和最優子結構特性的復雜問題的高級技巧。本章將揭示動態規劃的“魔法”所在,通過深入分析斐波那契數列、背包問題、最長公共子序列等經典案例,來展示如何通過填錶(記憶化)的方式,將大規模問題分解為一係列可以高效計算的子問題,並利用子問題的解來構建最終的最優解。 第九章:貪婪的策略——局部最優的全局魅力。 貪婪算法是一種直觀的解決方法,它在每一步都做齣當前看起來最優的選擇,期望以此達到全局最優。本章將探討貪婪算法的設計思路,分析哪些問題適閤采用貪婪策略,以及其潛在的局限性。我們將通過活動選擇問題、霍夫曼編碼等例子,來理解貪婪算法的魅力與適用條件。 第三篇:煉金術的應用——算法思維的實踐與創新 在掌握瞭算法的思維模式和經典算法的精髓後,本篇將帶領讀者將這些知識轉化為解決實際問題的強大工具。 第十章:設計你自己的算法——從需求到解決方案。 本章將提供一個係統性的框架,指導讀者如何從一個實際需求齣發,運用前麵學到的算法思維,逐步設計齣有效的解決方案。我們將學習如何將問題轉化為算法模型,選擇閤適的算法或組閤算法,並考慮算法的效率和可擴展性。通過幾個綜閤性的案例,如“如何設計一個推薦係統”或“如何優化物流配送路綫”,來展示整個設計過程。 第十一章:算法的優化與調優——讓效率更上一層樓。 任何算法在初次設計時都可能存在改進空間。本章將介紹常見的算法優化技術,如數據結構的選擇、算法的改進(例如,優化快速排序的pivot選擇),以及空間復雜度的優化。我們將學習如何通過分析算法的瓶頸,來尋找提高效率的途徑。 第十二章:算法在不同領域的應用——思維的邊界拓展。 本章將超越純粹的計算機科學範疇,展示算法思維如何在機器學習、數據挖掘、人工智能、金融分析、生物信息學等眾多領域發揮關鍵作用。我們將通過案例研究,來揭示算法如何驅動著這些前沿科學的發展,並激發讀者在自己感興趣的領域中應用算法思維的可能性。 第十三章:創造性的思維——挑戰與未來。 算法的設計並非一成不變。本章將鼓勵讀者跳齣既有框架,思考算法的局限性,並探索創新的可能性。我們將討論計算的邊界,以及如何處理那些目前算法難以解決的復雜問題。最後,本章將展望算法的未來發展趨勢,如與人工智能、大數據、量子計算的結閤,激發讀者對算法世界更深層次的探索。 《算法的煉金術》不僅僅是一本書,它更像是一個思維的訓練營。通過閱讀本書,你將學會如何像一位煉金術士一樣,將日常的、看似平凡的問題,通過邏輯的熔爐、思維的錘煉,轉化為高效、優雅、富有洞察力的解決方案。這不是關於“如何寫代碼”,而是關於“如何思考”。無論你身處技術領域,還是在其他需要解決復雜問題的行業,本書都將為你提供一套強大的思維武器,讓你在知識的海洋中,乘風破浪,煉就屬於自己的智慧金丹。

用戶評價

評分

剛收到這本書,迫不及待翻開,但發現封麵和書名似乎和我的預期有些齣入。我原本以為這是一本關於如何高效管理和部署企業級服務器集群的書籍,特彆是那種能夠顯著提升資源利用率、簡化運維流程的方案。我一直在尋找能幫助我優化現有IT架構,實現彈性擴展,同時又能降低硬件成本和能耗的解決方案。書中那些深入探討資源池化、自動化部署、負載均衡策略,以及如何利用虛擬化技術構建高可用性、容災備份係統的章節,對我來說纔是真正有價值的內容。例如,我特彆希望能看到關於如何通過虛擬化技術實現跨數據中心遷移,以及如何構建混閤雲環境的實戰指導。而且,我一直在關注一些最新的容器化技術,比如Kubernetes,並希望瞭解它們與傳統虛擬化技術的結閤應用,如何進一步提升應用的部署和管理效率。這本書如果能提供這方麵的內容,將會極大地方便我的工作。

評分

我是一名軟件開發者,近期對如何更有效地進行軟件測試和開發環境的搭建産生瞭濃厚的興趣。我希望找到一本能夠詳細介紹如何利用虛擬化技術創建隔離的、可重復的測試環境的書籍。理想中的內容應該包含如何快速部署各種操作係統和中間件,如何模擬不同的網絡環境和硬件配置,以及如何方便地迴滾到之前的狀態。同時,我對於如何利用虛擬化技術構建一緻性的開發和測試環境,以解決“在我機器上可以運行”的問題也抱有很大期望。這本書如果能深入講解如何配置虛擬機以支持CI/CD流水綫,如何實現自動化構建、測試和部署,將對我非常有幫助。我一直希望能夠找到一本詳盡的指南,讓我能夠深入理解虛擬化技術在軟件開發生命周期中的應用,特彆是如何在保證開發效率的同時,最大限度地降低測試成本和提高軟件質量。

評分

這本書的書名讓我聯想到瞭一係列關於雲計算基礎設施構建的知識。我長期以來一直關注如何構建和管理大規模的雲平颱,包括虛擬機的創建、網絡配置、存儲管理以及安全防護等。我希望能在這本書中找到關於如何利用虛擬化技術實現資源隔離、提高係統穩定性和安全性,以及如何通過自動化工具來簡化雲平颱運維的詳細介紹。特彆是關於如何設計和實現私有雲、公有雲以及混閤雲架構的實踐經驗,以及如何在這三種模式下進行資源調度和成本優化的策略,是我非常期待的內容。書中如果能詳細闡述如何利用虛擬化技術實現跨地域的數據同步和災難恢復,以及如何針對不同的應用場景設計最優化的虛擬化部署方案,那將對我非常有指導意義。

評分

我是一名 IT 架構師,最近正在研究如何優化企業的數據中心資源利用率,並降低運營成本。我原本以為這本書會深入探討如何通過虛擬化技術實現服務器整閤,提高硬件使用率,以及如何利用快照和剋隆技術來加速新服務的部署。我還期待看到關於如何設計和部署高效的存儲虛擬化解決方案,以及如何構建靈活的網絡虛擬化環境的內容。尤其關注如何利用虛擬化技術實現業務的連續性和災難恢復能力,並詳細瞭解不同虛擬化平颱在性能、穩定性、安全性和成本方麵的優劣。我一直在尋找能夠提供一套完整的虛擬化解決方案,從硬件選擇到軟件配置,再到運維管理的全方位指導,希望能幫助我構建一個更加現代化、高效且具有成本效益的數據中心。

評分

近期我對於如何提升企業 IT 係統的安全性和隔離性産生瞭濃厚的興趣,並希望通過虛擬化技術來實現這一目標。我期待在這本書中找到關於如何利用虛擬化技術來構建安全的沙箱環境,以防止惡意軟件的傳播,以及如何通過虛擬機隔離敏感數據和關鍵業務係統。我非常希望書中能夠深入探討如何利用虛擬化技術實現網絡流量的隔離和監控,以及如何針對不同的安全威脅設計有效的防禦策略。我一直關注最新的安全技術進展,並希望瞭解虛擬化技術如何與這些技術結閤,例如入侵檢測係統、防火牆等,共同構建一個更加堅固的信息安全防綫。如果這本書能夠提供關於虛擬機安全加固、安全策略製定以及安全審計等方麵的實戰指導,將對我非常有價值。

評分

評價可以領京豆,湊字數

評分

正版書,有帶塑封,值得購買,還沒看。

評分

用來泡水喝的,比超市劃算。

評分

非常好,書很新,喜歡,好評

評分

非常不錯,超級喜歡實用的一本書。

評分

處理器虛擬化技術,對著manual看還好瞭

評分

無單獨外包裝,與購買的其他書相比,背部有明顯摺痕,作為愛書之人拿到手時自然有幾分不悅,評價不涉及書籍本身質量

評分

不錯, 雖然是湊單買的 但是還是一直想買這書

評分

買過作者另一本x64的書,一看到這本又手癢瞭,書是好書,隻是現在的書真心貴,如果不是做活動入手按原價那真要掂量掂量。

相關圖書

本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 book.cndgn.com All Rights Reserved. 新城书站 版權所有