首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来宾ring-3代码在VM环境中运行在哪里?

来宾ring-3代码在VM环境中运行在哪里?
EN

Stack Overflow用户
提问于 2013-08-24 15:14:03
回答 1查看 425关注 0票数 1

根据VMWare发布的白皮书,二进制翻译技术只在内核中使用(ring 0代码),ring 3代码在cpu硬件上“直接执行”。

正如我所观察到的,无论来宾操作系统中运行了多少进程,宿主操作系统中总是只有一个进程。因此,我假设所有的来宾环3代码都在单个主机进程上下文中运行。(对于VMWare,它是vmware-vmx.exe)。

所以我的问题是,如何在单个进程中本机执行如此多的环3代码?考虑到大多数windows exe文件不包含重定位信息,它不能在其他地方执行,并且在ring3代码中不使用二进制转换。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2013-09-05 03:26:23

让我们谈谈Intel VT-x的设计-- VMX

Intel VT-x引入了两种新的模式来解决这一问题:VMX root modeVMX non-root mode,分别用于主机和访客。这两种模式都有环0~3,这意味着主机和访客不会共享相同的环级别。

VMX root mode的环3中运行的一种管理程序,当它决定将CPU控制权转移给访客时,管理程序执行VMLAUNCH指令,该指令允许从VMX root mode转移到VMX non-root mode。那么guest Ring3代码现在可以在VMX non-root mode中自动执行了。所有这些都得到了Intel VT-x的支持。运行guest不需要二进制转换或指令仿真。

当然,VMX non-root mode的环3的特权和功能较少。例如,当来宾环3代码遇到一些它无法处理的事情时,例如物理设备访问请求,CPU会自动检测到这种限制,并将其传输回VMX root-mode中的虚拟机管理程序。在虚拟机管理程序完成此任务后,它将再次触发VMLAUNCH,以便运行来宾操作系统。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18416049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档