zoukankan      html  css  js  c++  java
  • 第七讲:内存虚拟化

      一、内存虚拟化的产生

      内存虚拟化的产生源于VMM与客户系统在对物理内存的认识上存在冲突,造成物理内存真正拥有者-VMM必须对系统访问的内存进行一定程度上的虚拟化。

      先看非虚拟化环境:  

      ·指令对内存的访问通过处理器来转发>>>>处理器将解码后的请求放到总线上>>>>芯片组负责转发。

      为了唯一标示,处理器将采用统一编址的方式将物理内存映射成为一个地址空间(物理地址空间)。

        1)操作系统会假定内存地址从0开始。

        2)内存是连续的或者说在一些大的粒度(比如 256M)上连续。

        在虚拟环境里,VMM就要模拟使的虚拟出来的内存仍符号客户机 OS 对内存的假定和认识,内存虚拟化要解决哪些问题呢?

        a.物理内存要被多个客户OS同时使用,但物理内存只有1个,地址0也只有一个,无法满足同时从0开始的要求。

        b.由于使用内存分区方式,物理内存分给多个系统使用,客户机OS内存连续性可解决但不灵活。

        要解决以上问题引入了一层新的地址空间---客户机物理地址空间来解决让虚拟机OS 看到一个虚拟的物理地址,让VMM 负责转化成物理地址给物理处理器执行。

       

      VMM需要做哪些事情呢?

      1)给定一个虚拟机,维护客户机物理地址到宿主机物理地址之间的映射关系。

      2)截获虚拟机对客户机物理地址的访问,将其转化为物理地址。

      二、内存虚拟化

      ·内存全虚拟化技术

      通过使用影子页表(Shadow Page Table)实现虚拟化。

      VMM 为每个Guest 都维护一个影子页表,影子页表维护虚拟地址(VA)到机器地址(MA)的映射关系。而Guest页表维护VA到客户机物理地址(GPA)的映射关系。

      当VMM捕获到Guest 页表的修改后,VMM 会查找负责GPA 到MA 映射的P2M 页表或者哈希函数,找到与该GPA对应的MA,再将MA填充到真正在硬件上起作用的影子页表,从而形成 VA 到 MA 的映射关系。而 Guest 的页表则无需变动。

       

      ·内存半虚拟化技术

      通过使用页表写入法实现虚拟化

      Guest OS 在创建一个新的页表时,会向VMM注册该页表。之后在 Guest 运行的时候,VMM 将不断的管理和维护这个表,使Guest 上面的程序能直接访问到合适的地址。

      ·内存硬件辅助虚拟化技术

      通过扩展页表EPT(extended page table)实现虚拟化。

      EPT通过使用硬件虚拟化技术,使其能在原有的页表的基础上,增加一个EPT页表,用于记录GPA到MA的映射关系。VMM预先把EPT页表设置到CPU中。

      Guest 修改Guest 页表,无需VMM干预。地址转换时,CPU 自动查找两张页表完成 Guest 虚拟地址到机器地址的转换,从而降低整个内存虚拟化所需的开销。

      

      

  • 相关阅读:
    Asp.net2.0 中自定义过滤器对Response内容进行处理 dodo
    自动化测试工具 dodo
    TestDriven.NET 2.0——单元测试的好助手(转) dodo
    JS弹出窗口的运用与技巧 dodo
    ElasticSearch 简介 规格严格
    修改PostgreSQL字段长度导致cached plan must not change result type错误 规格严格
    Linux系统更改时区(转) 规格严格
    mvn编译“Cannot find matching toolchain definitions for the following toolchain types“报错解决方法 规格严格
    ElasticSearch 集群 & 数据备份 & 优化 规格严格
    Elasticsearch黑鸟教程22:索引模板的详细介绍 规格严格
  • 原文地址:https://www.cnblogs.com/aaronax/p/5692496.html
Copyright © 2011-2022 走看看