162306a36Sopenharmony_ci.. SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci.. include:: ../disclaimer-zh_CN.rst
362306a36Sopenharmony_ci
462306a36Sopenharmony_ci:Original: Documentation/virt/paravirt_ops.rst
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci:翻译:
762306a36Sopenharmony_ci
862306a36Sopenharmony_ci 司延腾 Yanteng Si <siyanteng@loongson.cn>
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ci:校译:
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ci 陈飞杨 Feiyang Chen <chenfeiyang@loongson.cn>
1362306a36Sopenharmony_ci 时奎亮 Alex Shi <alexs@kernel.org>
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ci.. _cn_virt_paravirt_ops:
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ci============
1862306a36Sopenharmony_ci半虚拟化操作
1962306a36Sopenharmony_ci============
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ciLinux提供了对不同管理程序虚拟化技术的支持。历史上,为了支持不同的虚拟机超级管理器
2262306a36Sopenharmony_ci(hypervisor,下文简称超级管理器),需要不同的二进制内核,这个限制已经被pv_ops移
2362306a36Sopenharmony_ci除了。Linux pv_ops是一个虚拟化API,它能够支持不同的管理程序。它允许每个管理程序
2462306a36Sopenharmony_ci优先于关键操作,并允许单一的内核二进制文件在所有支持的执行环境中运行,包括本机——没
2562306a36Sopenharmony_ci有任何管理程序。
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_cipv_ops提供了一组函数指针,代表了与低级关键指令和各领域高级功能相对应的操作。
2862306a36Sopenharmony_cipv-ops允许在运行时进行优化,在启动时对低级关键操作进行二进制修补。
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_cipv_ops操作被分为三类:
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ci- 简单的间接调用
3362306a36Sopenharmony_ci   这些操作对应于高水平的函数,众所周知,间接调用的开销并不十分重要。
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ci- 间接调用,允许用二进制补丁进行优化
3662306a36Sopenharmony_ci   通常情况下,这些操作对应于低级别的关键指令。它们被频繁地调用,并且是对性能关
3762306a36Sopenharmony_ci   键。开销是非常重要的。
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ci- 一套用于手写汇编代码的宏程序
4062306a36Sopenharmony_ci   手写的汇编代码(.S文件)也需要半虚拟化,因为它们包括敏感指令或其中的一些代
4162306a36Sopenharmony_ci   码路径对性能非常关键。
42