小编cat*_*man的帖子

为什么 VirtualBox 来宾内核在环 1 而不是环 3 中运行?

VirtualBoxx86平台上运行时,根据文档

当启用硬件虚拟化(即 VT-x 或 AMD-V)时,管理程序(即 VirtualBox 本身)以VMX 根模式(又名ring -1)运行,而虚拟机以VMX 非根模式(又名ring 0)运行. 这也是其他管理程序的工作方式。

另一方面,当硬件虚拟化不可用时,会使用软件虚拟化,并且来宾内核在环 1 中运行。从上面链接的第 10.6 节

  • 访客环 3 代码未经修改,全速运行,尽可能多......

  • 对于 ring 0 中的来宾代码,Oracle VM VirtualBox 使用了一个巧妙的技巧。它实际上重新配置了来宾,以便它的 ring-0 代码改为在 ring 1 中运行,这在 x86 操作系统中通常不使用)。结果,当guest ring-0代码,实际运行n ring 1,例如guest设备驱动程序尝试写入I/O寄存器或执行特权指令时,Oracle VM VirtualBox hypervisor在“真实”ring 0可以接手

...

  • 在 ring 1 中运行 ring 0 代码会导致很多额外的指令错误,因为ring 1 不允许执行任何特权指令,其中 guest …

virtualbox virtualization x86

8
推荐指数
1
解决办法
1119
查看次数

标签 统计

virtualbox ×1

virtualization ×1

x86 ×1