虚拟机2025年03月17日 | 阅读 9 分钟 虚拟机可以被定义为计算中的计算机系统的仿真。虚拟机基于计算机体系结构。它还提供了物理计算机的功能。虚拟机的实现可以考虑专用软件、硬件或两者的组合。 虚拟机历史
虚拟机类型有不同类型的虚拟机,它们都具有不同的功能。 ![]()
一些 VM 被开发用于模拟不同的体系结构,如 QEMU。它允许运行为其他体系结构或 CPU 编写的操作系统和软件应用程序。操作系统级虚拟化允许计算机资源由内核进行分类。 什么是系统虚拟机?最初,Goldberg 和 Popek 将虚拟机描述为“实际计算机机器的一个隔离且高效的副本”。最新的用法结合了与实际硬件没有直接关系的虚拟机。通常,运行虚拟机的真实世界或物理硬件被称为“宿主”,而在机器上复制的 VM 通常被称为“客户机”。 系统虚拟机的工作原理宿主可以模拟多个客户机,所有客户机都可以模拟不同的硬件平台和操作系统。 运行多个操作系统的愿望是虚拟机最初的目标。它允许在多个独立的任务操作系统之间进行分时。系统 VM 可以被认为是其历史早于它的虚拟内存概念的泛化。 IBM 的 CMS/CP,最早支持完全虚拟化的系统,通过为所有用户提供单个用户 OS(操作系统)来实现共享。系统 VM 允许用户在代码中编写特权指令。这种方法有一些优点,比如包括标准系统不允许的输入/输出设备。 新的内存超额分配系统可用于管理单个计算机 OS 上多个 VM 之间的内存共享。这是因为技术正在扩展 VM 以用于各种虚拟化目的。有可能将包含相同内容的内存页分发给运行在同一台物理机器上的多个 VM。因此,通过一种称为 KSM(内核相同页面合并)的方法将它们映射到相同的物理页面。 这对于只读页面尤其有用,例如包含代码段的页面。这是多个 VM 运行相同或相同的中间件组件、Web 服务器、软件库、软件等的情况。客户机操作系统不需要与任何宿主硬件兼容,因此可以在同一台计算机上运行不同的操作系统(例如先前版本的操作系统、Linux 或 Windows)以支持未来的软件。 系统虚拟机的用途虚拟机可用于支持隔离的客户机 OS。它在嵌入式系统中很受欢迎。一个常见的用法可能是同时运行实时操作系统和首选的复杂操作系统,如 Windows 或 Linux。 其他用途可能包括未经测试的、新颖的软件,这些软件仍处于开发阶段,因此在沙箱中运行。VM 在 OS 开发方面也有其他优势。它可能包含更快的重启和更方便的调试访问。 什么是进程虚拟机?进程虚拟机有时被称为MRE(管理运行时环境)或应用程序虚拟机。它作为宿主操作系统上的一个通用应用程序运行,并支持单个进程。这些进程在启动时创建,在退出时销毁。 进程 VM 的目的是提供一个平台无关的编程环境。它抽象了底层操作系统或硬件的所有信息。它允许程序以相同的方式在任何平台上运行。 进程虚拟机提供了高级编程语言的高级抽象。进程虚拟机可以使用解释器来实现。通过使用即时编译,可以获得与其(已编译的)编程语言相称的性能。 进程虚拟机随着Java 编程语言而流行。它可以与 Java 虚拟机一起实现。另一个例子包括 .NET Framework 和Parrot 虚拟机,它们运行在称为通用语言运行时的虚拟机上。它们都可以作为计算机语言的抽象层。 进程虚拟机有一个特殊情况,适用于那些依赖于(可能是异构的)计算机集群通信机制的系统。这类虚拟机不包含任何单个进程,而是包含集群内的单个进程/物理机。 这些集群旨在通过允许程序员专注于算法而不是操作系统和互连提供的通信机制来减轻并行计算任务的难度。 它们不会隐藏通信发生的事实,并试图将集群展示为单个机器。 与往常的进程虚拟机不同,这个系统不提供特定的编程语言,尽管它们嵌入在任何现有语言中。任何此类系统通常都支持多种语言(如 FORTRAN 和 C)的绑定。 例如MPI(消息传递接口)和PVM(并行虚拟机)。它们严格来说不是虚拟机,因为运行在顶层的各种应用程序仍然可以访问所有 OS 服务。因此,它们不限于系统模型。 完全虚拟化在完全虚拟化中,虚拟机模拟硬件,允许客户机操作系统独立运行。它是在 1966 年使用 IBM CP-67 和 CP-40 开发的,它们是 VM 系列的前身。 除了大型机领域,还有一些例子,如 Egenera vBlade 技术、Win4Lin Pro、Win4BSD、Mac-on Linux、Adeos、QEMU、VMware ESXi、VMware Server(也称为 GSX Server)、VMware Workstation、Hyper-V、Virtual Server、Virtual PC、Oracle VM、Virtual Iron、VirtualBox、Parallels Desktop for Mac 和 Parallels Workstation。 硬件辅助虚拟化在硬件辅助虚拟化中,硬件提供架构支持。这种架构支持有助于创建虚拟机监视器,并允许多个客户机操作系统独立运行。 这种虚拟化类型最早在 1972 年的IBM System/370上定义。它被引入与 VM/370 一起使用。IBM 提供的第一款虚拟机 OS 是官方产品。 AMD 和 Intel 分别在 2006 年和 2005 年提供了额外的硬件来支持虚拟化。2005 年,Sun Microsystems(Oracle Corporation)在 UltraSPARC T 系列处理器中加入了类似的功能。适用于某些硬件的虚拟化平台示例包括 Parallels Workstation、VirtualBox、Oracle VM Server for SPARC、Parallels Desktop for Mac、Xen、Windows Virtual PC、Hyper-V、VMware Fusion、VMware Workstations 和 KVM。 2006 年检测到第一代 64 位和 32 位 x86 硬件支持,可在软件虚拟化方面带来性能优势。 操作系统级虚拟化在操作系统级虚拟化中,物理服务器可以在操作系统级别进行虚拟化。它允许多个安全且隔离的虚拟化服务器运行在单个物理服务器上。 客户机操作系统的环境与宿主系统的运行实例共享相同的操作系统。因此,使用相同的操作系统内核来实现客户机环境。此外,在提供的客户机环境中运行的各种应用程序将其视为独立的系统。 最初的实现是 FreeBSD 监狱。其他例子包括 iCore 虚拟账户、Parallels Virtuozzo Containers、AIX Workload Partitions、LXC、Linux-Vserver、OpenVZ、Solaris Containers 和 Docker。 只有通过软件和硬件元素的正确组合才可能实现完全虚拟化。例如,IBM 的大多数 System/360 系列和 IBM 的早期 System/360 系统都无法实现完全虚拟化。 1972 年,IBM 为 System/370 系列添加了虚拟内存硬件,这与 Intel VT-x Rings 不同。它为虚拟机监控程序提供了更高级别的权限,以便正确处理虚拟机。 完全虚拟化的挑战完全虚拟化的主要挑战是模拟和拦截各种特权操作,如 I/O 指令。在提供的 VM 中实现的所有操作的结果应保留在该 VM 内。 某些机器指令可以直接通过硬件运行,因为所有影响都完全包含在控制程序处理的组件中,如算术寄存器和内存位置。 但是,其他(可能穿透 VM 的)指令不允许直接运行。它们应该被模拟和捕获。这些类型的指令会影响或访问 VM 外部的状态数据。
VM 的优点
下一主题什么是快照 |
我们请求您订阅我们的新闻通讯以获取最新更新。