【问题标题】:How is the timeofday() system call handled in a VM (Using KVM)?如何在 VM 中处理 timeofday() 系统调用(使用 KVM)?
【发布时间】:2026-01-09 05:50:02
【问题描述】:

如果我在主机内核修改 timeofday() 调用,修改后的系统调用会在客户机内核调用还是 HyperVisor 会以某种方式处理它?

有人能详细解答幕后发生的事情吗?

另外我想知道这是如何在内核版本 3.10.9 和内核版本 4.2 上完成的

【问题讨论】:

    标签: linux-kernel kernel system-calls kvm


    【解决方案1】:

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

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

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

    【讨论】:

      最近更新 更多