hypercall 与 Linux 系统调用花费相同的时间吗?

hypercall 与 Linux 系统调用花费相同的时间吗?

从 Xen 网站,

超级调用之于系统调用就像虚拟机管理程序之于操作系统一样。或者,超级调用对于虚拟机管理程序来说就像系统调用对于内核一样。超级调用是从域到虚拟机管理程序的软件陷阱,就像系统调用是从应用程序到内核的软件陷阱一样。域将使用超级调用来请求特权操作,例如更新页表。与系统调用一样,超级调用是同步的,但从管理程序到域的返回路径使用事件通道。事件通道是异步通知队列,并通知与本机硬件上的中断通知相同类型的事件。当队列中有待处理事件的域被调度时,操作系统的事件回调处理程序将被调用以采取适当的操作。

  • 假设超级调用和系统调用都在做同样的事情,它们是否花费相同的时间。
  • 虚拟机管理程序处理超级调用的方式与以相同方式处理系统调用的 Linux 内核有什么区别

答案1

超级调用比系统调用慢。这是因为超级调用必须首先到达主机/管理程序,然后导航到 CPU 才能执行。返回路径也是如此。事实上,在类似内核上进行的基准测试超内核已经表明,超级调用需要大约 3 到 4 倍的时间(链接页面的 pdf 第 15 页)。

相关内容