VMM

来自站长百科
跳转至: 导航、​ 搜索

VMM(Virtual Machine Monitor,虚拟机管理器)是一套综合性的端到端解决方案,涵盖了规划、部署、管理和优化虚拟基础设施的全范围功能。作为一个核心组件,VMM 本质上是一个操作系统,其设计宗旨在于构建和维护一个用于管理虚拟机的环境。它不仅为虚拟机提供必要的管理框架,还向其他虚拟化扩展驱动(vxd)程序提供关键服务,确保整个虚拟化平台的稳定和高效运行。

主要功能[ ]

内存管理[ ]

内存管理是虚拟机管理器(VMM)的一个关键功能,它利用Intel 80386或更新处理器的内存分页能力,为系统内的虚拟机创建了一个32位的虚拟地址空间。这个地址空间被划分为四个主要部分,每个部分都有其特定的用途和范围:

1、V86区:地址范围从0H到10FFEFH,这部分内存是专门为当前正在执行的虚拟机保留的。

2、应用程序私有区:地址范围从4MB到2GB,这是为Win32应用程序预留的运行空间。在这个区域中,每个Win32进程都拥有自己独立的2GB(实际可用空间要减去4MB的系统保留区域)内存空间。

3、应用程序共享区:地址范围从2GB到3GB,这个区域是虚拟机内所有应用程序共享的。常见的系统DLL(如user32.dll, kernel32.dll, gdi32.dll等)都存放在这里。此外,所有的Win16程序也都运行在这个共享区内,因为这些程序通常不遵守规范,会相互访问其他Win16程序的内存。内存映射文件和分配给DPMI(DOS Protected Mode Interface)的内存也位于此区域。

4、系统共享区:地址范围从3GB到4GB,这是VMM和VXM(Virtual X Window Manager)存放的地方,用于系统级的共享和管理。

VMM为虚拟设备驱动(VxD)程序提供了三种主要的VxD服务来管理内存:

  • 页面内存服务:这种服务负责分配和管理大小为4KB的内存页面。这是最基本的服务,所有其他的内存服务都是基于页面内存服务构建的。
  • 堆内存服务:这种服务用于管理较小的内存块,是一种更高级别的内存管理服务,建立在页面内存服务的基础之上。
  • 表服务:这种服务用于管理固定大小的内存块,可以用于实现链表等数据结构。

中断处理[ ]

在保护模式下,中断指向中断描述表(IDT)。VMM通过VxD的帮助监视虚拟机的IDT。通常VMM处理IDT内几乎所有的中断入口。它进行第一级的中断处理:保存被中断程序的状态,把控制传送到第二级的中断处理,第二级的中断处理通常由各种VxD程序来进行实际的处理。当第二级中断处理程序完成了它的工作之后,它把控制转交给重分派程序,由重分派程序来恢复被中断程序的状态并从先前被中断的地方继续执行。

主调度器[ ]

主调度器主要负责选择具有最高优先级的线程来执行,并在处理中断时作出调度决策。在虚拟化环境中,主调度器的作用尤为重要,因为它决定了在VMM(虚拟机管理器)从中断服务返回时哪个线程或虚拟机将获得CPU的控制权。以下是主调度器的关键职责和机制:

  • 优先级决定:主调度器根据线程的优先级进行调度,确保优先级最高的线程得以执行。
  • 中断响应:当计时器中断等事件发生时,主调度器会介入,可能会调整正在执行的线程,让具有更高优先级的线程得到执行机会。
  • 调度决策:主调度器的工作结果是决定性的,即一个线程要么获得CPU控制权,要么处于等待状态,不会同时有多个线程获得控制权。
  • 动态调整:VMM和其他VxD程序可以通过VMM服务来动态调整线程的执行优先级,以适应不同的执行需求和系统状况。

与主调度器协作的是副调度器或时间片管理器,它利用主调度器提供的服务来分配CPU时间给各个线程。副调度器通过给予每个线程一个时间片来确保它们能公平地分享CPU资源。当一个线程的时间片用完时,副调度器会增加下一个线程的优先级,使其被主调度器选中并投入运行。这样的设计可以保证系统的响应性和公平性,防止某些线程长时间占用CPU而造成其他线程饥饿。

工作原理[ ]

VMM的工作原理是在硬件和操作系统之间插入一个软件层。在这个层次上,VMM会对计算机的CPU、内存、存储和网络等资源进行抽象,并将它们分配给不同的虚拟机。使用VMM可以最大程度地利用硬件资源,这也为云计算等大规模应用提供了极大的便利。同时,VMM为虚拟机提供了隔离和保护,使多个虚拟机可以在同一硬件平台上运行,而互不干扰。

相关条目[ ]