【发布时间】:2026-01-09 05:50:02
【问题描述】:
如果我在主机内核修改 timeofday() 调用,修改后的系统调用会在客户机内核调用还是 HyperVisor 会以某种方式处理它?
有人能详细解答幕后发生的事情吗?
另外我想知道这是如何在内核版本 3.10.9 和内核版本 4.2 上完成的
【问题讨论】:
标签: linux-kernel kernel system-calls kvm
如果我在主机内核修改 timeofday() 调用,修改后的系统调用会在客户机内核调用还是 HyperVisor 会以某种方式处理它?
有人能详细解答幕后发生的事情吗?
另外我想知道这是如何在内核版本 3.10.9 和内核版本 4.2 上完成的
【问题讨论】:
标签: linux-kernel kernel system-calls kvm
KVM 需要支持硬件虚拟化的处理器 (VT-x/AMD-V )。在硬件虚拟化中,所有来宾中断都会导致主机操作系统陷入陷阱。主机然后确定中断是为自己还是为客人。对于前一种情况,主机操作系统将处理中断;稍后,它将通知 KVM。
KVM 使用 kvm_clock 从管理程序 KVM 定期写入时间的共享内存位置(在 VM 中)读取。因此,如果您在主机上修改 gettimeofday(),系统管理程序将使用它来获取时间,并且更新的时间将写入共享内存位置。
您可以在原始论文中阅读更多关于 KVM 的信息:Paper
【讨论】: