科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道Linux中虚拟化方法、技术及实现(2)

Linux中虚拟化方法、技术及实现(2)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

虚拟化的含义丰富,应用广泛。目前虚拟化技术主要关注于服务器虚拟化,即在一个宿主计算机上提供多个独立操作系统。本文将探索虚拟化背后的思想,然后讨论实现虚拟化的一些技术

作者:IBM 来源:IBM 2007年9月10日

关键字: 虚拟化 操作系统 Linux

  • 评论
  • 分享微博
  • 分享邮件
 

虚拟化和游戏

一篇有关虚拟化的文章如果不提一下 MAME(Multiple-Arcade Machine Emulator),就不算完整。顾名思义,MAME 就是以前很多 arcade 游戏的一个完整的机器模拟器。除了对这些游戏中使用的处理器进行虚拟化之外,还可以对整个机器进行虚拟化,包括声音、图形处理硬件和控制单元。MAME 是一个非常不错的应用程序,不过要理解它们究竟实现了哪些功能,研读一下它的源代码会非常有帮助。

虚拟化的类型

实现虚拟化的方法不止一种。实际上,有几种方法都可以通过不同层次的抽象来实现相同的结果。本节将介绍 Linux 中常用的 3 种虚拟化方法,以及它们相应的优缺点。业界有时会使用不同的术语来描述相同的虚拟化方法。本文中使用的是最常用的术语,同时给出了其他术语以供参考。

仿真和开发

硬件仿真的应用之一是进行固件和硬件的协作开发。固件开发人员可以使用目标硬件 VM 在仿真环境中对自己的实际代码进行验证,而不需要等到硬件实际可用的时候。

硬件仿真

毫无疑问,最复杂的虚拟化实现技术就是硬件仿真。在这种方法中,可以在宿主系统上创建一个硬件 VM 来仿真所想要的硬件,如图 1 所示。

图 1. 硬件仿真使用 VM 来模拟所需要的硬件

正如您所能预见的一样,使用硬件仿真的主要问题是速度会非常慢。由于每条指令都必须在底层硬件上进行仿真,因此速度减慢 100 倍的情况也并不稀奇。若要实现高度保真的仿真,包括周期精度、所仿真的 CPU 管道以及缓存行为,实际速度差距甚至可能会达到 1000 倍之多。

硬件仿真也有自己的优点。例如,使用硬件仿真,您可以在一个 ARM 处理器主机上运行为 PowerPC® 设计的操作系统,而不需要任何修改。您甚至可以运行多个虚拟机,每个虚拟器仿真一个不同的处理器。

完全虚拟化

完全虚拟化(full virtualization),也称为原始虚拟化,是另外一种虚拟化方法。这种模型使用一个虚拟机,它在客户操作系统和原始硬件之间进行协调(参见图 2)。“协调”在这里是一个关键,因为 VMM 在客户操作系统和裸硬件之间提供协调。特定受保护的指令必须被捕获下来并在 hypervisor 中进行处理,因为这些底层硬件并不由操作系统所拥有,而是由操作系统通过 hypervisor 共享。

图 2. 完全虚拟化使用 hypervisor 来共享底层硬件

虽然完全虚拟化的速度比硬件仿真的速度要快,但是其性能要低于裸硬件,因为中间经过了 hypervisor 的协调过程。完全虚拟化的最大优点是操作系统无需任何修改就可以直接运行。惟一的限制是操作系统必须要支持底层硬件(例如 PowerPC)。

老硬件上的 hypervisor

有些比较老的硬件,例如 x86,会给完全虚拟化带来一些问题。例如,需要 VMM 处理的一些特定敏感指令并没有捕获。因此,hypervisor 必须要动态扫描并捕获这些特权模式代码来解决这一问题。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章