CN101477495B - 分布式内存虚拟化技术的实现方法 - Google Patents

分布式内存虚拟化技术的实现方法 Download PDF

Info

Publication number
CN101477495B
CN101477495B CN2008102250862A CN200810225086A CN101477495B CN 101477495 B CN101477495 B CN 101477495B CN 2008102250862 A CN2008102250862 A CN 2008102250862A CN 200810225086 A CN200810225086 A CN 200810225086A CN 101477495 B CN101477495 B CN 101477495B
Authority
CN
China
Prior art keywords
client
page
spt
mapping
authority
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN2008102250862A
Other languages
English (en)
Other versions
CN101477495A (zh
Inventor
王箫
肖利民
张萧
祝明发
刘忠麟
李响山
彭近兵
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Beihang University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beihang University filed Critical Beihang University
Priority to CN2008102250862A priority Critical patent/CN101477495B/zh
Publication of CN101477495A publication Critical patent/CN101477495A/zh
Application granted granted Critical
Publication of CN101477495B publication Critical patent/CN101477495B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明提供一种分布式内存虚拟化技术的实现方法,它主要采用最新的硬件和软件相结合的虚拟化技术,结合分布式共享存储算法将分布于多主机的内存资源进行虚拟化和整合,为上层客户操作系统提供一个共享的单一物理地址空间,实现客户操作系统对分布式内存的管理和使用。本发明在现有的成熟技术基础上进行创新,实施简便,具有良好的使用和发展前景。

Description

分布式内存虚拟化技术的实现方法 
(一)技术领域
本发明采用最新的硬件和软件相结合的虚拟化技术,结合分布式共享存储算法将分布于多主机的内存资源进行虚拟化和整合.它涉及计算机虚拟化技术中的内存虚拟化领域以及分布式系统中的分布式共享存储领域。属于计算机技术领域。 
(二)背景技术
早在上个世纪60年代末70年代初IBM公司就在大型机上实现了商用的虚拟机,诸多文献描述了IBM在OS360使用的虚拟机的实现以及经典的虚拟机体系结构并描述了利用虚拟机监控器实现虚拟化的方法。研究人员总结了第三代计算机可虚拟性(Virtualizability):指出可虚拟性主要依赖于计算机指令集中敏感指令集的存在方式。同时总结了可虚拟性的两个重要定理: 
定理一:对于任何通常意义上的第三代计算机,如果该计算机敏感指令集是特权指令集的子集,就可以在此计算机上创建一个虚拟机监控器。 
定理二:对于任何通常意义上的第三代计算机,如果该计算机的用户敏感指令集是特权指令集的子集,就可以在此计算机上创建一个混合式(hybrid)的虚拟机监控器。 
由于大多数计算机并不满足定理一的要求,所以一些文献放松了要求:只要符合定理二的要求就可以利用陷入-模拟的方式(trap-and-emulate)完成虚拟化。可虚拟化的关键是对敏感的非特权指令的处理。对这种指令的不同处理方式引发了下面几种不同的虚拟化方式。 
1)基于二进制翻译的全虚拟化(Full Virtualization with BinaryTranslation)。这种方式动态的扫描二进制代码,将敏感指令替换为跳转到相应模拟例程。通过这种方式避免敏感指令的产生。VMware公司已经可以提供基于这种方式的商业化解决方案。这是目前唯一的在IA32/Intel 64体系结构下不需要特殊硬件辅助实现全虚拟化的方式。但这种方案也存在明显的缺陷:由于要动态的监控并即时翻译二进制码,性能上会有所损失。 
2)硬件辅助的虚拟化(Hardware Assisted Virtualization)。这种方式通过扩展指令集,通过硬件完成传统虚拟机监控器(Virtual Machine Monitor,VMM)所需要的陷入以及状态切换。通过这种方式可以极大地简化虚拟机的设计。但是由于硬件在状态切换的时候会保存整个处理器的状态并切换地址空间,由此带来的开销不可忽略,特别是在虚拟机与虚拟机监控器频繁切换的情况下。本发明专利采用的就是这种方式实现VMM。 
3)准虚拟化(Para-virtualization)。这种方式通过静态的改写客户操作系统源代码,通过客户操作系统与虚拟机监控器显示协作的方式完成虚拟化策略。开放源代码的虚拟机监控器Xen就是基于这种技术。这种技术通过VM对VMM 的感知,避免了传统陷入-模拟方式效率较低的问题,但需要对客户操作系统源代码进行修改。 
内存虚拟化: 
内存虚拟化技术是虚拟化技术的分支,主要的作用是为虚拟机提供虚拟化的地址空间地址变换。主流的内存虚拟化技术有如下几种: 
1)基于超级调用(Hypercall)的准虚拟化方式:这种方式的特点是改写客户操作系统源代码,将所有MMU相关的操作都通过超级调用的方式请求VMM协助完成。这方面典型的代表为Xen支持的准虚拟化虚拟机。 
2)基于影子页表(Shadow Pagetable,SPT)的全虚拟化方式:这种方式的主要特点是硬件使用与客户页表对应的影子页表进行寻址。主要代表为Xen与VirtualIron。这种方式的优势在于在缺少硬件支持的情况下达到较高的性能。缺点是实现复杂,特别对于支持多种寻址方式的处理器。 
3)硬件辅助的内存虚拟化方式:这种方式的原理是通过在传统的页表层次之下添加一个由VMM维护的额外层次,处理器寻址时一次查询客户页表以及该额外页表层次,完成寻址。AMD公司的内嵌式分页(Nested Paging)以及Intel公司的扩展分页(Extended Paging)就是这种技术的代表。 
4)影子TLB方式(Shadow TLB):在软件可控TLB体系结构上,VMM可以通过捕获TLB缺失(TLB miss),按照与影子页表类似的方式完成内存的虚拟化。在软件可控TLB的体系结构上实现的虚拟机大多采用这种方式。 
5)操作系统支持的内存映射方式:采用这种MMU虚拟化方式的VMM一般都是基于宿主操作系统的虚拟机。这些类型的虚拟机利用操作系统进程实现虚拟机的抽象。现代操作系统大都提供mmap系统调用来操纵进程对应的虚拟地址空间,从而为VMM利用mmap建立虚拟机寻址所需要的映射提供了便利。但由于进程地址空间的限制,这种虚拟化的方式通常会与准虚拟化技术结合实现。 
分布式共享存储技术 
分布式共享存储技术的本质是利用软件在内存分布的计算机系统中,通过软件模拟缓存一致性协议为应用提供一个共享内存的视图。分布式共享存储技术的核心是其一致性协议。 
Kai Li在其博士论文中提出了软件分布式存储(Distributed SharedMemory,DSM)的概念并描述了软件分布式共享存储的原型系统—IVY。以现在的观点考查,其提出的算法是基于虚拟内存的单写者多读者的软件分布式共享存储算法,该算法基于顺序一致性模型。该论文中提出了算法的多种实现方式,主要可以分为两类:一种实现类似于当今的NUMA(Non Uniform Memory Access)体系结构;另一种实现类似COMA体系结构(Cache Only Machine Architecture)。自从分布式存储的概念提出以来,研究人员在这方面做出了大量的研究,主要集中在两个方面: 
1)尽量减少由于DSM引发的通信,研究人员大都通过放松一致性达到这个 
目的。 
2)解决DSM中的伪共享问题,该问题是由于共享粒度与访问对象的粒度不 
一致造成的。 
目前的DSM实现大多集中于用户态,中间件或者操作系统中。本发明阐述的系统结合内存虚拟化技术与分布式共享存储技术,在操作系统之下的VMM中实现了分布式共享存储算法。
(三)发明内容
1  目的: 
本发明提供一种分布式内存虚拟化技术的实现方法,它主要采用最新的硬件和软件相结合的虚拟化技术,结合分布式共享存储算法将分布于多主机的内存资源进行虚拟化和整合,为上层客户操作系统提供一个共享的单一物理地址空间,实现客户操作系统对分布式内存管理和使用。 
2  技术方案: 
2.1  方法概述 
本发明专利基于集群系统-一种通过外部互联网络连接的多计算机系统,其特点是内存以分布式的方式位于各个节点之间,集群中的计算机需要通过网络传递消息的方式进行合作。本发明专利的目标是在机群系统之上利用虚拟化技术提供具有对称式多处理器(Symmetric Multi-Processors,SMP)特性的虚拟机。SMP系统的特点是,多个处理器之间拥有共享的内存,处理器通过共享的内存进行协作。 
本发明专利通过在机群节点上部署VMM,在机群系统的物理结构上提供具有SMP特性的虚拟机。通过在VMM中实现分布式共享存储算法为虚拟机提供共享的物理地址空间,借助虚拟化技术提供具有SMP特性的虚拟机,使支持SMP结构的商业化的操作系统无需修改即可运行在该虚拟机中。从虚拟机中的客户操作系统看来,其认为自己运行于具有共享内存特性的SMP体系结构之上。 
VMM的内存虚拟化模块负责为客户操作系统提供一个客户物理地址空间,并且对虚拟机的寻址过程进行虚拟化,同时还负责判断远程映射页面并触发软件DSM算法。 
软件DSM模块负责模拟缓存一致性协议,使该客户操作系统看到一个缓存一致的共享地址空间,保证客户操作系统以及客户应用运行的正确性。 
2.2系统结构 
整个系统按功能可以分为5个模块: 
■ SPT模块用于为虚拟机提供一个共享客户物理地址空间。 
■ P2M用于负责SPT与DSM模块的协作。 
■ DSM用于实现软件DSM算法。 
■ 接口模块用为其它虚拟化模块提供访问共享内存的方法。 
■其它虚拟化模块包括实现处理器虚拟化,I/O虚拟化等完成整个虚拟化策略所必须的其它模块。 
与本发明相关的模块包括: 
SPT(SPT)模块: 
VMM利用SPT为虚拟机提供虚拟化的地址空间,地址变换以及相应的寻址寄存器。SPT中记录的是线性地址到机器物理地址的映射。VMM通过查询GPT可得到线性地址到客户物理地址的映射,通过查询P2M可得到客户物理地址到机器物理地址的映射,最终得到线性地址到机器物理地址的映射。 
SPT模块通过维护虚拟的页表基址寄存器以及SPT实现内存虚拟化。虚拟机运行时,物理硬件使用VMM维护的SPT进行寻址。SPT中的映射内容由GPT派生(同步)而来,其中保存由线性地址到机器地址的映射。该同步过程由VMM负责完成,每当VMM捕获虚拟机产生的缺页异常或者TLB刷新指令,SPT首先会查询GPT,之后会进行同步操作。当客户映射为本地映射时,将GPT中维护的线性地址到物理地址的映射转换 为SPT中的线性地址到机器地址的映射。当客户映射为非本地映射时,在SPT中标记相应的映射为缺页以触发缺页异常。 
每当客户操作系统更新页表基址寄存器,VMM相应地将硬件寻址使用的页表基址寄存器更换为对应的顶级SPT。由于硬件使用SPT进行寻址,所以硬件TLB中保存的是由线性地址到机器地址的映射。 
SPT的同步过程是由查询GPT以及P2M完成的。SPT映射项包含两个部分: 
1)映射页面部分:指明了线性地址到机器地址的映射,以及映射到具体的机器页面号。该机器页面号可由GPT以及P2M表获取。 
2)映射权限部分:指明了允许访问的权限,访问权限并非根据GPT获得,而是由DSM控制的P2M映射权限得到,以满足DSM算法的要求。 
在虚拟机运行时,硬件使用SPT进行寻址。当SPT中存在有效映射项时,此次寻址请求可以直接完成;当SPT中的映射项或者寻址请求与映射权限冲突时产生的缺页异常会被VMM所捕获,触发内存虚拟化策略以及DSM算法。 
P2M模块: 
P2M模块保存客户物理地址到机器地址的映射,用于实现DSM与SPT的协作。具体的映射内容包括: 
1)本地的客户物理页面对应的机器页面号。 
2)映射权限:读写权限以及是否有效。 
3)映射类型:内存映射还是内存映射I/O映射。 
4)DSM元数据:用于实现DSM策略的算法相关数据结构,DSM算法依据这些结构做出决策。 
P2M由DSM模块负责维护,供内存虚拟化模块查询并生成对应的SPT。P2M模块功能主要有: 
1)SPT与GPT同步时产生SPT映射项: 
当需要同步SPT与GPT时,VMM首先查询GPT得到线性地址到物理地址的映射,之后会查询P2M,得到物理地址到机器地址的映射。当映射为本地映射时,VMM合并上述两种映射,得到线性地址到机器地址的映射并保存在SPT中。 
2)保存DSM算法数据用于实现共享地址空间: 
DSM算法的元数据同时保存在P2M中,DSM算法会查询并且变更P2M映射。当P2M映射被DSM算法改变后,P2M模块会通知SPT模块,对相应的SPT中的映射做出与P2M映射一致的更改。 
3)P2M中的映射类型指明了对应映射是内存映射I/O还是直接内存映射。对于映射到虚拟设备上的客户物理地址,P2M总是标记对应的映射无效。SPT在尝试同步该映射时,对应映射项也会被标记为无效。当客户指令尝试进行内存映射I/O的访问时,会产生缺页异常。SPT捕获该缺页异常,在查询P2M后得知该地址映射至虚拟设备。SPT因此并不启动DSM而是请求I/O虚拟化模块完成对内存映射I/O的模拟。 
分布式共享存储(DSM)模块: 
分布式共享存储模块主要利用现有的分布式共享存储算法,在物理内存分布的基础上,提供共享内存。本发明专利结合了SPT与DSM,实现共享的客户物理内存。 
由于SPT映射内容由GPT与P2M得出,在P2M中的远程页面被同步到SPT时其映射是无效的。因此当客户指令尝试访问该页面时会产生缺页异常,并触发 DSM算法从远程迁移该页面至本地。同样地,当DSM算法迁移对应的页面至本地后,会更新P2M映射并通知SPT相应映射的更新。待SPT同步后,该映射即为有效的映射,客户指令即可通过该SPT映射访问对应节点上的机器内存。由于整个页面迁移过程对客户操作系统透明,使客户操作系统认为自己可以对共享的地址空间进行寻址。 
客户操作系统通过SPT间接地借助DSM完成对整个共享地址空间的寻址。而其它的虚拟化模块需要直接的请求DSM: 
1)处理器虚拟化模块:在模拟指令执行时的取指令与取操作数都必须请求DSM模块,因为对应的操作数与指令所在页面可能位于远程。 
2)I/O虚拟化模块:在模拟DMA的时候,对应的客户操作系统主存访问也必须通过DSM。 
接口模块: 
为了实现单一地址空间,必须为其它的虚拟化模块如I/O虚拟化以及指令集虚拟化模块提供访问客户操作系统主存的方式。与SPT不同,接口模块就为这些模块提供了调用DSM模块的接口,其它的虚拟化模块需要主动的调用DSM算法,确保访问到正确的客户主存数据。 
2.3系统工作流程 
初始化阶段: 
系统在初始化阶段区分两类节点:系统中选取一个节点作为启动节点,其余节点作为非启动节点。 
P2M初始化:P2M的初始化包含两部分,初始化P2M映射以及初始化DSM元数据。系统初始化时,在各自节点分配内存供客户操作系统使用,并初始化对应的P2M映射。对于启动节点,映射权限被设定为读写,而在非启动节点,映射权限被设定为缺页。DSM元数据按照对应DSM算法的要求进行初始化工作。 
SPT初始化:SPT仅在客户操作系统开启分页后使用,当系统处于初始化阶段时,由于客户操作系统处于实模式,并未开启分页。所以此时并未使用SPT而是直接使用P2M表进行寻址。当客户操作系统开启分页时,VMM负责创建对应页表的SPT并利用之后的同步操作,不断的更新SPT的内容。 
客户操作系统的启动遵循SMP多处理器启动序列:首先客户操作系统会在主节点的启动处理器(虚拟处理器)(Bootstrapping Processor,BSP)上启动,此时对应的虚拟处理器位于实模式,其直接使用P2M作为页表。当其完成页表初始化并开启分页后,对应的操作会被VMM捕获从而针对其使用页表创建相应的SPT,此时虚拟处理器对应的物理处理器使用SPT进行寻址。当BSP启动辅助处理器(Auxiliary Processor,AP)时,AP会根据BSP发来的消息从指定的地址启动。位于非启动节点的AP启动时由于指定地址对应的映射在P2M表中不存在从而引发缺页异常,该异常被VMM捕获触发DSM页面迁移。之后AP所需要的数据和指令都通过DSM从主节点迁移到从节点,这就确保了AP的启动和运行。当AP开启分页后,与BSP一样,VMM会为AP创建对应的SPT。当多处理器启动完毕后,整个系统进入正常工作模式。 
系统正常工作阶段: 
系统中虚拟机的寻址过程由硬件与VMM协作完成。寻址请求首先会尝试搜索TLB,如果TLB命中,处理器会直接利用其搜索结果对DRAM进行寻址。如果TLB未命中,处理器转而搜索SPT。 
当P2M中对应的映射位于本地并且SPT与GPT处于同步状态时,SPT中相应 映射为有效映射。当处理器访问权限同时满足映射要求,这次SPT的搜索成功,处理器会将该映射装入TLB,完成此次寻址。 
当SPT搜索失败时,处理器会产生缺页异常,该异常可由VMM捕获。下面的四种情况可能导致这种情况的产生: 
1)GPT对应的映射项为无效:由于SPT由GPT同步而来,由于客户操作系统本身的策略产生的缺页异常,应该向客户操作系统注入该异常并由客户操作系统处理。这种情况可以通过VMM遍历GPT得知:当遍历过程中发现GPT的映射无效,VMM此时向客户操作系统注入这个缺页异常并返回客户指令流。 
2)GPT与SPT处于不同步状态:由于SPT的映射项派生于GPT,所以当客户操作系统修改GPT后,两者可能处于不同步的状态。这种情况下,VMM通过遍历GPT以及P2M表,并且同步SPT中相应的映射后,返回客户指令流。客户操作系统即可以使用新建立的映射进行寻址。 
3)GPT与SPT处于同步状态,但客户映射的页面位于远程:这种情况下产生缺页异常以后,VMM通过P2M中的无效映射得知该客户映射为远程映射,此时内存虚拟化模块请求DSM模块利用DSM算法从远程迁移对应的客户物理页面。当迁移完成后,内存虚拟化模块会在P2M表中建立相应的映射,并且利用该映射生成SPT中的映射,完成后返回客户指令流。客户操作系统即可使用此地址进行寻址。VMM操作的过程对客户操作系统透明,从客户操作系统的观点看其认为自己可以寻址任意的客户物理地址空间。 
4)GPT与SPT处于同步状态并且客户映射位于本地,但是访问权限有冲突:这种情况下,虚拟机试图进行的访问操作与SPT的权限有冲突。SPT相应的映射由GPT与P2M表计算得来,但SPT的映射权限仅仅由DSM维护的P2M表得到。当访问权限冲突时,需要启动DSM算法向页面的宿主节点请求获取相应的权限。当页面宿主节点授权了相应的访问后,DSM模块会修改P2M以及SPT中的映射权限。此时VMM返回客户指令流,虚拟机即可进行正确的寻址。 
MMU相关寄存器操作的捕获: 
由于内存虚拟化策略的要求,需要为虚拟机提供虚拟化的MMU寄存器。客户操作系统对相关MMU寄存器的访问需要被VMM捕获,VMM通过指令集虚拟化模块捕获相关操作,并对指令进行译码,译码后通知内存虚拟化模块做出相应的处理。主要的指令包含: 
更换页表基址寄存器指令:客户操作系统试图更换自己的页表基址,此时VMM要切换顶级的SPT与客户使用的新页表对应。 
刷新TLB指令:客户操作系统刷新TLB证明GPT与SPT中存在不同步的项,VMM捕获该指令以后重新对相应的SPT与GPT进行同步。 
DSM模块的影响: 
DSM模块不但要向远程节点发出请求,还要处理远程节点对本节点的请求。当DSM算法引发P2M映射变更后,DSM模块会通知内存虚拟化模块相关的变动,内存虚拟化模块会对SPT相应的映射项进行改动以反映这种变动。 
与其它虚拟化模块的协作: 
DSM模块同时负责为其它虚拟化模块提供一个访问主存的接口,确保其它虚拟化模块可以访问到正确的主存的数据。当其它虚拟化模块访问的页面位于远程 时,DSM模块负责将其迁移到本地,并供其它的内存虚拟化模块访问。 
综上所述,本发明一种分布式内存虚拟化技术的实现方法,此方法具体实现步骤如下: 
设虚拟机主存容量为M, 
步骤一、准备阶段: 
1.各结点VMM分配P2M表与SPT表所需空间,并将SPT对应所有内容清零; 
2.各节点VMM分别分配M大小的内存供虚拟机使用,并按照1:1映射的方式初始化P2M表中客户物理页面到机器页面的映射关系; 
3.启动节点的VMM标记其所有P2M映射无效; 
4.非启动节点VMM标记其所有P2M映射有效; 
5.各个节点将对应虚拟处理器的页表基址寄存器指向P2M表基址; 
6.当客户操作系统开启分页时,VMM将对应虚拟处理使用的页表机制更换为对应的SPT基址。 
步骤二、正常工作阶段: 
当VMM捕获客户操作系统开启分页时: 
1.将与对应虚拟处理器的SPT基址装入页表基址寄存器; 
当VMM捕获客户操作系统更改页表基址寄存器时: 
1.遍历SPT,将所有SPT最后一级的页面映射标记为无效; 
当VMM捕获客户操作系统刷新TLB操作时: 
1.获取要刷新TLB对应的线性地址; 
2.获得该线性地址对应各级页表查询的偏移量; 
3.根据页表偏移良遍历各级SPT,直至最低一级SPT映射项; 
4.并标记该映射项无效。 
当VMM捕获客户操作系统缺页异常时: 
1.获得引发缺页的线性地址与引发缺页的原因(读/写); 
2.获得该线性地址对应各级页表查询的偏移量; 
3.取得客户页表基址; 
4.查询P2M表获得但前级别客户页表对应的机器地址: 
a)若对应P2M映射无效,则启动DSM算法从远程获对应页面的只读复本; 
b)由页表查询偏移量查询与下一级页表对应的客户物理地址; 
c)若在查询客户页表的过程中,对应的客户页表映射为无效,则向客户操作系统注入缺页异常,由客户操作系统处理缺页; 
d)若在查询客户页表的过程中,若客户操作系统页表映射为只读,而引发缺页的原因是写操作,则向客户操作系统注入缺页异常,由客户操作系统处理缺页; 
5.重复过程5的客户页表查询过程,直至确定与该线性地址对应的客户物理页面; 
6.查询P2M表,确定与引发缺页的线性地址对应的机器页面: 
a)若对应的映射无效,则启动DSM算法,按照引发缺页的原因(读/写),从远程获取与该客户物理页面对应的复本; 
b)若P2M映射权限为只读,而引发缺页的原因是写,则启动DSM算法从远程获取与客户物理页面对应的可写复本; 
c)若对应的映射有效而且P2M映射权限满足客户访问要求时,启动对应该线性地址对应的SPT与GPT同步过程;
7.完成此次处理并返回客户指令流。 
步骤三、SPT与GPT同步过程: 
1.获得要同步的线性地址; 
2.查询客户页表(过程同上),获取与线性地址对应的客户物理页面与客户访问权限; 
3.查询P2M表,获取与客户物理页面对应的机器页面,与P2M权限; 
4.将客户访问权限与P2M权限中最严格的权限做为SPT权限; 
5.获取与线性地址对应的各级页表查询偏移; 
6.利用各级哈寻偏移,遍历SPT直至最后一级SPT映射项; 
7.将机器页面与SPT访问权限填入对应映射项; 
8.完成SPT与GPT同步过程。 
步骤四、DSM处理本地请求过程: 
1.获得请求客户物理页面与所需权限; 
2.启动DSM算法从远程按权限获取该客户物理页面对应复本; 
3.将P2M表中对应客户物理页面的权限更改为对应权限; 
4.完成本地处理过程。 
步骤五、DSM处理远程请求的过程: 
1.获取远程请求页面号以及权限; 
2.启动DSM算法将请求页面内容发送给请求节点; 
3.根据DSM算法要求修改P2M表映射权限; 
4.查找映射至该客户物理页面的所有SPT映射项,并将这些映射项标记为无效; 
5.完成远程处理过程。 
(3)优点及效果 
通过结合内存虚拟化技术与分布式共享存储技术,本发明为分布式系统提供了紧耦合的共享内存视图,极大的提高了分布式系统中的可管理性以及可编程性。通过结合其它的虚拟化策略,同时可以使商业化的操作系统以及应用软件跨节点的运行于分布式的集群系统中,降低了软件移植带来的复杂度。本发明在现有的成熟技术基础上进行创新,实施不难,具有良好的使用和发展前景。 
(四)附图说明
图1系统整体结构示意图 
图2影子页表协作示意图 
图3GPT/SPT同步示意图 
图4寻址过程示意图 
图5影子页表组织方式示意图 
图6 DSM内存组织示意图 
(五)具体实施方式
见图1、图2、图3、图4、图5、图6所示,具体实施步骤如下: 
设虚拟机主存容量为M, 
步骤一、准备阶段:
1.各结点VMM分配P2M表与SPT表所需空间,并将SPT对应所有内容清零; 
2.各节点VMM分别分配M大小的内存供虚拟机使用,并按照1:1映射的方式初始化P2M表中客户物理页面到机器页面的映射关系; 
3.启动节点的VMM标记其所有P2M映射无效; 
4.非启动节点VMM标记其所有P2M映射有效; 
5.各个节点将对应虚拟处理器的页表基址寄存器指向P2M表基址; 
6.当客户操作系统开启分页时,VMM将对应虚拟处理使用的页表机制更换为对应的SPT基址。 
步骤二、正常工作阶段: 
当VMM捕获客户操作系统开启分页时: 
1.将与对应虚拟处理器的SPT基址装入页表基址寄存器; 
当VMM捕获客户操作系统更改页表基址寄存器时: 
1.遍历SPT,将所有SPT最后一级的页面映射标记为无效; 
当VMM捕获客户操作系统刷新TLB操作时: 
1.获取要刷新TLB对应的线性地址; 
2.获得该线性地址对应各级页表查询的偏移量; 
3.根据页表偏移良遍历各级SPT,直至最低一级SPT映射项; 
4.并标记该映射项无效。 
当VMM捕获客户操作系统缺页异常时: 
1.获得引发缺页的线性地址与引发缺页的原因(读/写); 
2.获得该线性地址对应各级页表查询的偏移量; 
3.取得客户页表基址; 
4.查询P2M表获得但前级别客户页表对应的机器地址: 
a)若对应P2M映射无效,则启动DSM算法从远程获对应页面的只读复本; 
b)由页表查询偏移量查询与下一级页表对应的客户物理地址; 
c)若在查询客户页表的过程中,对应的客户页表映射为无效,则向客户操作系统注入缺页异常,由客户操作系统处理缺页; 
d)若在查询客户页表的过程中,若客户操作系统页表映射为只读,而引发缺页的原因是写操作,则向客户操作系统注入缺页异常,由客户操作系统处理缺页; 
5.重复过程5的客户页表查询过程,直至确定与该线性地址对应的客户物理页面; 
6.查询P2M表,确定与引发缺页的线性地址对应的机器页面: 
a)若对应的映射无效,则启动DSM算法,按照引发缺页的原因(读/写),从远程获取与该客户物理页面对应的复本; 
b)若P2M映射权限为只读,而引发缺页的原因是写,则启动DSM算法从远程获取与客户物理页面对应的可写复本; 
c)若对应的映射有效而且P2M映射权限满足客户访问要求时,启动对应该线性地址对应的SPT与GPT同步过程; 
7.完成此次处理并返回客户指令流。 
步骤三、SPT与GPT同步过程: 
1.获得要同步的线性地址; 
2.查询客户页表(过程同上),获取与线性地址对应的客户物理页面与客户访问权限;
3.查询P2M表,获取与客户物理页面对应的机器页面,与P2M权限; 
4.将客户访问权限与P2M权限中最严格的权限做为SPT权限; 
5.获取与线性地址对应的各级页表查询偏移; 
6.利用各级哈寻偏移,遍历SPT直至最后一级SPT映射项; 
7.将机器页面与SPT访问权限填入对应映射项; 
8.完成SPT与GPT同步过程。 
步骤四、DSM处理本地请求过程: 
1.获得请求客户物理页面与所需权限; 
2.启动DSM算法从远程按权限获取该客户物理页面对应复本; 
3.将P2M表中对应客户物理页面的权限更改为对应权限; 
4.完成本地处理过程。 
步骤五、DSM处理远程请求的过程: 
1.获取远程请求页面号以及权限; 
2.启动DSM算法将请求页面内容发送给请求节点; 
3.根据DSM算法要求修改P2M表映射权限; 
4.查找映射至该客户物理页面的所有SPT映射项,并将这些映射项标记为无效; 
5.完成远程处理过程。

Claims (1)

1.一种分布式内存虚拟化技术的实现方法,其特征在于:该实现方法步骤如下:
设虚拟机主存容量为M,
步骤一、准备阶段:
1.各结点VMM分配P2M表与SPT表所需空间,并将SPT对应所有内容清零;
2.各节点VMM分别分配M大小的内存供虚拟机使用,并按照1∶1映射的方式初始化P2M表中客户物理页面到机器页面的映射关系;
3.启动节点的VMM标记其所有P2M映射无效;
4.非启动节点VMM标记其所有P2M映射有效;
5.各个节点将对应虚拟处理器的页表基址寄存器指向P2M表基址;
6.当客户操作系统开启分页时,VMM将对应虚拟处理使用的页表机制更换为对应的SPT基址;
步骤二、正常工作阶段:
当VMM捕获客户操作系统开启分页时:
1.将与对应虚拟处理器的SPT基址装入页表基址寄存器;
当VMM捕获客户操作系统更改页表基址寄存器时:
1.遍历SPT,将所有SPT最后一级的页面映射标记为无效;
当VMM捕获客户操作系统刷新TLB操作时:
1.获取要刷新TLB对应的线性地址;
2.获得该线性地址对应各级页表查询的偏移量;
3.根据页表偏移良遍历各级SPT,直至最低一级SPT映射项;
4.并标记该映射项无效;
当VMM捕获客户操作系统缺页异常时:
1.获得引发缺页的线性地址与引发缺页的原因;
2.获得该线性地址对应各级页表查询的偏移量;
3.取得客户页表基址;
4..查询P2M表获得但前级别客户页表对应的机器地址:
a)若对应P2M映射无效,则启动DSM算法从远程获对应页面的只读复本;
b)由页表查询偏移量查询与下一级页表对应的客户物理地址;
c)若在查询客户页表的过程中,对应的客户页表映射为无效,则向客户操作系统注入缺页异常,由客户操作系统处理缺页;
d)若在查询客户页表的过程中,若客户操作系统页表映射为只读,而引发缺页的原因是写操作,则向客户操作系统注入缺页异常,由客户操作系统处理缺页;
5.重复上述客户页表查询过程,直至确定与该线性地址对应的客户物理页面;
6.查询P2M表,确定与引发缺页的线性地址对应的机器页面:
a)若对应的映射无效,则启动DSM算法,按照引发缺页的原因,从远程获取与该客户物理页面对应的复本;
b)若P2M映射权限为只读,而引发缺页的原因是写,则启动DSM算法从远程获取与客户物理页面对应的可写复本;
c)若对应的映射有效而且P2M映射权限满足客户访问要求时,启动对应该线性地址对应的SPT与GPT同步过程;
7.完成此次处理并返回客户指令流;
步骤三、SPT与GPT同步过程:
1.获得要同步的线性地址;
2.查询客户页表,获取与线性地址对应的客户物理页面与客户访问权限;
3.查询P2M表,获取与客户物理页面对应的机器页面,与P2M权限;
4.将客户访问权限与P2M权限中最严格的权限做为SPT权限;
5.获取与线性地址对应的各级页表查询偏移;
6.利用各级哈寻偏移,遍历SPT直至最后一级SPT映射项;
7.将机器页面与SPT访问权限填入对应映射项;
8.完成SPT与GPT同步过程;
步骤四、DSM处理本地请求过程:
1.获得请求客户物理页面与所需权限;
2.启动DSM算法从远程按权限获取该客户物理页面对应复本;
3.将P2M表中对应客户物理页面的权限更改为对应权限;
4.完成本地处理过程;
步骤五、DSM处理远程请求的过程:
1.获取远程请求页面号以及权限;
2.启动DSM算法将请求页面内容发送给请求节点;
3.根据DSM算法要求修改P2M表映射权限;
4.查找映射至该客户物理页面的所有SPT映射项,并将这些映射项标记为无效;
5.完成远程处理过程。
CN2008102250862A 2008-10-28 2008-10-28 分布式内存虚拟化技术的实现方法 Expired - Fee Related CN101477495B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2008102250862A CN101477495B (zh) 2008-10-28 2008-10-28 分布式内存虚拟化技术的实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2008102250862A CN101477495B (zh) 2008-10-28 2008-10-28 分布式内存虚拟化技术的实现方法

Publications (2)

Publication Number Publication Date
CN101477495A CN101477495A (zh) 2009-07-08
CN101477495B true CN101477495B (zh) 2011-03-16

Family

ID=40838216

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008102250862A Expired - Fee Related CN101477495B (zh) 2008-10-28 2008-10-28 分布式内存虚拟化技术的实现方法

Country Status (1)

Country Link
CN (1) CN101477495B (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101751284B (zh) * 2009-12-25 2013-04-24 华为技术有限公司 一种分布式虚拟机监控器的i/o资源调度方法
CN101854359B (zh) * 2010-05-19 2012-10-31 南京联创科技集团股份有限公司 基于虚拟化计算的权限控制方法
US8850156B2 (en) 2010-11-03 2014-09-30 Huawei Technologies Co., Ltd. Method and system for managing virtual machine storage space and physical host
CN101986285B (zh) * 2010-11-03 2012-09-19 华为技术有限公司 虚拟机存储空间管理方法、系统及物理主机
CN102184373B (zh) * 2011-05-30 2013-01-23 南京大学 基于保护模式与虚拟化机制实现操作系统安全核设计方法
WO2012163017A1 (zh) * 2011-10-21 2012-12-06 华为技术有限公司 分布式虚拟机访问异常的处理方法以及虚拟机监控器
CN107402891B (zh) * 2012-12-25 2020-12-22 华为技术有限公司 确定共享虚拟内存页面管理模式的方法和相关设备
CN103257929B (zh) * 2013-04-18 2016-03-16 中国科学院计算技术研究所 一种虚拟机内存映射方法及系统
CN104239237B (zh) * 2013-06-20 2017-07-14 华为技术有限公司 一种tlb管理方法及装置
TWI676898B (zh) * 2013-12-09 2019-11-11 安然國際科技有限公司 分散式記憶體磁碟群集儲存系統運作方法
EP3905054B1 (en) * 2014-08-12 2023-12-20 Huawei Technologies Co., Ltd. File management method, distributed storage system, and management node
CN106874105A (zh) * 2016-12-23 2017-06-20 北京北大众志微系统科技有限责任公司 一种基于数据对象感知的内存库划分方法和装置
CN110221779B (zh) * 2019-05-29 2020-06-19 清华大学 分布式持久性内存存储系统的构建方法
CN112099914B (zh) * 2020-09-03 2023-07-21 海光信息技术股份有限公司 一种虚拟机多核启动方法、虚拟机及处理器芯片

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1124378A (zh) * 1994-04-19 1996-06-12 株式会社日立制作所 数字处理器
US5784698A (en) * 1995-12-05 1998-07-21 International Business Machines Corporation Dynamic memory allocation that enalbes efficient use of buffer pool memory segments

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1124378A (zh) * 1994-04-19 1996-06-12 株式会社日立制作所 数字处理器
US5784698A (en) * 1995-12-05 1998-07-21 International Business Machines Corporation Dynamic memory allocation that enalbes efficient use of buffer pool memory segments

Also Published As

Publication number Publication date
CN101477495A (zh) 2009-07-08

Similar Documents

Publication Publication Date Title
CN101477495B (zh) 分布式内存虚拟化技术的实现方法
CN101477496B (zh) 基于分布式内存虚拟化的numa结构的实现方法
JP5214670B2 (ja) マルチプロセッサ仮想マシン環境においてアドレス変換をサポートする方法及び装置
Karakostas et al. Redundant memory mappings for fast access to large memories
Jacob et al. Virtual memory: Issues of implementation
KR100928353B1 (ko) 가상 머신 환경에서의 주소 변환 지원 방법 및 장치
CN100527098C (zh) 一种虚拟机管理器的动态内存映射方法
US7650482B2 (en) Enhanced shadow page table algorithms
Skarlatos et al. Elastic cuckoo page tables: Rethinking virtual memory translation for parallelism
EP2812795B1 (en) A method and apparatus for supporting address translation in a multiprocessor virtual machine environment using tracking data to eliminate interprocessor interrupts
US7484073B2 (en) Tagged translation lookaside buffers in a hypervisor computing environment
US8615643B2 (en) Operational efficiency of virtual TLBs
WO2009001153A1 (en) Memory protection unit in a virtual processing environment
US20110047546A1 (en) Mechanism for Out-of-Synch Virtual Machine Memory Management Optimization
Mittal A survey of techniques for architecting TLBs
Hajinazar et al. The virtual block interface: A flexible alternative to the conventional virtual memory framework
Dahlgren et al. Cache-only memory architectures
Skarlatos et al. Babelfish: Fusing address translations for containers
Milenkovic Microprocessor memory management units
Jacob Cache design for embedded real-time systems
Buhr et al. μ Database: A Toolkit for Constructing Memory Mapped Databases
Laux Jr et al. Back to the Past: When Segmentation Is More Efficient Than Paging
Picorel et al. SPARTA: A divide and conquer approach to address translation for accelerators
Alverti Hardware and Software Co-design for Efficient Memory Access
Bhattacharjee et al. Advanced VM Hardware-software Co-design

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: HUAWEI TECHNOLOGY CO LTD

Free format text: FORMER OWNER: BEIJING AERONAUTICS AND ASTRONAUTICS UNIV.

Effective date: 20110926

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 100191 HAIDIAN, BEIJING TO: 518129 SHENZHEN, GUANGDONG PROVINCE

TR01 Transfer of patent right

Effective date of registration: 20110926

Address after: 518129 headquarter office building of Bantian HUAWEI base, Longgang District, Shenzhen, Guangdong, China

Patentee after: Huawei Technologies Co., Ltd.

Address before: 100191 School of computer science and engineering, Beihang University, Xueyuan Road 37, Beijing, Haidian District

Patentee before: Beihang University

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20110316

Termination date: 20181028

CF01 Termination of patent right due to non-payment of annual fee