Cloud ❀ 内存虚拟化技术


内存虚拟化

把物理机的真实物理内存统一管理,包装成多个虚拟的物理内存分别供若干个虚拟机使用,使得每个虚拟机拥有各自独立的内存空间。
物理机的内存是一段连接的地址空间,上层应用对于内存的访问多数是随机的,因此虚拟机监视器需要维护物理机内存地址块和虚拟机内部看到的连续内存块的映射关系,保证虚拟机的内存访问是连续的、一致的。
现代操作系统中对于内存管理采用了段式、页式、段页式、多级页表、缓存、虚拟内存等多种复杂的技术,虚拟机监视器必须能够支持这些技术。

1.经典的内存管理技术

内存作为一种存储设备是程序运行所必不可少的,因为所有的程序都要通过内存将代码和数据提交到CPU进行处理和执行;为了实现虚拟内存技术,目前所有的CPU都配置了内存管理单元(MMU)和页表转换缓冲(TLB),通过他们来优化虚拟内存的性能。

为了在物理服务器上运行多个虚拟机,虚拟机监视器必须具备管理虚拟内存的机制,也就是具备虚拟机内存管理单元,由于新增了一个内存管理层,所以虚拟机内存管理与经典的内存管理有所区别,虚拟机中操作系统看到的 物理内存 并不是真正的物理内存,而是被虚拟机监视器管理的 假物理内存, 与该 物理内存 相对应的概念 - 机器内存。

机器内存 - 指物理服务器硬件上真正的内存,在内存虚拟化种存在着逻辑内存、物理内存和机器内存三种内存类型,而这三种内存的地址空间被称为逻辑地址、物理地址和机器地址。
Cloud ❀ 内存虚拟化技术

在内存虚拟化中,逻辑内存与机器内存之间的映射关系是由内存虚拟化管理单元来负责的,主要有两种方法:

2.影子页表法

客户操作系统维护着自己的页表,该页表中的内存地址是客户操作系统看到的物理地址;
同时,虚拟机监视器也为每台虚拟机维护着一个对应的页表,只不过这个页表中记录的是真实的机器内存地址,虚拟机监视器中的页表是以客户操作系统维护的页表为蓝本建立起来的,并且会随着客户操作系统页表的更新而更新,类似于影子一样。

  • 代表:VMware Workstation、KVM。

3.页表写入法

当客户操作系统创建一个新页表时,需要向虚拟机监视器注册该页表时,此时虚拟机监视器将剥夺客户操作系统对页表的写权限,并向该页表写入由虚拟机监视器维护的机器内存地址,当客户操作系统访问内存时,它可以在自己的页表中获得真实的机器内存地址,客户操作系统对页表的每次修改都会陷入虚拟机监视器,由虚拟机监视器来更新页表,保证其页表项纪录的始终是真实的机器地址,页表写入法需要修改客户操作系统。

  • 代表:Xen。