图书介绍

处理器虚拟化技术【2025|PDF下载-Epub版本|mobi电子书|kindle百度云盘下载】

处理器虚拟化技术
  • 邓志著 著
  • 出版社: 北京:电子工业出版社
  • ISBN:9787121230196
  • 出版时间:2014
  • 标注页数:646页
  • 文件大小:98MB
  • 文件页数:669页
  • 主题词:微处理器-虚拟技术

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

处理器虚拟化技术PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第1章 系统平台1

1.1 环境及工具1

1.1.1 使用VMware2

1.1.2 使用Bochs4

1.1.3 在真实机器上运行4

1.1.4 Build工具4

1.2 64位与32位代码的混合编译7

1.2.1 使用符号_X647

1.2.2 指令操作数8

1.2.3 64-bit模式下其他指令处理11

1.2.4 函数重定义表15

1.3 地址空间17

1.4 数据结构23

1.4.1 PCB结构23

1.4.2 LSB结构37

1.4.3 初始化PCB38

1.4.4 SDA结构42

1.4.5 初始化SDA56

1.4.6 DRS结构57

1.5 系统启动59

1.5.1 Boot阶段59

1.5.2 stage1阶段62

1.5.2.1 stage1阶段的多处理器初始化66

1.5.2.2 BSP的收尾工作68

1.5.2.3 APs的stage1阶段工作70

1.5.3 stage2阶段73

1.5.3.1 BSP在stage2最后处理80

1.5.3.2 APs在stage2阶段收尾工作81

1.5.4 stage3阶段83

1.5.4.1 BSP在stage3阶段的最后工作87

1.5.4.2 APs在stage3阶段收尾工作88

1.5.5 例子1-190

1.6 系统机制91

1.6.1 分页机制91

1.6.1.1 PAE分页模式实现91

1.6.1.2 IA-32e分页模式实现98

1.6.2 多处理器机制102

1.6.2.1 调度任务102

1.6.2.2 处理器切换109

1.6.3 调试记录机制113

1.6.3.1 例子1-2120

1.6.3.2 运行结果121

第2章 VMX架构基础122

2.1 虚拟化概述123

2.1.1 虚拟设备124

2.1.2 地址转换125

2.1.3 设备的I/O访问125

2.2 VMX架构126

2.2.1 VMM与VM127

2.2.2 VMXON与VMCS区域127

2.2.3 检测VMX支持128

2.2.4 开启VMX进入允许128

2.3 VMX operation模式129

2.3.1 进入VMX operation模式130

2.3.2 进入VMX operation的制约131

2.3.2.1 IA32 FEATURE CONTROL寄存器131

2.3.2.2 CR0与CR4固定位133

2.3.2.3 A20M模式135

2.3.3 设置VMXON区域135

2.3.3.1 分配VMXON区域135

2.3.3.2 VMXON区域初始设置135

2.3.4 退出VMX operation模式136

2.4 VMX operation模式切换137

2.4.1 VM entry138

2.4.2 VM exit139

2.4.3 SMM双重监控处理下140

2.5 VMX能力的检测141

2.5.1 检测是否支持VMX141

2.5.2 通过MSR组检查VMX能力141

2.5.3 例子2-1146

2.5.4 基本信息检测147

2.5.5 允许为0以及允许为1位149

2.5.5.1 决定VMX支持的功能150

2.5.5.2 控制字段设置算法150

2.5.6 VM-execution控制字段151

2.5.6.1 Pin-based VM-execution control字段151

2.5.6.2 primary processor-based VM-execution control字段152

2.5.6.3 secondary processor-based VM-execution control字段152

2.5.7 VM-exit control字段152

2.5.8 VM-entry control字段153

2.5.9 VM-function control字段153

2.5.10 CR0与CR4的固定位154

2.5.10.1 CR0与CR4寄存器设置算法155

2.5.11 VMX杂项信息156

2.5.12 VMCS区域字段index值157

2.5.13 VPID与EPT能力157

2.6 VMX指令158

2.6.1 VMX指令执行环境159

2.6.2 指令执行的状态159

2.6.3 VMfailValid事件原因160

2.6.4 指令异常优先级161

2.6.5 VMCS管理指令161

2.6.5.1 VMPTRLD指令162

2.6.5.2 VMPTRST指令162

2.6.5.3 VMCLEAR指令162

2.6.5.4 VMREAD指令163

2.6.5.5 VMWRITE指令165

2.6.6 VMX模式管理指令166

2.6.6.1 VMXON指令167

2.6.6.2 VMXOFF指令167

2.6.6.3 VMLAUNCH指令167

2.6.6.4 VMRESUME指令168

2.6.6.5 返回到executive monitor168

2.6.7 cache刷新指令169

2.6.7.1 INVEPT指令170

2.6.7.2 INVVPID指令170

2.6.8 调用服务例程指令171

2.6.8.1 VMCALL指令171

2.6.8.2 VMFUNC指令172

第3章 VMCS结构173

3.1 VMCS状态173

3.1.1 activity属性174

3.1.2 current属性174

3.1.3 launch属性174

3.2 VMCS区域175

3.2.1 VMXON区域176

3.2.2 Executive-VMCS与SMM-transfer VMCS176

3.2.3 VMCS区域格式176

3.3 访问VMCS字段177

3.3.1 字段ID格式178

3.3.2 不同宽度的字段处理179

3.4 字段ID值181

3.4.1 16位字段ID181

3.4.2 64位字段ID182

3.4.3 32位字段ID184

3.4.4 natural-width字段ID185

3.5 VM-execution控制类字段187

3.5.1 Pin-based VM-execution control字段188

3.5.2 processor-based VM-execution control字段190

3.5.2.1 primary processor-based VM-execution control字段191

3.5.2.2 secondary processor-based VM-execution control字段195

3.5.3 exception bitmap字段200

3.5.4 PFEC_MASK与PFEC_MATCH字段200

3.5.5 I/O bitmap address字段202

3.5.6 TSC offset字段202

3.5.7 guest/host mask与read shadow字段202

3.5.8 CR3-target字段203

3.5.9 APIC-access address字段203

3.5.10 virtual-APIC address字段204

3.5.11 TPR threshold字段204

3.5.12 EOI-exit bitmap字段204

3.5.13 posted-interrupt notification vector字段205

3.5.14 posted-interrupt descriptor address字段205

3.5.15 MSR bitmap address字段205

3.5.16 executive-VMCS pointer206

3.5.17 EPTP字段206

3.5.18 virtual-processor identifier字段207

3.5.19 PLE_Gap与PLE_Window字段207

3.5.20 VM-function control字段209

3.5.21 EPTP-list address字段210

3.6 VM-entry控制类字段210

3.6.1 VM-entry control字段211

3.6.2 VM-entry MSR-load字段214

3.6.3 事件注入控制字段214

3.6.3.1 VM-entry interruption information字段215

3.6.3.2 VM-entry exception error code字段217

3.6.3.3 VM-entry instruction length字段217

3.7 VM-exit控制类字段218

3.7.1 VM-exit control字段218

3.7.2 VM-exit MSR-store与MSR-load字段220

3.8 guest-state区域字段221

3.8.1 段寄存器字段224

3.8.1.1 access right字段224

3.8.2 GDTR与IDTR字段229

3.8.3 MSR字段229

3.8.4 SMBASE字段229

3.8.5 activity state字段230

3.8.6 interruptibility state字段232

3.8.7 pending debug exceptions字段235

3.8.7.1 #DB异常的处理237

3.8.8 VMCS linkpointer字段243

3.8.9 VMX-preemption timer value字段243

3.8.10 PDPTEs字段243

3.8.11 guest interrupt status字段244

3.9 host-state区域字段245

3.10 VM-exit信息类字段247

3.10.1 基本信息类字段248

3.10.1.1 Exit reason字段248

3.10.1.2 VM-exit原因249

3.10.1.3 Exit qualification字段255

3.10.1.4 由某些指令引发的VM-exit256

3.10.1.5 由#DB异常引发的VM-exit256

3.10.1.6 #PF异常引发的VM-exit257

3.10.1.7 由SIPI引发的VM-exit257

3.10.1.8 由I/O SMI引发的VM-exit257

3.10.1.9 由任务切换引发的VM-exit258

3.10.1.10 访问控制寄存器引发的VM-exit259

3.10.1.11 由MOV-DR指令引发的VM-exit260

3.10.1.12 由I/O指令引发的VM-exit260

3.10.1.13 由于访问APIC-access page引发的VM-exit261

3.10.1.14 由EPT violation引发的VM-exit262

3.10.1.15 由EOI虚拟化引发的VM-exit264

3.10.1.16 由APIC-write引发的VM-exit264

3.10.1.17 guest-linear address字段264

3.10.1.18 guest-physical address字段265

3.10.2 直接向量事件类信息字段265

3.10.2.1 VM-exit interruption information字段265

3.10.2.2 VM-exit interruption error code字段267

3.10.3 间接向量事件类信息字段267

3.10.3.1 IDT-vectoring information字段268

3.10.3.2 IDT-vectoring error code字段269

3.10.4 指令类信息字段269

3.10.4.1 VM-exit instruction length字段269

3.10.4.2 VM-exit instruction information字段272

3.10.5 I/O SMI信息类字段280

3.10.6 指令错误类字段280

3.11 VMM初始化实例280

3.11.1 VMCS相关的数据结构281

3.11.1.1 VMB结构281

3.11.1.2 VSB结构284

3.11.1.3 VMCS buffer结构287

3.11.2 初始化VMXON区域288

3.11.3 初始化VMCS区域289

3.11.3.1 分配VMCS区域290

3.11.3.2 VMCS初始化模式291

3.11.3.3 VMCS buffer初始化293

3.11.4 例子3-1297

第4章 VM-entry处理301

4.1 发起VM-entry操作302

4.2 VM-entry执行流程303

4.3 指令执行的基本检查303

4.4 检查控制区域及host-state区域305

4.4.1 VM-execution控制区域检查305

4.4.1.1 检查pin-based VM-execution contro1字段306

4.4.1.2 检查primary processor-basedVM-execution control字段306

4.4.1.3 检查secondary processor-based VM-execution control字段307

4.4.1.4 检查CR3-target字段308

4.4.2 VM-exit控制区域检查308

4.4.2.1 VM-exit control字段的检查308

4.4.2.2 MSR-store与MSR-load相关字段的检查308

4.4.3 VM-entry控制区域检查309

4.4.3.1 VM-entry control字段的检查309

4.4.3.2 MSR-load相关字段的检查309

4.4.3.3 事件注入相关字段的检查309

4.4.4 Host-state区域的检查310

4.4.4.1 Host控制寄存器字段的检查310

4.4.4.2 Host-RIP的检查310

4.4.4.3 段selector字段的检查311

4.4.4.4 段基址字段的检查311

4.4.4.5 MSR字段的检查311

4.5 检查guest-state区域311

4.5.1 检查控制寄存器字段312

4.5.2 检查RIP与RFLAGS字段312

4.5.3 检查DR7与IA32_DEBUGCTL字段313

4.5.4 检查段寄存器字段313

4.5.4.1 virtual-8086模式下的检查314

4.5.4.2 unrestricted guest位为0时的检查315

4.5.4.3 unrestricted guest位为1时的检查318

4.5.5 检查GDTR与IDTR字段320

4.5.6 检查MSR字段320

4.5.7 检查activity state字段321

4.5.8 检查interruptibility state字段321

4.5.9 检查pending debug exception字段322

4.5.10 检查VMCS link pointer字段322

4.5.11 检查PDPTE字段323

4.5.11.1 由加载CR3引发的PDPTE检查323

4.6 检查guest state引起的VM-entry失败324

4.7 加载guest环境信息324

4.7.1 加载控制寄存器325

4.7.2 加载DR7与IA32_DEBUGCTL325

4.7.3 加载MSR325

4.7.4 SMBASE字段处理326

4.7.5 加载段寄存器与描述符表寄存器326

4.7.5.1 unusable段寄存器327

4.7.5.2 加载GDTR与IDTR327

4.7.6 加载RIP、RSP和RFLAGS327

4.7.7 加载PDPTE表项327

4.8 刷新处理器cache328

4.9 更新Vritual-APIC状态328

4.9.1 PPR虚拟化329

4.9.2 虚拟中断评估与delivery329

4.10 加载MSR-load列表329

4.10 IA32_EFER的加载处理330

4.10.2 其他MSR字段的加载处理331

4.11 由加载guest state引起的VM-entry失败331

4.12 事件注入332

4.12.1 注入事件的delivery335

4.12.1.1 保护模式下的事件注入335

4.12.1.2 实模式下的事件注入338

4.12.1.3 virtual-8086模式下的事件注入338

4.12.2 注入事件的间接VM-exit339

4.13 执行pending debug exception341

4.13.1 注入事件下的#DB异常delivery342

4.13.2 例子4-1346

4.13.3 非注入事件下的#DB异常delivery351

4.14 使用MTF VM-exit功能354

4.14.1 注入事件下的MTF VM-exit354

4.14.2 非注入事件下的MTF VM-exit355

4.14.3 MTF VM-exit与其他VM-exit355

4.14.4 MTF VM-exit的优先级别356

4.14.5 例子4-2356

4.15 VM-entry后直接导致VM-exit的事件362

4.15.1 VM-exit事件的优先级别362

4.15.2 TPR below threshold VM-exit363

4.15.3 pending MTF VM-exit364

4.15.4 由pending debug excep tion引发的VM-exit364

4.15.5 VMX-preemption timer364

4.15.6 NMI-window exiting366

4.15.7 interrupt-window exiting367

4.16 处理器的可中断状态367

4.16.1 中断的阻塞状态367

4.16.2 阻塞状态的解除368

4.16.3 中断的阻塞369

4.16.4 VM-entry后的可中断状态370

4.17 处理器的活动状态370

4.17.1 active与inactive状态371

4.17.2 事件的阻塞371

4.17.3 inactive状态的唤醒372

4.17.4 VM-entry后的活动状态372

4.18 VM-entry的机器检查事件373

第5章 VM-exit处理374

5.1 无条件引发VM-exit的指令374

5.2 有条件引发VM-exit的指令375

5.3 引发VM-exit的事件377

5.4 由于VM-entry失败导致的VM-exit380

5.5 例子5-1380

5.6 指令引发的异常与VM-exit385

5.6.1 优先级高于VM-exit的异常386

5.6.2 VM-exit优先级高于指令的异常387

5.6.3 例子5-2387

5.7 VM-exit的处理流程389

5.8 记录VM-exit的相关信息390

5.9 更新VM-entry区域字段391

5.10 更新处理器状态信息391

5.10.1 直接VM-exit事件下的状态更新393

5.10.2 间接VM-exit事件下的状态更新394

5.10.3 其他情况下的状态更新395

5.11 保存guest环境信息397

5.11.1 保存控制寄存器,debug寄存器及MSR397

5.11.2 保存RIP与RSP397

5.11.3 保存RFLAGS399

5.11.4 保存段寄存器399

5.11.5 保存GDTR与IDTR400

5.11.6 保存activity与interruptibility状态信息400

5.11.7 保存pending debug exception信息400

5.11.8 保存VMX-preemption timer值402

5.11.9 保存PDPTE402

5.11.10 保存SMBASE与VMCS-1ink pointer403

5.12 保存MSR-store列表403

5.13 加载host环境404

5.13.1 加载控制寄存器404

5.13.2 加载DR7与MSR405

5.13.3 加载host段寄存器405

5.13.3.1 加载selector406

5.13.3.2 加载base406

5.13.3.3 加载limit406

5.13.3.4 加载access rights407

5.13.4 加载GDTR与IDTR408

5.13.5 加载RIP,RSP及RFLAGS408

5.13.6 加载PDPTE408

5.14 更新host处理器状态信息409

5.15 刷新处理器cache信息409

5.16 加载MSR-load列表410

5.17 VMX-abort411

第6章 内存虚拟化412

6.1 EPT(扩展页表)机制412

6.1.1 EPT机制概述413

6.1.1.1 guest分页机制与EPT413

6.1.2 EPT页表结构416

6.1.3 guest-physical address417

6.1.4 EPTP417

6.1.5 4K页面下的EPT页表结构418

6.1.6 2M页面下的EPT页表结构422

6.1.7 1G页面下的EPT页表结构424

6.1.8 EPT导致的VM-exit426

6.1.8.1 EPT violation426

6.1.8.2 EPT misconfiguration427

6.1.8.3 EPT页故障的优先级428

6.1.8.4 修复EPT页故障431

6.1.9 accessed与dirty标志位436

6.1.10 EPT内存类型438

6.1.11 EPTP switching440

6.1.1 2实现EPT机制442

6.2 Cache管理454

6.2.1 linear mapping(线性映射)455

6.2.2 guest-physical mapping(guest物理映射)456

6.2.3 combined mapping(合并映射)457

6.2.4 cache域458

6.2.5 cache建立463

6.2.6 cache刷新465

6.2.6.1 INVLPG指令刷新cache468

6.2.6.2 INVPCID指令刷新cache468

6.2.6.3 INVVPID指令刷新cache469

6.2.6.4 INVEPT指令刷新cache470

6.2.6.5 INVVPID指令使用指南470

6.2.6.6 INVEPT指令使用指南471

6.3 内存虚拟化管理473

6.3.1 分配物理内存473

6.3.2 实模式guest OS内存处理475

6.3.3 guest内存虚拟化476

6.3.3.1 guest虚拟地址转换477

6.3.3.2 guest OS的cache管理479

6.4 例子6-1482

6.4.1 GuestBoot模块483

6.4.2 GuestKernel模块486

6.4.3 VSB结构495

6.4.4 VMM初始化guest498

6.4.5 使用VMX-preemption timer503

6.4.6 host处理流程507

6.4.7 运行结果511

第7章 中断虚拟化522

7.1 异常处理522

7.1.1 反射异常给guest523

7.1.2 恢复guest异常526

7.1.2.1 直接恢复526

7.1.2.2 例子7-1527

7.1.2.3 恢复原始向量事件533

7.1.3 处理任务切换535

7.1.3.1 检查任务切换条件535

7.1.3.2 VMM处理任务切换537

7.1.3.3 恢复guest运行547

7.1.3.4 例子7-2551

7.2 Local APIC虚拟化554

7.2.1 监控guest访问local APIC554

7.2.1.1 例子7-3555

7.2.2 local APIC虚拟化机制571

7.2.3 APIC-access page573

7.2.3.1 APIC-access page的设置574

7.2.4 虚拟化x2APIC MSR组577

7.2.5 virtual-APIC page578

7.2.6 APIC-access VM-exit581

7.2.6.1 APIC-access VM-exit优先级别581

7.2.7 虚拟化读取APIC-access page582

7.2.8 虚拟化写入APIC-access page584

7.2.9 虚拟化基于MSR读local APIC587

7.2.10 虚拟化基于MSR写local APIC588

7.2.11 虚拟化基于CR8访问TPR589

7.2.12 local APIC虚拟化操作589

7.2.12.1 TPR虚拟化590

7.2.12.2 PPR虚拟化591

7.2.12.3 EOI虚拟化591

7.2.12.4 Self-IPI虚拟化593

7.2.13 虚拟中断的评估与delivery593

7.2.13.1 虚拟中断的评估594

7.2.13.2 虚拟中断的delivery596

7.2.14 posted-interrupt处理597

7.3 中断处理601

7.3.1 拦截INT指令601

7.3.1.1 处理IDTR.limit602

7.3.1.2 处理#GP异常605

7.3.1.3 处理中断delivery608

7.3.1.4 完成中断的delivery操作618

7.3.1.5 例子7-4628

7.3.2 处理NMI632

7.3.2.1 拦截NMI632

7.3.2.2 虚拟NMI634

7.3.3 处理外部中断634

7.3.3.1 拦截外部中断634

7.3.3.2 转发外部中断635

7.3.3.3 监控guest设置8259637

7.3.3.4 例子7-5642

热门推荐