ept技术_硬件虚拟化EPT技术手册(一)

本文介绍了EPT(Extended Page-Table)技术,一种用于硬件虚拟化的机制,它实现了Guest OS物理地址空间的隔离。当启用EPT时,Guest OS的物理地址(GPA)需要通过EPT转换才能访问实际物理地址。EPT异常包括EPT violation和EPT misconfiguration,其中EPT violation若配置了#VE,会触发虚拟异常由VMM处理。VMM对EPT异常的处理方式分为Guest自身处理页故障和VMM接管未映射的EPT异常两种情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

术语

0465d2ac556d85c6547e54569831b79b.png

EPT基本概述

EPT (extended page-table)机制提供了对GOS物理空间的虚拟化,通过EPT机制实现GOS物理地址空间的隔离。当使能EPT后,GOS使用的物理地址GPA并不是真实的内存物理地址,而是要通过EPT转换后才能访问真正的物理地址。EPT的页表数据结构与64位下的页表数据类似的,但是部分内容还是有不同,特别是页表格式。4K页表格式如下:

2dad6b514764b824aafdefd0c21114e0.png

当没有使能页模式时,CR0.PG = 0,GPA与GVA是一致的。当使能页模式时,CR0.PG = 1,GPA是GVA通过guest paging structures(GOS的页目录页表)转换而来的。

EPT 异常及处理

EPT异常包括EPT violation和EPT misconfiguration两种。

EPT misconfiguration是指访问的EPT表项内容是现在体系不支持的内容。

EPT violation是指不产生EPT misconfiguration时,包括访问EPT 的页表项表示的页是不存在的(页表项bits 2:0全为0)、访问权限与页表项中设置的访问权限不一致。

如果设置了VM-execution control 中的EPT-violation #VE,EPT violation会转化为虚拟异常,而不是导致VM退出,执行虚拟异常对应的IDT中记录的异常异常处理程序。虚拟异常的向量号是20,简写#VE,仅仅在VMX 的non-root态是才会产生。

当前VMM对EPT异常的处理有两种情况:

  • 第一种是guest本身缺页导致的页故障异常#PF由guest自身处理,该功能可以通过设置VMCS的页故障屏蔽码和页故障匹配码字段实现。
  • 第二种是guest映射的内存空间,但EPT未映射,则会产生EPT violation异常,EPT 相关异常由VMM接管,VMM会把虚拟机挂起。

产生EPT异常的线性地址和GPA地址可通过VMCS的0x0000640a和0x00002400字段获取。EPT异常原因可通过0x00006400字段获取,相关异常信息域如下图:

4edb5a6557e5d8fdb9a8fa5af00fa396.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值