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

问题描述:

如果我修改主机内核的timeofday()调用,那么会在来宾内核调用修改过的系统调用,或者HyperVisor会以某种方式处理它?如何在VM(使用KVM)中处理timeofday()系统调用?

有人可以得到有关幕后发生的详细答案吗?

另外,我想知道这是怎么内核版本3.10.9和内核版本进行4.2

KVM需要与硬件虚拟化支持(VT-x/AMD-V)的处理器。在硬件虚拟化中,所有访客中断都会在主机操作系统上产生陷阱。主机然后确定中断是为自己还是为客人。对于前一种情况,主机OS将处理该中断;稍后,它会通知KVM。

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

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