QEMU源码全解析 —— CPU虚拟化(4)

123 篇文章 36 订阅 ¥49.90 ¥99.00

接前一篇文章:

本文内容参考:

《趣谈 Linux操作系统 》 —— 刘超, 极客时间

QEMU /KVM》源码解析与应用 —— 李强,机械工业出版社

特此致谢!

一、CPU虚拟化介绍

3. VMCS介绍

上一回初步讲解了VMCS区域的内容,如下图所示:

上一回讲解了前8个字节(0~7),本回对于从第8个字节开始的VMCS数据区进行详细介绍。

VMCS数据区总共有6个区域,下面对每个区域分别做简要介绍。

(1)Guest-state区域

进行VM Entry时, 虚拟机 处理器的状态信息从这个区域加载;进行VM Exit时,虚拟机的当前状态信息写入到这个区域。在这个区域中,典型的有各个寄存器的状态以及一些处理器的状态。

完整的Guest-state区域如下表所示:

CR0 CR3 CR4
DR7
RSP RIP RPLAGS
CS Selector Base Address Segment Limit Access Right
SS Selector Base Address Segment Limit Access Right
DS Selector Base Address Segment Limit Access Right
ES Selector Base Address Segment Limit Access Right
FS Selector Base Address Segment Limit Access Right
GS Selector Base Address Segment Limit Access Right
LDTR Selector Base Address Segment Limit Access Right
TR Selector Base Address Segment Limit Access Right
GDTR Base Address Segment Limit
IDTR Base Address Segment Limit
IA32_DEBUGCTL IA32_SYSENTER_CS IA32_SYSENTER_ESP IA32_SYSENTER_EIP
IA32_PERF_GLOBAL_CTRL IA32_PAT IA32_EFER IA32_BNDCFGS
SMBASE
Activity state Interruptibility
Pending debug exceptions
VMCS link pointer
VMX-preemption timer value
Page-directory-pointer-table entries PDTE0 PDTE1 PDTE2 PDTE3
Guest interrupt status
PML index

(2)Host-state区域

当发生VM Exit的时候,需要切换到VMM的上下文运行,此时处理器的状态信息从这个区域加载。

完整的Host-state区域如下表所示:

CR0 CR3 CR4
RSP RIP
CS Selector
SS Selector
DS Selector
ES Selector
FS Selector Base Address
GS Selector Base Address
TR Selector Base Address
GDTR Base Address
IDTR Base Address
IA32_SYSENTER_CS IA32_SYSENTER_ESP IA32_SYSENTER_EIP
IA32_PERF_GLOBAL_CTRL IA32_PAT IA32_EFER

(3)VM-execution控制区域

这个区域用来控制处理器在进入VM Entry之后的处理器行为。这个区域很庞大,包含了多种控制,如哪些事件会引起VM Exit,一个异常位图指示哪些异常会发生VM Exit,APIC的虚拟化控制等。

完整的VM-execution control区域如下图所示:

VMCS数据区余下区域的介绍请看下回。

举报

选择你想要举报的内容(必选)
  • 内容涉黄
  • 政治相关
  • 内容抄袭
  • 涉嫌广告
  • 内容侵权
  • 侮辱谩骂
  • 样式问题
  • 其他