您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 82系统虚拟化与云计算3_内存虚拟化
系统虚拟化与云计算系统虚拟化与云计算商彦磊商彦磊shangyl@bupt.edu.cn北京邮电大学网络技术研究院网络与交换技术国家重点实验室网络与交换技术国家重点实验室教学内容绪论算体系架构与虚拟化技术计算体系架构与虚拟化技术虚拟化概述虚拟化概述CPU的虚拟化内存虚拟化内存虚拟化I/O虚拟化虚拟化实施与应用虚拟化的现状与未来虚拟化的现状与未来内存虚拟化计算机内存架构内存虚拟化的必要性内存虚拟化概述内存虚拟化概述内存虚拟化方法内存架构地址空间物理地址空间物理地址空间虚拟地址空间地址地址逻辑地址虚拟地址物理地址内存管理机制分段机制分段机制分页机制计算机系统结构计算机系统结构CPUMCPUMMUMemoryController本地总线Interface高速I/O 总线NICControlleBidFrameNICControllerBridgeFrameBufferLANLAN低速低速I/O 总线USBCD-ROM地址空间内存可以视为一个大数组,地址就是数组的索引地址空间是更大的数组包括两种类型:地址空间是更大的数组,包括两种类型:物理地址空间虚虚拟地址空间物理地址空间对CPU而言,内存和其他硬件设备都是可以使用的资源用的资源资源组合在一起分布在CPU的物理地址空间CPU使用物理地址索引这些资源X86系统CPU的物理地址空间为4GBX86系统CPU的物理地址空间为4GB内存和I/O地址只占用物理地址空间的一部分(内存可以I/O设备共享地址空间参考I/O虚拟化)存可以I/O设备共享地址空间,参考I/O虚拟化)04GB物理地址空间物理地址空间RAMROM设备帧缓冲器虚拟地址空间一个平台只有一个物理地址空间每个程序都认为自己独享整个平台的硬件资源为了让多个程序有效地隔离和使用物理地址空为了让多个程序有效地隔离和使用物理地址空间的资源,引入虚拟地址空间CPU负责将虚拟地址转换成物理地址,使程序能够正确访问到该虚拟地址空间所映射到的物能够正确访问到该虚拟地址空间所映射到的物理地址空间虚拟地址空间04GB虚拟地址空间当前进程操作系统虚拟地址空间04GB物理地址空间RAMROM设备帧缓冲器地址根据访问的地址空间不同,索引可以分为虚拟地址和物理地址逻辑地址逻辑地址虚拟地址物理地址物理地址由于x86的段机制,还有一种另外的地址:逻辑地址逻辑地址逻辑地址是程序直接使用的地址逻辑地址由16位的段选择符和一个32位的偏移量构成的偏移量构成虚拟地址虚拟地址又称为线性地址虚拟地址是逻辑地址转换后的结果,用于索引虚拟地址空间于索引虚拟地址空间当CPU使用分页机制时,虚拟地址必须转换成物理地址才能访问平台内存或硬件设备件未启用分页机制时,虚拟地址等于物理地址地址物理地址为了唯一标识,处理器采用统一编址的方式将物理内存映射为物理地址空间理内存映射为物理地址空间物理地址用于索引物理地址空间是CPU提交到总线用于访问平台内存和硬件设备的最终地址和其他地址的关系:分段机制启用,分页未启用逻辑地址→虚拟地址=物理地址分段、分页机制同时启用逻辑地址→虚拟地址→物理地址物理地址举例分段机制分段是一种简单的内存管理机制,把内存划分成以起始地址和长度描述的段始地址和长度描述的段分段机制构成四个基本部分:逻辑地址、段选择寄存器、段描述符和段四个基本部分:逻辑地址、段选择寄存器、段描述符和段描述符表核心思想使用段描述符描述段的基地址长度以及各种属性使用段描述符描述段的基地址、长度以及各种属性。当程序使用逻辑地址访问内存的某个部分时,CPU通过逻辑地址中的段选择符索引段描述符表以得到该内存逻辑地址中的段选择符索引段描述符表以得到该内存对应的段描述符,根据段描述符中的基地址将逻辑地址转换为虚拟地址分段机制分页机制分页机制是用粒度化的单位“页”管理虚拟地址空间和物理地址空间分页机制的核心思想分页机制的核心思想通过页表将虚拟地址转换成物理地址,配合旁路转换缓冲区(TLB)加速地址转换转换缓冲区(TLB)加速地址转换分页机制构成主要由页表、CR3寄存器和TLB三个部件构成分页机制页表的概念页表是将虚拟地址转换成物理地址的数据结构一个地址对齐到页边界后的值称为页帧号(页框架)实际是该地址所在页面的基地址框架),实际是该地址所在页面的基地址虚拟地址对应的页帧号即虚拟页帧号(VFN)帧帧机物理地址对应的页帧号即物理页帧号(PFN)或机器页帧号(MFN)页表也可视为存储VFN到PFN映射的数据结构页表的组成页目录项(PDE)页目录项包含页表的物理地址页目录项包含页表的物理地址页目录项存放在页目录(PD)中页目录的物理地址存放在控制寄存器(CR3)也称页目录的物理地址存放在控制寄存器(CR3),也称为页目录基地址寄存器(PDBR)页表项(PTE)页表项(PTE)页表项包含该虚拟地址对应的PFNPTE存放在页表(PT)中存放在页表中通过虚拟地址的偏移量0~11位和基地址,就可以得到虚拟地址对应的物理地址二级页表TLB(TranslationLookasideBuffer)旁路转换缓冲区TLB用来对最近用到的页面映射进行缓存TLB提高了地址转换效率TLB提高了地址转换效率当CPU访问某个虚拟地址,其所在页面的映射存在于TLB中时,无须查找页表即可进行地址转换TLB中时,无须查找页表即可进行地址转换TLB保存的是VFN到PFN的转换CPU从TLB获得个虚拟地址对应的PFN后要与CPU从TLB获得一个虚拟地址对应的PFN后,要与虚拟地址的偏移相加,得到最后的物理地址并非从TLB中获取物理地址虚拟地址转换成物理地址的过程虚拟地址物理地址TLB虚拟地址物理地址1245TLB12345操作系统的页面失效处理程序进程页表效处理程序页表2内存虚拟化的必要性在未进行虚拟化之前,操作系统对内存的要求:物理地址从0开始;内存地址是连续的;内存是续的;VMM与客户OS对内存认识上的冲突在CPU虚拟化后虚拟机监视器VMM成为硬件资源的在CPU虚拟化后,虚拟机监视器VMM成为硬件资源的管理者;操作系统变为了客户OS,不再管理物理资源VMM必须对客户OS所访问的内存进行虚拟化VMM必须对客户OS所访问的内存进行虚拟化内存虚拟化的目标为每个客户OS提供从0开始的内存地址空间为每个客户OS提供连续的内存地址空间在虚拟机之间虚拟机与VMM之间进行有效在虚拟机之间、虚拟机与VMM之间进行有效隔离防止某个虚拟机内部的活动影响到其他的虚拟机甚至是VMM本身,从而造成安全上的漏洞客户机物理地址的引入内存虚拟化的核心在于引入新的地址空间:客户机物理地址空间理地址空间引入虚拟化后,VMM负责管理和分配每个虚拟机的物理内存客户机操作系统看到的是一个虚构的客户机理内存,客户机操作系统看到的是一个虚构的客户机物理地址空间,指令目标地址是一个客户机物理地址无虚拟化情况下,客户机物理地址就是实际物理地址无虚拟化情况下,客户机物理地址就是实际物理地址在虚拟化情况下,客户机物理地址不能直接发送到系统总线上VMM需要负责先将客户机物理地址转换成一个实际物理地址后,再交由物理处理器来执行虚拟化后的三种地址空间/内存内存虚拟化的主要任务引入了客户机物理地址空间,内存虚拟化就主要处理以下两个方面的问题个方面的问题:给定一个虚拟机,维护客户机物理地址到宿主机物理地址之间的映射关系之间的映射关系截取虚拟机对客户机物理地址的访问,根据所记录的映射关系,将其转换成宿主机物理地址关系,将其转换成宿主机物理地址维护VMM与客户机以及多个客户机之间的隔离性客户机物理地址到宿主机物理客户机物理地址到宿主机物理地址的映射这是一个数据结构的映射问题客户机OS维护虚拟机中进程所使用的虚拟地址到客户机物理地址客户机OS维护虚拟机中进程所使用的虚拟地址到客户机物理地址的映射用公式表示:GPA=g(GVA)用公式表示g()GVA代表客户机虚拟地址,GPA代表客户机物理地址VMM维护客户机物理地址到宿主机物理地址之间的映射用公式表示:HPA=f(GPA)HPA代表宿主机物理地址虚拟机进程所使用的客户机虚拟地址要变成物理处理器可以执行虚拟机进程所使用的客户机虚拟地址要变成物理处理器可以执行的宿主机物理地址,需要经过两层转换,即:HPA=f(g(GVA))内存虚拟化方法基于软件的内存虚拟化方法影子页表法硬件辅助内存虚拟化硬件辅助内存虚拟化VT-xETB类虚拟化页表写入法页表写入法两次地址翻译在客户机物理地址空间后,客户机的应用程序要在物理内存分配资源就需要以下两次转换:理内存分配资源,就需要以下两次转换:GVA→GPA客户机虚拟地址(GVA,GuestVirtualAddress)到客户客户机虚拟地址(GVA,GuestVirtualAddress)到客户机物理地址(GPA,GuestPhysicalAddress)的地址转换客户OS完成客户OS完成GPA→HPA客户机物理地址(GPA)到宿主机物理地址(HPA,Host客户机物理地址(GPA)到宿主机物理地址(HPA,HostPhysicalAddress)的地址转换VMM完成GPA与HPA映射关系表为了实现GPA→HPA的地址翻译,VMM为每个虚拟机动态维护一张从GPA到HPA映射关系表VMM截获修改客户机页表和刷新TLB的指令,根据GPA到HPA映射关系表,修改从GVA到GPA映射的操作,变成修改GVA到相应HPA映射的操作0起始地址引入地址映射表后,HPA只有一个0起始地址;但在不同GPA空间里,可以各有一个从0开始地址地址连续性客户OS看来连续的客户机物理内存空间其对应的宿主机物理内存空间可能客户OS看来连续的客户机物理内存空间,其对应的宿主机物理内存空间可能是不连续的VMM为多个虚拟机分配宿主机物理内存的灵活性,提高了宿主机物理内存的利用率利用率隔离性VMM通过映射表确保运行于同一宿主机上的不同客户机访问的是不同的物理内存,即相同的客户机物理地址被映射到了不同的宿主机物理地址上内存虚拟化方法基于软件的内存虚拟化方法影子页表法硬件辅助内存虚拟化硬件辅助内存虚拟化类虚拟化影子页表(1)一份影子页表与一份客户OS的页表对应;(2)影子页表完成GPA直(2)影子页表完成GPA直接到HPA的地址翻译(3)有的材料中:(3)有的材料中:客户机虚拟地址-虚拟地址;客户机物理地址-物理地址;宿主机物理地址-机器地址;宿主机物理地址-机器地址;虚拟MMU虚拟MMU为了使影子页表工作,VMM要对MMU进行虚拟化客户OS的页表不能被物理MMU直接利用进行地址翻译客户OS所能看到和操作的都是虚拟MMU客户OS所维护的页表只是被客户OS载入到虚拟MMU不能被物理MMU直接利用来进行MMU硬件实现的地址翻译真正被VMM载入到物理MMU中的页表是影子页表引入影子页表的系统结构影子页表的作用影子页表是被物理MMU所装载使用的页表VMM要为客户OS的每套页表都维护相应的影子页表影子页表简化了地址翻译影子页表简化了地址翻译有了影子页表,普通内存访问只需使用影子页表即可实现从GVA到HPA的转换实现从GVA到HPA的转换不需要在每次访问内存时都进行GVA到GPA以及GPA到HPA的两次转换到HPA的两次转换影子页表可降低性能开销影子页表与客户OS页表影子页表的基本原理影子页表的结构并不一定与客户机页表的结构一致例如,在64位宿主机上,可以运行32位客户机例如,在64位宿主机上,可以运行32位客户机相对于同一个虚拟地址,在影子页表中最后一级页表的页表项所指向的宿主机物理页必须级页表的页表项所指向的宿主机物理页必须是客户机物理页在客户机物理地址与宿主机物理地址映射表中相对应的宿主机物理页影子页表的更新与维护客户机OS使
本文标题:82系统虚拟化与云计算3_内存虚拟化
链接地址:https://www.777doc.com/doc-6068201 .html