发表于2024-11-23
《处理器虚拟化技术》针对在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.1
处理器虚拟化技术 下载 mobi epub pdf txt 电子书 格式
处理器虚拟化技术 下载 mobi pdf epub txt 电子书 格式 2024
处理器虚拟化技术 下载 mobi epub pdf 电子书还不错还不错还不错还不错
评分不错不错不错
评分写的好深,一点点学习中
评分不错 质量不错 留着看看
评分用来泡水喝的,比超市划算。
评分评价可以领京豆,凑字数
评分买了一星期,现在看到第四章吧,之前没学过php和其他语言,有的地方不知道是翻译缘故还是我理解能力差,感觉有的地方说一半不说一半,实在理解不了的倒是从php手册那看懂了
评分商品是否给力?快分享你的购买心得吧~
评分挺实用的,一直在京东,支持京东
处理器虚拟化技术 mobi epub pdf txt 电子书 格式下载 2024