理解内存虚拟化过程

内存的一些基本概念

内存的作用

  • CPU只跟内存进行交互,存放的数据能随时被CPU调用计算,就是一个处于CPU和硬盘间的临时存放区

逻辑内存

  • 逻辑内存是计算机系统内存管理的一种技术,为了实现内存连续,安全,隔离

内存断电后为什么数据丢失

  • 数据被放到内存中去时候是直接以二进制形式表示,原理是利用存储单元中电荷的多少来代表是1还是0

由于硬盘速度比较慢,CPU如果运行程序的时候,所有数据都直接从硬盘中读写,会非常影响效率。所以CPU会将运行软件时要用的数据一次性从硬盘调用到运行速度很快的内存,然后CPU再与内存进行数据交换

MMU,内存管理单元

作用:

  • 管理内存的逻辑地址和物理地址的映射表,硬件集成到CPU中,由CPU管理 (这边叫逻辑内存是为了区别虚拟机内存)

好处:

  • 内存的复用技术,计算机可以使用比实际的物理内存更多的存储空间
  • 实际的物理内存进行分割和保护,使得每个软件任务只能访问其分配到的内存空间
  • 能有效的整合把物理不连续的地址分配给程序

处理器没有MMU的时候,CPU内部执行单元产生的内存地址信号将直接通过地址总线发送到芯片引脚,被内存芯片接收(物理内存地址)

  • 地址空间不隔离

    • 程序A和B之间使用会变得混乱, 导致程序意外写入错误
  • 程序运行时候的地址不确定和内存使用效率低

    • 因为程序运行起来的条件是内存必须是连续的,导致内存不能有效的分配,因为程序使用不是一个时间段申请内存,而是需要使用才会申请空间。

这个时候就需要借助逻辑内存地址和物理内存地址分离,给进程程序带来便利性和安全性

理解内存虚拟化过程_第1张图片
对于程序进程来说内存逻辑地址是连续的就行,不会关心到物理上是否连续

  • 中间还有涉及到内存分页和分段的管理概念,但是最终都是实现逻辑地址对应到物理地址,只是为了映射关系上的优化

内存虚拟化

定义:把物理机的真实内存统一管理,包装成多份虚拟内存给虚拟机使用

  • Host physical memory 虚拟机管理程序可用的内存
  • Guest physical memory 运行VM上的虚拟机可用的内存
  • Guest virtual memory Guest os 向应用程序提交的一个连续的逻辑地址空间

理解内存虚拟化过程_第2张图片

理解内存虚拟化过程_第3张图片
虚拟环境下就变成了需要2张表来做映射关系,这样VM的程序才能到达VMM虚拟监视器上找到最终的物理存储,这样的话MMU内存管理单元就做不到了

解决办法

通过软件方式
理解内存虚拟化过程_第4张图片
通过函数把2张映射表变成一张后,交由MMU来做管理

坏处: VMM来完成2张表里的对于关系替换,额外的增加了VMM的性能负担

基于CPU硬件辅助虚拟化

上面由软件完成的部分,现在通通可以交给CPU来做,因为CPU的处理能力够快,这样对于内存性能就能很好的提升

CPU的硬件虚拟化针对内存支持的特性

  • inter vt-x EPT
  • AMD-V NPT

你可能感兴趣的:(虚拟化)