【发布时间】:2021-12-27 22:56:58
【问题描述】:
我无法理解哪个(如果有)系统调用会导致虚拟机退出到英特尔 VMX 下的 VMX 根模式。我对与网络相关的系统调用(即 socket、accept、send、recv)特别感兴趣,因为它们需要一个“虚拟”设备。我知道必须调用管理程序才能实际打开套接字,但这可以并行完成(假设在多核处理器上)?
任何澄清将不胜感激。
【问题讨论】:
-
VMX 本身没有定义任何应该捕获或导致 VM 退出到主机的“系统调用”。 CPU 甚至不需要知道 VMX 工作的系统调用是什么。这完全由操作系统决定。你的意思是用 [linux-kernel] 和可能的 [linux] 来标记它吗?否则这个问题有点不正确。
-
感谢您的回复。我想我的意思是用 linux-kernel 和/或 linux 来标记它(我会这样做)。但是,如果发生与网络相关的系统调用,我可以使用哪些文档来确定来宾操作系统是否会导致 VM 退出?
-
例如,我有兴趣找出哪些(如果有的话)系统调用应该为支持 VMX 的机器上的来宾 Ubuntu 操作系统捕获或导致 VM 退出到主机。
-
mmap可能在没有硬件支持嵌套页表的旧 CPU 上。或者是的,可能任何涉及虚拟硬件或半虚拟化驱动程序的东西。但请注意open()或socket()系统调用不会发送任何数据包;甚至write也不会必然在 TCP 连接上发送数据包,具体取决于写入的大小与 MTU 的关系。但是send可能会,除非你使用MSG_MORE。 -
@ballsmahoney 好的,现在我明白你所说的“并行”是什么意思了,我已经编辑了我的答案来解决这个问题。
标签: linux-kernel x86 virtual-machine virtualization hypervisor