如何在VM中处理timeofday()系统调用(使用KVM)?

时间:2016-07-23 16:30:41

标签: linux-kernel kernel system-calls kvm

如果我修改主机内核的timeofday()调用,是否会在来宾内核中调用修改过的系统调用,或者HyperVisor会以某种方式处理它?<​​/ p>

有人可以详细回答幕后发生的事情吗?

另外,我想知道如何在内核版本3.10.9和内核版本4.2

上完成此操作

1 个答案:

答案 0 :(得分:1)

KVM需要具有硬件虚拟化支持的处理器(VT-x / AMD-V)。在硬件虚拟化中,所有来宾中断都会导致主机操作系统上的陷阱。然后,主机确定中断是针对自身还是针对来宾。对于前一种情况,主机OS将处理中断;以后,它会告知KVM。

KVM使用kvm_clock从管理程序KVM定期写入时间的共享内存位置(在VM中)读取。因此,如果您在主机上修改gettimeofday(),虚拟机管理程序将使用它来获取时间,并将更新时间写入共享内存位置。

您可以在原始论文中阅读有关KVM的更多信息:Paper