處理器虛擬化技術

處理器虛擬化技術 pdf epub mobi txt 电子书 下载 2025

鄧誌 著
想要找书就要到 求知書站
立刻按 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 月


用户评价

评分

囤书。。。。哈哈,活动真不错。留着养老慢慢看。

评分

书还没看 但是正需要觉得应该不错

评分

给别人买的,不清楚怎么样

评分

很厚很厚的书啊很厚很厚的书啊

评分

一个人躲在房子后的渠里哭去了,为什么?为什么不给我买,为什么他们家的孩子可以有?为什么我的父亲是农民,为什么?心里憋了一股劲,或许那时候是恨父亲,恨自己为什么生在那股劲让我一直保持在前几名。后来家里情况有一点好转了,记不清是哪一年里。生日那天,收到了一份特别的礼物,一套小霸王学习机带键盘的那种。终于,我可以自己敲出那

评分

作者是我朋友,写的挺好的,就是买来支持他的。

评分

必备书籍,准备看。。。。

评分

先照着书学着看看吧。

评分

一个人躲在房子后的渠里哭去了,为什么?为什么不给我买,为什么他们家的孩子可以有?为什么我的父亲是农民,为什么?心里憋了一股劲,或许那时候是恨父亲,恨自己为什么生在那股劲让我一直保持在前几名。后来家里情况有一点好转了,记不清是哪一年里。生日那天,收到了一份特别的礼物,一套小霸王学习机带键盘的那种。终于,我可以自己敲出那

相关图书

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

© 2025 tushu.tinynews.org All Rights Reserved. 求知書站 版权所有