Paravirt_ops

Linux 提供了对不同虚拟机管理程序虚拟化技术的支持。从历史上看,为了支持不同的虚拟机管理程序,需要不同的二进制内核;这个限制随着 pv_ops 的出现而被移除。Linux pv_ops 是一个虚拟化 API,它支持不同的虚拟机管理程序。它允许每个虚拟机管理程序覆盖关键操作,并允许单个内核二进制文件在所有支持的执行环境(包括本机机器 - 无需任何虚拟机管理程序)上运行。

pv_ops 提供了一组函数指针,这些指针表示对应于各个领域中的底层关键指令和高层功能的操作。pv_ops 允许通过在启动时启用底层关键操作的二进制补丁来实现运行时优化。

pv_ops 操作分为三个类别

  • 简单的间接调用

    这些操作对应于高层功能,在这种情况下,已知间接调用的开销不是非常重要。

  • 允许通过二进制补丁进行优化的间接调用

    通常,这些操作对应于底层的关键指令。它们被频繁调用并且对性能至关重要。开销非常重要。

  • 一组用于手写汇编代码的宏

    手写汇编代码(.S 文件)也需要半虚拟化,因为它们包含敏感指令或其中的某些代码路径对性能非常关键。