|
|
|
|
移动端

内存虚拟化技术,具体的实现方法有哪两种?

操作系统的内存管理单元(Memory Management Unit,MMU)只能完成一次虚拟地址到物理地址的映射,但获得的物理地址只是虚拟机物理地址而不是机器物理地址,所以需要VMM参与,以获得总线上可以使用的机器地址为实现虚拟地址到机器地址的高效转换,目前普遍采用的方法是由VMM根据映射f和g生成复合映射f·g并直接写入MMU。

作者:佚名来源:中科院计算所培训中心|2017-11-16 09:20

人工智能+区块链的发展趋势及应用调研报告


引入内存虚拟化技术后,内存系统中存在3种地址。

机器地址(Machine Address,MA):真实硬件的机器地址,在地址总线上可以见到的地址信号。

虚拟机物理地址(Guest Physical Address,GPA):经过VMM抽象后虚拟机看到的伪物理地址。

虚拟地址(Virtual Address,VA):Guest OS提供给其应用程序使用的线性地址空间。

虚拟地址到虚拟机物理地址的映射关系,记作g

虚拟机物理地址到机器地址的映射关系,记作f

操作系统的内存管理单元(Memory Management Unit,MMU)只能完成一次虚拟地址到物理地址的映射,但获得的物理地址只是虚拟机物理地址而不是机器物理地址,所以需要VMM参与,以获得总线上可以使用的机器地址为实现虚拟地址到机器地址的高效转换,目前普遍采用的方法是由VMM根据映射f和g生成复合映射f·g并直接写入MMU,具体的实现方法有两种:

MMU半虚拟化(MMU Paravirtualization)

这种方式主要为Xen所用

主要原理是:当Guest OS创建新页表时,VMM从维护的空闲内存中为其分配页面并进行注册,以后,Guest OS对该页表的写操作都会陷入VMM进行验证和转换;VMM检查页表中的每一项,确保它们只映射到属于该虚拟机的机器页面,而且不包含对页表页面的可写映射;然后,VMM会根据其维护的映射关系f,将页表项中的虚拟机物理地址替换为相应的机器地址;最后把修改过的页表载入MMU,MMU就可以根据修改过的页表直接完成虚拟地址到机器地址的转换。这种方式的本质是将映射关系f·g直接写入Guest OS的页表中,以替换原来的映射g。

影子页表

全虚拟化使用影子页表技术实现内存虚拟化。其与MMU半虚拟化不同的是,VMM为Guest OS的每个页表维护一个影子页表,并将f·g的映射关系写入影子页表,Guest OS的页表内容保持不变,然后,VMM将影子页表写入MMU。

影子页表的维护将带来时间和空间上的较大开销。时间开销主要体现在Guest OS构造页表时不会主动通知 VMM,VMM 必须等到Guest OS发生缺页时才会分析缺页原因再为其补全影子页表。而空间的开销主要体现在VMM需要支持多台虚拟机同时运行,每台虚拟机的 Guest OS 通常会为其上运行的每个进程创建一套页表系统,因此影子页表的空间开销会随着进程数量的增多而迅速增大。

影子页表缓存

为权衡时间开销和空间开销,现在一般采用影子页表缓存(Shadow Page Table Cache)技术,即VMM在内存中维护部分最近使用过的影子页表,只有当影子页表在缓存中找不到时,才构建一个新的影子页表。当前主要的虚拟化技术都采用了影子页表缓存技术。

虚拟机文件系统的虚拟化技术

【编辑推荐】

  1. 存储网络 – 了解FCoE的8个技术细节
  2. 深入浅知虚拟化和灾难恢复
  3. DRAM核心设计的新旧存取技术差异
  4. 磁带数据储存技术“卷土重来”?
  5. 什么是存储虚拟化?记录层和块层都包含哪些设备?
【责任编辑:武晓燕 TEL:(010)68476606】


点赞 0
分享:
大家都在看
猜你喜欢

热门职位+更多

读 书 +更多

Head First 设计模式(中文版)

本书共有14章,每章都介绍了几个设计模式,完整地涵盖了四人组版本全部23个设计模式。前言先介绍这本书的用法;第1章到第11章陆续介绍的设...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊