CN101158924A - 一种虚拟机管理器的动态内存映射方法 - Google Patents
一种虚拟机管理器的动态内存映射方法 Download PDFInfo
- Publication number
- CN101158924A CN101158924A CNA2007101781183A CN200710178118A CN101158924A CN 101158924 A CN101158924 A CN 101158924A CN A2007101781183 A CNA2007101781183 A CN A2007101781183A CN 200710178118 A CN200710178118 A CN 200710178118A CN 101158924 A CN101158924 A CN 101158924A
- Authority
- CN
- China
- Prior art keywords
- page
- virtual machine
- pool
- virtual
- machine manager
- 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.)
- Granted
Links
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种虚拟机管理器的动态内存映射方法,其步骤为:分别建立虚拟机和虚拟机管理器的页面池;虚拟机访问违例时虚拟机管理器动态建立并更新虚拟机物理内存集合P到虚拟机管理器页面池中的机器内存集合M的映射关系f(p);采用本发明的方法可以同时支持上层的按需取页、虚拟存储和内存共享功能,使得虚拟机管理器在充分保证虚拟机访问内存性能的前提下,实现虚拟机内存的动态管理和调配。
Description
技术领域
本发明涉及虚拟化方法,特别是虚拟机管理器的动态内存映射方法。
背景技术
虚拟机(Virtual Machine,VM)技术源于上世纪60年代,其核心思想是:在一台物理主机上虚拟出多个虚拟计算机(VM),其上能同时运行多个独立的操作系统,这些客户操作系统(Guest OS)通过虚拟机管理器(Virtual Machine Monitor,VMM)访问实际的物理资源。内存虚拟化是虚拟机管理器(VMM)的重要功能之一。由于内存是虚拟机最频繁访问的设备之一,内存虚拟化的效率将对虚拟机的性能产生重大影响。而由于现代计算机通常都采用段页式存储管理、多级页表等复杂的存储体系结构,这又给VMM的高性能内存虚拟化设计带来了很大挑战。
当需要在同一物理主机上同时部署多个虚拟机时,VMM能否提供可伸缩的内存管理功能就显得尤为重要。这是因为VMM需要实现物理内存在虚拟机之间的分割复用,如果这种分割是静态的,则一台物理主机上所能并发执行的虚拟机数量必然受到实际硬件的机器内存大小的限制。同时,由于虚拟机上运行的软件对内存的需求各不相同,而且是动态变化的,基于静态分割的内存管理机制必然会造成内存资源的不合理分配,从而大大影响虚拟机执行的性能。
因此,为了使VMM系统具有更好的伸缩性和可扩展性,理想的VMM应该提供以下一些内存管理功能:
■按需取页。只有当虚拟机真正需要的时候,VMM才将物理内存分配给它,而不是简单地将固定大小的内存空间划分给虚拟机。按需取页能够提高内存资源的利用率。
■虚拟存储。VMM应该能够利用交换等技术,给虚拟机提供超过实际机器内存大小的内存空间。虚拟机上的Guest OS能够象运行在裸机上一样,透明地使用VMM提供的整个“物理内存”。
■内存共享。VMM应该允许虚拟机内部、以及虚拟机之间只读地共享完全相同的内存区域,从而缓解大量虚拟机并发运行时的内存资源紧缺。内存共享是实现虚拟机快速复制的重要基础。
当前的虚拟机管理系统分别实现了以上部分管理功能。如开源虚拟机管理器Xen实现了基于Ballooning的虚拟存储技术,即允许VMM从其它虚拟机窃取一些未使用机器内存页面,给急需内存的虚拟机使用;VMWare公司的VMWare Workstation实现了基于交换的虚拟存储技术,即允许将虚拟机的部分物理内存页面交换到宿主操作系统(Host OS)的交换磁盘分区上;而VMWare ESX Server还实现了基于页面内容比较的虚拟机间内存共享技术。
但是,由于各种内存管理功能的底层的实现机制是相互独立的,现有虚拟机管理系统中的这些内存管理机制具有以下缺点:
第一、机制的可扩展性不强。受到开发周期的影响,上述VMM在实现不同的内存管理功能时,分别引入了不同的底层支持机制,导致内存管理模块日益复杂而难以管理,限制了系统的可扩展性。例如,为了实现Ballooning功能,Xen引入了Grant Table机制(参见2004年Keir Fraser,“Safe Hardware Access with the Xen Virtual Machine Monitor,”in Proceedings ofthe 1st Workshop on Operating System and Architectural Support),但是该机制并不适用于按需取页、内存交换和内存共享,因而难以继续加入这些内存管理功能。
第二、完整性和耦合度不高。现有VMM大都未能实现上述所有的内存管理功能。而即使是已实现的功能,也都分别采用独立的模块设计。由于模块所用到的底层机制是相互独立的,这些模块之间难以有效地协同工作,甚至是相互冲突的。例如在VMWare ESX Server中,内存共享机制是不能与交换机制同时启用的。而在实际应用中,我们往往希望VMM能够综合地、并发地利用所有可能的内存管理技术,实现资源利用率的最大化。
发明内容
本发明的目的是建立统一的动态内存映射机制,使得能够在充分保证虚拟机访问内存的性能的前提下,实现虚拟机内存的动态管理和调配。
我们认为,VMM应该用一套单一的机制来支持上层的按需取页、虚拟存储和内存共享功能,即该机制应该具有很好的通用性。通用性带来的好处是实现代码复用,并降低VMM本身的复杂性,同时能够有效地控制不同内存管理功能之间不兼容性。
同时,这套机制应该是高效的。由于内存是虚拟机最频繁访问的设备之一,内存虚拟化的效率将对虚拟机的性能产生重大影响。只有将该机制带来的性能的开销控制在10%以内,才能认为该机制是实用的。
此外,这套机制必须具有良好的可扩展性。利用它实现一个新的内存管理功能不应该影响到已实现的功能。另外,该机制不但能够适用于现有的内存管理功能,还要为今后可能的新内存管理技术提供支持。
综上,本发明是要提出一套通用的、高效的、可扩展的虚拟机内存管理机制,以解决现有VMM系统中的内存管理机制相互独立所带来的代码可维护性差、可扩展性差、耦合度低等难题。
针对以上问题,本发明提出了虚拟机的动态内存映射机制。动态内存映射是VMM进行内存管理的一种底层机制,它允许VMM在虚拟机运行时,动态地改变虚拟机的物理内存与真实硬件的机器内存的对应关系。从而能够很好地支持VMM实现按需取页、虚拟存储和内存共享等上层的内存管理功能。我们将从基本思想、主要构成、工作流程三个层次详细说明动态内存映射机制的发明内容。
一、动态内存映射机制的基本思想
现代计算机通常都具备内存分页保护机制,这给VMM进行内存虚拟化提供了必要硬件支持。但由于客户操作系统本身也会进行页式内存管理,虚拟机系统中实际上存在着三个地址概念:
■机器地址(Machine Address),指真实硬件的物理地址,即地址总线上应该出现的地址信号。
■物理地址(Guest Physical Address),指经过VMM抽象的、虚拟机所看到的伪物理地址。
■虚拟地址(Guest Virtual Address),指Guest OS提供给其应用程序使用的线性地址空间。
基于以上概念,本发明提出的动态内存映射模型的定义如下:
定义虚拟机所见到的物理内存为集合P(以“页面”为单位),虚拟机的生存周期为序列t0,t1,...,th,假设在时刻ti时,VMM提供给该虚拟机的机器内存为集合Mi(以“页面”为单位),映射fi是从P到Mi的一个部分函数,即对于任意的p∈P,fi(p)=或fi(p)={m},m∈Mi,且满足下列性质(函数的建立将在实施方式中描述):
(1)映射fi和其值域Mi允许随时间ti动态变化;
(2)若在某个时刻,虚拟机的物理地址p没有机器页面与之对应,即fi(p)=,则虚拟机对内存p的读写访问都将陷入VMM;
(3)若在某个时刻,虚拟机的两个物理地址映射到同一机器地址,即对任意两个不同的p1,p2∈P,若fi(p1)=fi(p2),则虚拟机对内存p1或者p2的写访问都将陷入VMM;
我们称函数序列F=f0,f1,...,fh是虚拟机内存P的一个动态内存映射。
在动态内存映射的定义中,性质(1)保证了映射fi和其值域Mi都是能够随着时间变化的,因此允许VMM动态调整虚拟机使用的机器内存集合,或者动态调整虚拟机的物理内存到机器内存的对应关系;性质(2)允许虚拟机的某些物理内存没有机器内存与之对应时,能够保证VMM能够介入虚拟机对这些内存的访问(包括读和写),并进行模拟;性质(3)允许虚拟机的某些物理内存共享同一机器内存,而且保证VMM能够介入虚拟机对共享内存的写访问,并进行模拟。因此,性质(1)是动态内存映射机制能够运作的基本要求;而(2)和(3)则是该机制能够用于实现按需取页、虚拟存储、内存共享等功能的必要条件,我们将导致陷入发生的内存访问操作称为“访问违例”,而将这两个性质一起称为“违例陷入性质”,违例陷入性质是动态内存映射机制的正确性保障。
二、动态内存映射机制的主要构成
为了建立和维护动态内存映射关系,本发明提出了“页面池”的概念,它是虚拟机物理资源集合M的一个具体实现,同时,本发明还设计了用于完成映射的主要数据结构,并描述了该数据结构是如何与页面池协同工作的;为了实现“违例陷入性质”,本发明利用当前VMM中广泛使用的影子页表(参见Yaozu Dong,et.al,Extending Xen*with IntelVirtualizationTechnology,Intel Technology Journal,Volume 10,Issue 3,August,2006)和页故障的处理机制(参见Andrew and S.,Tanenbaum.Modern Operating Systems,Second Edition.Prentice Hall,2002),并用逆映射(参见Avi Kivity,et.al,VMM:The Linux Virtual Machine Monitor,inProceedings of the Linux Symposium,June,2007)的方法实现了一个安全的违例陷入机制,保证了发生访问违例时,Guest OS会由于页故障而陷入VMM。
1、页面池
页面池是用于维护VMM分配给某个虚拟机的全部内存的数据结构。一个页面池由两个部分构成:空闲池(Free Pool)和活动池(Active Pool)。空闲池包含了当前分配给该虚拟机、但尚未被虚拟机使用的所有机器页面,而活动池则包含了所有已被虚拟机映射的机器页面。严格地说,活动池中的页面对应于集合f(P),而空闲池中的页面则对应于集合M-f(P)。
我们规定:
(1)虚拟机永远只能和活动池中的页面建立内存映射;
(2)VMM要改变页面池的大小时,永远只能向空闲池中添加新的机器页面,或者从空闲池中取出机器页面。
根据以上设计,页面池将包含以下操作:1、分配(allocate):将一个页面从空闲池移入活动池,并且保证为该页面建立映射。2、返还(return):将一个页面从活动池放回空闲池,之前必须保证删除了与该页面有关的所有内存映射。3、扩大(expand):将某些机器页面加入页面池的空闲池中,其结果是增大了虚拟机所能使用的机器内存(集合M)的大小。4、收缩(shrink):将某些机器页面从页面池的空闲池中删除,其结果是减小了虚拟机所能使用的机器内存(集合M)的大小。
在通常情况下,我们需要为每个虚拟机建立一个页面池,以保证虚拟机之间的独立性和隔离性。但是,如果允许虚拟机之间共享内存页面,则由多个虚拟机构成的虚拟机组共享同一个页面池也是可行的。
2、映射的表示
我们可以用一个大小为|P|的数组,如phys_mem[](P为虚拟机所见的物理内存集合),来表示映射关系f。该数组的元素值定义如下:
对于虚拟机的每个物理页面p∈P,
(1)若fi(p)=,则phys_mem[p]的值为空;
(2)若fi(p)={m},则phys_mem[p]指向机器页面m。
这样,如果fi(p)≠,VMM能够用phys_mem[p]来获得对应的机器页面,其时间开销为O(1)。而当phys_mem[p]的值为空时,VMM便可以知道Guest OS对物理内存p的访问发生了读访问违例。
3、违例陷入机制
为了实现动态内存映射定义中的“违例陷入性质”,我们在VMM中引入了违例陷入机制。该机制保证了运行中的Guest OS遇到访问违例时会陷入VMM,以保证VMM能够获得计算机的控制权并对违例访问加以模拟。这里将以采用影子页表技术的虚拟机系统为例,阐释本发明的解决方案。由于我们的违例陷入机制只对页表进行修改,因此它也同样适用于采用半虚拟化技术的虚拟机系统,例如Xen(参见Paul,Barham,et al.Xen and the Art of Virtualization.ACM SIGOPS Operating Systems Review,Proceedings of the nineteenth ACM symposium onOperating systems principles(SOSP).2003,Vol.37)。
由于影子页表是虚拟机访问机器内存的唯一途径,因此,只要保证VMM对映射f的更新能够反映到影子页表中,就能够利用MMU(Memory Management Unit)的硬件保护机制,保证虚拟机的访问违例会陷入VMM。若将Guest OS中虚拟地址到物理地址的映射关系记为g,则影子页表可以理解为映射关系f·g,VMM必须保证如下两点:
(1)若f(p)=,则对于任意的映射了物理地址p的虚拟地址v,要保证关于v的影子页表项为空;
(2)对任意两个不同的p1,p2∈P,若它们映射到同一机器地址,则对于任意映射了的物理地址p1或者p2的虚拟地址v,要保证关于v的影子页表项是只读映射。
这两条性质称为违例陷入性质在影子页表上的传递性。在x86体系结构下,上述的(1)可以通过清除影子页表项的P(Present)位来实现,而(2)则可以通过清除影子页表项的W(Writable)位来实现。
为了找到所有映射了某个机器页面m的所有影子页表项,本发明采用了“逆映射”数据结构。逆映射(Reverse Mapping)是一种能够快速获得映射原像的数据结构,本发明用它来表示映射(f·g)-1。因此,当VMM更新影子页表项时,要同步更新对应的逆映射。
结合上面的分析,本发明提出的技术方案为:
一种虚拟机管理器的动态内存映射方法,其步骤为:
(1)分别建立虚拟机和虚拟机管理器的页面池,并进行初始化;
所述页面池包括活动池和空闲池,其具有如下功能:
分配:将一个页面从空闲池移入活动池,并且保证为该页面建立映射;
返还:将一个页面从活动池放回空闲池,之前删除与该页面有关的所有内存映射;
扩大:将某些机器页面加入页面池的空闲池中,增大虚拟机所能使用的机器内存;
收缩:将某些机器页面从页面池的空闲池中删除,减小虚拟机所能使用的机器内存;
(2)虚拟机访问违例时虚拟机管理器动态建立并更新虚拟机物理内存集合P到虚拟机管理器页面池中的机器内存集合M的映射关系f(p),其中p为物理内存集合P中的任意一个页面。
所述页面的数据结构包括:页面号、引用计数、状态标志。
所述的方法中采用影子页表建立所述映射关系f(p)。
所述的方法中虚拟机管理器动态更新所述影子页表项的映射关系f(p)×g(v),同步更新对应的逆映射(f(p)×g(v))-1,其中g(v)为虚拟地址到物理地址的映射关系,v为虚拟地址。
所述活动池与所述空闲池通过双向链表连接。
所述访问违例为在时刻ti虚拟机访问了内存p,且fi(p)=时,则虚拟机的执行将中断,控制转入虚拟机管理器,所述虚拟机管理器从页面池的空闲池中分配一块新的机器内存m,将其加入页面池的活动池,设置fi+1(p)={m},然后恢复虚拟机执行。
所述访问违例为在时刻ti虚拟机访问了内存p,且fi(p)=时,则虚拟机的执行将中断,控制转入虚拟机管理器,所述虚拟机管理器执行下列步骤:
(1)虚拟机管理器判断当前页面池的空闲池是否充裕,若是,则虚拟机管理器分配一块新的机器内存m将它加入页面池的活动池,设置fi+1(p)={m},然后转到步骤(3);
(2)若否,则虚拟机管理器从页面池的活动池中选择一个页面集合S,将它们从页面池的活动池中删除,同时,对于所有映射了S中机器页面的物理页面x,我们设置fi+1(x)=,并将页面x的内容写入交换空间,然后重新运行系统;
(3)虚拟机管理器检查p的内容是否在交换空间中,若是,则从交换空间中将p的内容读入m,恢复虚拟机的执行;否则恢复虚拟机的执行。
所述方法中所述虚拟机管理器中的所有虚拟机共享同一页面池,所述访问违例为在时刻ti,其中一台虚拟机h试图写入内存p,若存在来自所述虚拟机h或其他虚拟机的另一个物理页面p’,使得p和p’映射到同一机器页面时,虚拟机的执行将中断,控制转入虚拟机管理器,所述虚拟机管理器分配一个新的机器页面m,将页面p的内容复制到m中;然后,虚拟机管理器将m加入页面池,设置fi+1(p)={m},并恢复虚拟机的执行。
所述访问违例为虚拟机访问了虚拟地址v,由于影子页表中没有关于v的地址转换映射,虚拟机的执行将中断,控制转入虚拟机管理器,所述虚拟机管理器执行下列页故障处理:
(1)虚拟机管理器根据被中断的虚拟CPU的页表指针寄存器获得虚拟机的页目录指针,并模拟内存管理单元逐级找到虚拟地址v所对应的页表项;
(2)在步骤(1)的同时,虚拟机管理器根据每一级页表的物理地址,查询影子页表的哈希表,获得与该级页表对应的影子页表,如果该级页表没有对应的影子页表,则分配新的影子页表,并与上一级影子页表相关联,使虚拟机管理器得到与v对应的影子页表项指针;
(3)虚拟机管理器从虚拟机的页表项中读出与v对应的物理地址p,然后查询数组phys_mem[p],但发现其值为空;所述数组phys_mem[]为虚拟机物理内存集合P到机器内存集合M的映射f(p);
(4)虚拟机管理器判断页面池中空闲页的数量是否大于所需页数,如果页面池中空闲页的数量小于所需页数,页面淘汰模块将被激活,并异步地执行步骤(6)~(10);
(5)如果空闲池中没有页面,则在此等待;否则,就从空闲池中选择一个页面m,并转到步骤(11);
(6)页面淘汰模块根据页面淘汰算法,从活动池中选择一组页面,并将这些页面从活动池中删除;
(7)虚拟机管理器依次查询这些页面的逆映射链,找到所有映射了这些页面的影子页表项,先记录下表项的Dirty位,再将这些页表项置为空,同时也删除对应的逆映射,最后,虚拟机管理器刷新虚拟机的快表(TLB,Translation Look-ahead Buffer);
(8)如果该页面是脏的,则虚拟机管理器需要发起I/O操作,将这些页面的物理页面号及页面内容保存到磁盘的设定的位置上;
(9)在phys_mem[]数组中,将与这些页面的物理页面号对应的数组元素置为空,同时标记这些物理页面已被换出;
(10)将这些页面加入空闲池,并回到步骤(5);
(11)虚拟机管理器将机器页面m从空闲池中删除,并加入活动池,然后设置phys_mem[p]=m;
(12)虚拟机管理器根据页面p的标记,判断该页面是否之前被换出,如果是,则虚拟机管理器需要发起I/O操作,通过页面p的物理页面号,从磁盘中读出先前保存下来的页面内容,并写入机器页面m中;
(13)将m的机器地址写入与导致故障的虚拟地址v对应的影子页表项,并将这个页表项指针添加到机器页面m的逆映射链中,最后,虚拟机管理器刷新虚拟机的快表(TLB,Translation Look-ahead Buffer);
(14)虚拟机管理器恢复虚拟机的执行。
所述的方法中虚拟机管理器处理完所述访问违例后,如果影子页表项发生了变化,则虚拟机管理器需要同时更新对应的逆映射。
发明的优点与积极效果
同现有的虚拟机内存管理机制相比,本发明提出的虚拟机动态内存映射机制具有以下优点与积极效果:
1.平台无关性。本发明给出了动态内存映射的模型定义,该模型是用一种抽象的方法描述的,并不局限于某种特殊的实现方案,也不局限于特定体系结构的计算机。
2.通用性。利用动态内存映射机制,VMM能够很容易地实现虚拟机的按需取页、虚拟内存、Ballooning、内存共享、Copy-On-Write、虚拟机快速复制。可以通过动态内存映射模型的定义得到相应的形式化算法。
3.高效性。为了测试动态内存映射机制带来的开销,我们在同一台物理计算机上部署了两台完全一样的虚拟机,其上都安装了Cent OS Linux,内核版本为2.6.9。我们分别用修改前和修改后的某个VMM运行该虚拟机,并在虚拟机上编译2.6.20版本的Linux内核。实验结果表明,本发明机制给VMM的内存虚拟化带来的额外时间开销能够控制在5%以内,如图3(a)所示,而其中的绝大多数开销来源于逆映射的维护(增加开销138秒,其中118秒用于逆映射的维护,如图3(b)所示。
4.高耦合度。利用动态内存映射机制实现的虚拟机高级内存管理功能,由于其底层采用的是同一个高效的机制,因此具有很好的耦合性,相互直接的兼容性很好,而且易于协同工作。这给VMM设计高效的上层内存管理策略带来的极大的方便。
5.安全性。由于动态内存映射机制具有代码复用等优点,能够很好地控制整个VMM系统的复杂性,从而提高整个计算系统的安全性和可信度。同时,由于虚拟机的所有内存访问都是通过同一机制实现的,因此易于VMM进行集中的隔离控制和权限检查。
附图说明
图1显示了一个实现了动态内存映射机制的VMM;
图2为实现了动态内存映射之后,页故障处理的主要工作流程;
图3本发明与现有技术的内存映射机制带来的内存开销对比图。
具体实施方式
在下面的例子中,我们将简要阐述在一个虚拟机管理器上实现动态内存映射机制的必要步骤,以及如何利用已实现的动态内存映射机制完成虚拟机的页面交换。
首先,我们要设计一个表示机器页面的数据结构,称为“机器页面描述符”,描述符必须包含如下信息:1、对应的机器页面号;2、引用计数,用于表示该页面被映射f使用的次数;3、状态标志,用于表明该页面的使用状态。
然后,我们需要实现页面池机制。页面池可以用两个双向链表实现,分别用于表示活动池和空闲池。当一个机器页面的描述符被加到某个链表中时,就表示该页面已被加入对应的页面池中。
最后,我们需要实现违例陷入机制,并在违例陷入时动态的建立和维护动态内存映射关系。
下面我们先分别以按需取页、虚拟存储、内存共享为例,描述动态内存映射关系在这几种不同应用中的建立流程。在给出这些流程时,我们首先假定“陷入的性质”是成立的,并在最后给出违例陷入机制和逆映射更新这两个重要部分的具体实现,即页故障的处理流程。
1、按需取页
(1)VMM初始化页面池为空,且对于虚拟机的任意物理页面p,设置f0(p)=,并启动虚拟机;
(2)在某个时刻ti,若虚拟机访问了内存p,且fi(p)=,则根据性质(2),虚拟机的执行将中断,控制转入VMM;
(3)VMM从页面池的空闲池中分配一块新的机器内存m,将它加入页面池的活动池,设置fi+1(p)={m},然后恢复虚拟机执行;
(4)重复步骤(2)和(3),直到虚拟机停机。
2、虚拟存储
(1)VMM初始化页面池为空,且对于虚拟机的任意物理页面p,设置f0(p)=,并启动虚拟机;
(2)在某个时刻ti,若虚拟机访问了物理页面p,且fi(p)=,则根据性质(2),虚拟机的执行将中断,控制转入VMM;
(3)VMM判断当前页面池的空闲池是否充裕,若是,则VMM分配一块新的机器内存m将它加入页面池的活动池,设置fi+1(p)={m},然后转到步骤(5);
(4)若否,则VMM需要将某些页面换出:VMM从页面池的活动池中选择一个页面集合S,将它们从页面池的活动池中删除,同时,对于所有映射了S中机器页面的物理页面x,我们设置fi+1(x)=,并将页面x的内容写入交换空间。然后回到步骤(3);
(5)VMM检查p的内容是否在交换空间中,若是,则从交换空间中将p的内容读入m,否则直接进入步骤(6);
(6)恢复虚拟机的执行,转到步骤(2),直到虚拟机停机。
3、内存共享
首先假定所有需要共享页面的虚拟机使用同一页面池。
(1)VMM初始化页面池,使其只包含一个机器页面s,并对于每个虚拟机的任意物理页面p,设置f0(p)={s},然后依次启动各个虚拟机;
(2)在时刻ti,虚拟机h试图写入物理页面p。若存在另一个(或一些)物理页面p’(来自虚拟机h或其他虚拟机),使得p和p’映射到同一机器页面,则根据性质(3),虚拟机的执行将中断,控制转入VMM。
(3)VMM分配一个新的机器页面m,将物理页面p的内容复制到m中。然后,VMM将m加入页面池,设置fi+1(p)={m},并恢复虚拟机的执行。
(4)重复步骤(2)和(3),直到所有虚拟机停机。
上述内存共享的实现中,所有虚拟机的内存一开始都映射到同一个机器页面,并随着它们运行的过程利用Copy-On-Write不断分裂。这从理论上是可行的,但是考虑到性能问题,实际的VMM通常可以进行一些优化,即允许虚拟机启动时既存在共享的机器页面,又拥有部分独立的机器页面,从而避免分裂次数过多带来的性能问题。
4、页故障的处理流程
考虑了动态内存映射之后,页故障处理的主要工作流程如图2所示。图中虚框部分是实现动态内存映射的关键步骤。
导致虚拟机陷入页故障处理时,VMM能知道的信息包括:1、导致页故障的虚拟地址v;
2、页故障的性质(缺页、权限违例、读写违例)。但是,VMM能够根据其掌握的其它数据结构,分析出更详细的故障来源。这些信息包括:
(1)导致页故障的虚拟机。
(2)导致页故障的物理地址和访问权限。
(3)和虚拟地址v有关的任何一级影子页表。
(4)与物理地址p对应的机器页面描述符。
首先,VMM会根据导致页故障的虚拟地址v,逐级周游Guest OS的页表系统。在周游的同时,VMM还会查找与Guest OS的各级页表所对应的影子页表是否存在,如果不存在则为其新分配一个影子页表,并建立它与上层影子页表的链接关系。这样,如果页故障是由于影子页表缺失而导致的,则经过此番周游,各级的影子页表都已补齐了。
当周游到最后一级页表时,VMM便可以知道这个页面对于Guest OS是否存在。如果该页面根本没有被Guest OS映射,或者访问权限不对,则Guest OS必须对这个页故障负责。VMM把这个页故障转交给Guest OS处理。
否则则表明VMM必须对这个页故障负责。此时导致故障的主要原因包括:
(1)映射存在,但对应的影子页表项没有初始化;
(2)f(p)=,这种情况又包括:物理页面号p是非法的、尚未为该物理页面分配机器页面、该页面已被换出、该页面已被Balloon技术交给其它虚拟机使用等等。
(3)Guest OS试图写入一个共享页,而这个页已经在影子页表中标为只读的。是否共享页可以利用机器页面描述符的引用计数来判断。
(4)Guest OS试图写入一个用作页表的页面,而且该页表对应的影子页表已经建立。一个页面是否被用作页表,可以通过查询影子页表的哈希表获知。
对于原因(1),VMM只需根据f(p)和g(v)设置该页表项即可。
对于原因(2),VMM要先建立物理页面到机器页面的映射关系,然后再更新导致页故障的影子页表项。为了建立映射关系,我们需要先得到一个有效的机器页面m。m可以直接从空闲池中取出,但如果空闲池中没有可用页面,则需要发起页面淘汰算法(参见Andrew andS.,Tanenbaum.Modern Operating Systems,Second Edition.Prentice Hall,2002.)或Ballooning过程(参见Carl,A.Waldspurger.Memory Resource Management in VMware ESX Server.Proceedings of Fifth Symposium on Operating Systems Design and Implementation(OSDI).December 2002.),重新填充空闲池。这个过程中,我们需要减少被回收页面的引用计数,并根据逆映射,确保放回空闲池的页面不被任何影子页表项映射。一旦得到了机器页面m,我们就可以更新映射f(p),增加m的引用计数,然后再根据f(p)和g(v)设置好该页的影子页表项。
对于原因(3),VMM将发起Copy-On-Write过程,为该机器页面建立一个副本,然后把导致异常的物理页面重新映射到这个机器页面,并且设置该映射为可写的。而对于原来的机器页面,我们要将它的引用计数减1,只要计数值仍然大于1,其它的物理页面仍然只能只读共享该页面。而如果计数值降为1,则需要根据逆映射,将影子页表中所有对该页面的映射置为可写的。
对于原因(4),VMM将模拟这个写操作,然后删除该页表对应的影子页表,这个影子页表将在后来的访问中重新被建立。此步骤确保对页表的更新能及时反映到影子页表上。
上述操作完成后,如果影子页表项发生了变化,则VMM需要同时更新对应的逆映射,以表明某个物理页面被这些影子页表项所映射。
完成了页故障修复后,VMM就可以恢复Guest OS的执行了。只要确保进入Guest OS之前,所有的映射关系都已按照真实硬件的逻辑建立好,整个内存虚拟化过程对Guest OS就是完全透明的。页故障处理机制是在VMM的缺页中断处理中实现的。VMM必须在页故障处理函数(参见:http://en.wikipedia.org/wiki/Page_fault)中实现影子页表维护、逆映射维护,以及整个页面交换过程。根据前面给出的实现方法流程,能够完成影子页表维护、逆映射维护等基本操作,并在此基础上实现了页面交换功能的页故障处理流程如下所示:
(1)创建虚拟机时,我们为该虚拟机分配一定数量的机器页面,将它们放入页面池的空闲池中,并置数组phys_mem[]的各个元素为空;
(2)在某个时刻,虚拟机上的Guest OS访问了虚拟地址v,由于影子页表中没有关于v的地址转换映射,虚拟机将发生页故障,并陷入VMM;
(3)VMM根据被中断的虚拟CPU的页表指针寄存器(如x86处理器的CR3寄存器),获得Guest OS的页目录指针,并模拟MMU逐级找到虚拟地址v所对应的页表项。在这里,我们假设该页表项存在,而且没有权限错误;
(4)在步骤(3)的同时,VMM会根据每一级页表的物理地址,查询影子页表的哈希表,获得与该级页表对应的影子页表,如果该级页表没有对应的影子页表,则分配新的影子页表,并与上一级影子页表相关联,最后,VMM同样得到了与v对应的影子页表项指针;
(5)VMM从Guest OS的页表项中读出与v对应的物理地址p。在确认p是该虚拟机合法物理地址后,VMM查询数组phys_mem[p],但发现其值为空;
(6)VMM判断页面池中空闲页的数量是否大于所需页数,如果页面池中空闲页的数量小于所需页数,页面淘汰模块将被激活,并异步地执行步骤(8)~(12)。
(7)如果空闲池中没有页面,则在此等待。否则,就从空闲池中选择一个页面m,并转到步骤(13)
(8)页面淘汰模块根据页面淘汰算法,从活动池中选择一组页面,并将这些页面从活动池中删除;
(9)VMM依次查询这些页面的逆映射链,找到所有映射了这些页面的影子页表项,先记录下表项的Dirty位,再将这些页表项置为空,同时也删除对应的逆映射。最后,VMM必须刷新虚拟机的快表(TLB,Translation Look-ahead Buffer);
(10)如果该页面是脏的,则VMM需要发起I/O操作,将这些页面的物理页面号及页面内容保存到磁盘的设定的位置上;
(11)在phys_mem[]数组中,将与这些页面的物理页面号对应的数组元素置为空,同时标记这些物理页面已被换出;
(12)将这些页面加入空闲池,并回到步骤(7);
(13)VMM将机器页面m从空闲池中删除,并加入活动池。然后设置phys_mem[p]=m;
(14)VMM根据页面p的标记,判断该页面是否之前被换出(参见步骤11),如果是,则VMM需要发起I/O操作,通过页面p的物理页面号,从磁盘中读出先前保存下来的页面内容,并写入机器页面m中;
(15)将m的机器地址写入与导致故障的虚拟地址v对应的影子页表项(这个页表项是在步骤4中得到的),并将这个页表项指针添加到机器页面m的逆映射链中。最后,VMM必须刷新虚拟机的TLB;
(16)VMM恢复虚拟机的执行。
在上述流程中,我们假设页面池的大小是不变的(都是在步骤1中分配的),而且不考虑写故障的情况和用于页面共享的计数器。
Claims (10)
1.一种虚拟机管理器的动态内存映射方法,其步骤为:
(1)分别建立虚拟机和虚拟机管理器的页面池,并进行初始化;
所述页面池包括活动池和空闲池,其具有如下功能:
分配:将一个页面从空闲池移入活动池,并且保证为该页面建立映射;
返还:将一个页面从活动池放回空闲池,之前删除与该页面有关的所有内存映射;
扩大:将某些机器页面加入页面池的空闲池中,增大虚拟机所能使用的机器内存;
收缩:将某些机器页面从页面池的空闲池中删除,减小虚拟机所能使用的机器内存;
(2)虚拟机访问违例时虚拟机管理器动态建立并更新虚拟机物理内存集合P到虚拟机管理器页面池中的机器内存集合M的映射关系f(p),其中p为物理内存集合P中的任意一个页面。
2.如权利要求1所述的方法,其特征在于所述页面的数据结构包括:页面号、引用计数、状态标志。
3.如权利要求1所述的方法,其特征在于采用影子页表建立所述映射关系f(p)。
4.如权利要求3所述的方法,其特征在于虚拟机管理器动态更新所述影子页表项的映射关系f(p)×g(v),同步更新对应的逆映射(f(p)×g(v))-1,其中g(v)为虚拟地址到物理地址的映射关系,v为虚拟地址。
5.如权利要求1所述的方法,其特征在于所述活动池与所述空闲池通过双向链表连接。
6.如权利要求1所述的方法,其特征在于所述访问违例为在时刻ti虚拟机访问了内存p,且fi(p)=时,则虚拟机的执行将中断,控制转入虚拟机管理器,所述虚拟机管理器从页面池的空闲池中分配一块新的机器内存m,将其加入页面池的活动池,设置fi+1(p)={m},然后恢复虚拟机执行。
7.如权利要求1所述的方法,其特征在于所述访问违例为在时刻ti虚拟机访问了物理页面p,且fi(p)=时,则虚拟机的执行将中断,控制转入虚拟机管理器,所述虚拟机管理器执行下列步骤:
(1)虚拟机管理器判断当前页面池的空闲池是否充裕,若是,则虚拟机管理器分配一块新的机器内存m将它加入页面池的活动池,设置fi+1(p)={m},然后转到步骤(3);
(2)若否,则虚拟机管理器从页面池的活动池中选择一个页面集合S,将它们从页面池的活动池中删除,同时,对于所有映射了S中机器页面的物理页面x,设置fi+1(x)=,并将页面x的内容写入交换空间,然后重新运行系统;
(3)虚拟机管理器检查所述物理页面p的内容是否在交换空间中,若是,则从交换空间中将所述物理页面p的内容读入所述机器内存m,恢复虚拟机的执行;否则恢复虚拟机的执行。
8.如权利要求1所述的方法,其特征在于所述虚拟机管理器中的所有虚拟机共享同一页面池,所述访问违例为在时刻ti,其中一台虚拟机h试图写入物理页面p,若存在来自所述虚拟机h或其他虚拟机的另一个物理页面p’,使得p和p’映射到同一机器页面时,虚拟机的执行将中断,控制转入虚拟机管理器,所述虚拟机管理器分配一个新的机器页面m,将所述物理页面p的内容复制到所述机器页面m中;然后,虚拟机管理器将所述机器页面m加入页面池,设置fi+1(p)={m},并恢复虚拟机的执行。
9.如权利要求5所述的方法,其特征在于所述访问违例为虚拟机访问了虚拟地址v,由于影子页表中没有关于所述虚拟地址v的地址转换映射,虚拟机的执行将中断,控制转入虚拟机管理器,所述虚拟机管理器执行下列页故障处理步骤:
(1)虚拟机管理器根据被中断的虚拟CPU的页表指针寄存器获得虚拟机的页目录指针,并模拟内存管理单元逐级找到所述虚拟地址v所对应的页表项;
(2)在步骤(1)的同时,虚拟机管理器根据每一级页表的物理地址,查询影子页表的哈希表,获得与该级页表对应的影子页表,如果该级页表没有对应的影子页表,则分配新的影子页表,并与上一级影子页表相关联,使虚拟机管理器得到与所述虚拟地址v对应的影子页表项指针;
(3)虚拟机管理器从虚拟机的页表项中读出与所述虚拟地址v对应的物理地址p,然后查询数组phys_mem[p],但发现其值为空;所述数组phys_mem[]为虚拟机物理内存集合P到机器内存集合M的映射f(p);
(4)虚拟机管理器判断页面池中空闲页的数量是否大于所需页数,如果页面池中空闲页的数量小于所需页数,页面淘汰模块将被激活,并异步地执行步骤(6)~(10);
(5)如果空闲池中没有页面,则在此等待;否则,就从空闲池中选择一个机器页面m,并转到步骤(11);
(6)页面淘汰模块根据页面淘汰算法,从活动池中选择一组页面,并将这些页面从活动池中删除;
(7)虚拟机管理器依次查询这些页面的逆映射链,找到所有映射了这些页面的影子页表项,先记录下表项的Dirty位,再将这些页表项置为空,同时也删除对应的逆映射,最后,虚拟机管理器刷新虚拟机的快表(TLB,Translation Look-ahead Buffer);
(8)如果该页面是脏的,则虚拟机管理器需要发起I/O操作,将这些页面的物理页面号及页面内容保存到磁盘的设定的位置上;
(9)在phys_mem[]数组中,将与这些页面的物理页面号对应的数组元素置为空,同时标记这些物理页面已被换出;
(10)将这些页面加入空闲池,并回到步骤(5);
(11)虚拟机管理器将所述机器页面m从空闲池中删除,并加入活动池,然后设置phys_mem[p]=m;
(12)虚拟机管理器根据所述页面p的标记,判断该页面是否之前被换出,如果是,则虚拟机管理器需要发起I/O操作,通过所述页面p的物理页面号,从磁盘中读出先前保存下来的页面内容,并写入所述机器页面m中;
(13)将所述机器页面m的机器地址写入与导致故障的虚拟地址v对应的影子页表项,并将这个页表项指针添加到所述机器页面m的逆映射链中,最后,虚拟机管理器刷新虚拟机的快表;
(14)虚拟机管理器恢复虚拟机的执行。
10.如权利要求6或7或8或9所述的方法,其特征在于虚拟机管理器处理完所述访问违例后,如果影子页表项发生了变化,则虚拟机管理器需要同时更新对应的逆映射。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007101781183A CN100527098C (zh) | 2007-11-27 | 2007-11-27 | 一种虚拟机管理器的动态内存映射方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007101781183A CN100527098C (zh) | 2007-11-27 | 2007-11-27 | 一种虚拟机管理器的动态内存映射方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101158924A true CN101158924A (zh) | 2008-04-09 |
CN100527098C CN100527098C (zh) | 2009-08-12 |
Family
ID=39307030
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2007101781183A Expired - Fee Related CN100527098C (zh) | 2007-11-27 | 2007-11-27 | 一种虚拟机管理器的动态内存映射方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100527098C (zh) |
Cited By (55)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101808141A (zh) * | 2010-04-19 | 2010-08-18 | 浙江大学 | 一种基于虚拟化平台的宿主客户机协同换页的方法 |
CN101853219A (zh) * | 2010-04-30 | 2010-10-06 | 浙江大学 | 基于虚拟化平台的磁盘页面换入的方法 |
CN101859282A (zh) * | 2010-05-26 | 2010-10-13 | 浙江大学 | 基于双重跟踪的虚拟化平台的磁盘页面换入的方法 |
CN102063594A (zh) * | 2011-01-10 | 2011-05-18 | 中国人民解放军国防科学技术大学 | 一种Windows平台下检测虚拟机监视器存在的方法 |
CN102141931A (zh) * | 2011-03-15 | 2011-08-03 | 华为技术有限公司 | 一种创建虚拟机的方法、虚拟机监控器及虚拟机系统 |
CN102193815A (zh) * | 2010-03-12 | 2011-09-21 | 上海工程技术大学 | 一种基于虚拟机的多平台集成车载娱乐通讯系统 |
CN102231121A (zh) * | 2011-07-25 | 2011-11-02 | 北方工业大学 | 基于内存映射的大数据文件快速并行提取方法 |
CN101477477B (zh) * | 2009-01-12 | 2012-01-11 | 华为技术有限公司 | 内核空间隔离方法、空间管理实体及系统 |
CN102325178A (zh) * | 2011-09-07 | 2012-01-18 | 西安交通大学 | 基于hypervisor构架的虚拟非易失闪存存储器件设备设计方法 |
CN101833514B (zh) * | 2009-03-12 | 2012-02-15 | 安凯(广州)微电子技术有限公司 | 基于微内存系统在与非型闪存介质实现虚拟内存的方法 |
CN101882113B (zh) * | 2009-05-05 | 2012-02-22 | 北京大学 | 一种基于客户操作系统内核代码替换的内存虚拟化方法 |
CN102439567A (zh) * | 2011-10-21 | 2012-05-02 | 华为技术有限公司 | 分布式虚拟机访问异常的处理方法以及虚拟机监控器 |
CN102541619A (zh) * | 2010-12-23 | 2012-07-04 | 国际商业机器公司 | 虚拟机管理装置和方法 |
CN102681895A (zh) * | 2011-03-11 | 2012-09-19 | 北京市国路安信息技术有限公司 | 一种动态自迁移云服务方法 |
CN101819564B (zh) * | 2009-02-26 | 2013-04-17 | 国际商业机器公司 | 协助在虚拟机之间进行通信的方法和装置 |
CN101782954B (zh) * | 2009-01-20 | 2013-05-01 | 联想(北京)有限公司 | 一种异常进程的检测装置及方法 |
CN103324516A (zh) * | 2013-07-04 | 2013-09-25 | 曙光信息产业(北京)有限公司 | 基于虚拟化驱动的硬件管理方法和装置 |
CN103377133A (zh) * | 2012-04-17 | 2013-10-30 | 上海复旦微电子集团股份有限公司 | 利用空间冗余减少事务处理过程中对eeprom页擦写次数的方法 |
CN103440160A (zh) * | 2013-08-15 | 2013-12-11 | 华为技术有限公司 | 虚拟机恢复方法和虚拟机迁移方法以及装置与系统 |
CN103838634A (zh) * | 2014-03-18 | 2014-06-04 | 上海电机学院 | 一种基于内存资源供给调度虚拟机数量的方法及系统 |
CN101982814B (zh) * | 2008-12-31 | 2014-08-27 | 英特尔公司 | 将用于虚拟化引擎的指令分页调度到本地存储设备 |
CN104050189A (zh) * | 2013-03-14 | 2014-09-17 | 华为技术有限公司 | 页面共享处理方法及装置 |
CN104063281A (zh) * | 2013-03-21 | 2014-09-24 | 华为技术有限公司 | 一种调控虚拟机物理内存的方法和装置 |
CN104238955A (zh) * | 2013-06-20 | 2014-12-24 | 杭州迪普科技有限公司 | 一种存储资源虚拟化按需分配的装置和方法 |
WO2015013920A1 (zh) * | 2013-07-31 | 2015-02-05 | 华为技术有限公司 | 一种数据转发方法、装置及系统 |
WO2015043376A1 (zh) * | 2013-09-26 | 2015-04-02 | 华为技术有限公司 | 一种页的访问方法和页的访问装置、服务器 |
US9058197B2 (en) | 2011-10-18 | 2015-06-16 | Industrial Technology Research Institute | Method for sharing memory of virtual machine and computer system using the same |
US9183157B2 (en) | 2011-03-15 | 2015-11-10 | Huawei Technologies Co., Ltd. | Method for creating virtual machine, a virtual machine monitor, and a virtual machine system |
WO2016041118A1 (en) * | 2014-09-15 | 2016-03-24 | Intel Corporation | Memory management in virtualized computing |
CN105612528A (zh) * | 2013-09-17 | 2016-05-25 | 微软技术许可有限责任公司 | 虚拟机的虚拟安全模式 |
CN106462451A (zh) * | 2014-06-20 | 2017-02-22 | 华为技术有限公司 | 虚拟化平台处理中断方法和相关设备 |
CN106557427A (zh) * | 2015-09-25 | 2017-04-05 | 中兴通讯股份有限公司 | 共享内存数据库的内存管理方法及装置 |
WO2017133493A1 (zh) * | 2016-02-03 | 2017-08-10 | 华为技术有限公司 | 虚拟机的内存地址分配方法以及装置 |
CN107169346A (zh) * | 2017-04-28 | 2017-09-15 | 中国人民解放军信息工程大学 | 基于动态内存重映射和缓存清除的侧信道攻击防御方法及其装置 |
CN107203411A (zh) * | 2017-04-18 | 2017-09-26 | 中国科学院计算技术研究所 | 一种基于远程ssd的虚拟机内存扩展方法及系统 |
CN107247618A (zh) * | 2017-05-13 | 2017-10-13 | 成都长天信息技术有限公司 | 一种基于指令外部获取架构下的磁盘重定向方法 |
CN107278292A (zh) * | 2016-06-21 | 2017-10-20 | 华为技术有限公司 | 一种虚拟机内存的映射方法、装置及数据传输设备 |
CN107368354A (zh) * | 2017-08-03 | 2017-11-21 | 致象尔微电子科技(上海)有限公司 | 一种虚拟机安全隔离方法 |
CN107516052A (zh) * | 2017-08-14 | 2017-12-26 | 致象尔微电子科技(上海)有限公司 | 一种内存访问隔离方法 |
CN107615255A (zh) * | 2015-06-17 | 2018-01-19 | 英特尔公司 | 利用持久存储器的计算装置和方法 |
CN107783812A (zh) * | 2016-08-24 | 2018-03-09 | 阿里巴巴集团控股有限公司 | 虚拟机内存管理方法及装置 |
CN107851151A (zh) * | 2014-02-28 | 2018-03-27 | 超威半导体公司 | 保护虚拟机的状态信息 |
CN108028804A (zh) * | 2015-07-10 | 2018-05-11 | 国际商业机器公司 | 基于结构限制的虚拟计算环境中虚拟机的管理 |
CN108491716A (zh) * | 2018-01-29 | 2018-09-04 | 中国电子科技网络信息安全有限公司 | 一种基于物理页地址分析的虚拟机内存隔离性检测方法 |
CN108701047A (zh) * | 2016-03-31 | 2018-10-23 | 英特尔公司 | 具有dma写时复制的高密度虚拟机容器 |
CN109450974A (zh) * | 2018-10-08 | 2019-03-08 | 郑州云海信息技术有限公司 | 一种共享式设备高速数据传输方法及系统 |
CN109495236A (zh) * | 2018-11-02 | 2019-03-19 | 合肥保得工业自动化有限公司 | 一种CANopen的从站到主站的数据同步方法 |
CN111190752A (zh) * | 2019-12-30 | 2020-05-22 | 海光信息技术有限公司 | 虚拟机共享内核内存的方法及装置 |
CN111984374A (zh) * | 2020-08-20 | 2020-11-24 | 海光信息技术有限公司 | 用于管理安全内存的方法及其系统、装置和存储介质 |
CN112099904A (zh) * | 2020-08-25 | 2020-12-18 | 海光信息技术股份有限公司 | 一种虚拟机的嵌套页表管理方法、装置、处理器芯片及服务器 |
CN112363960A (zh) * | 2020-10-12 | 2021-02-12 | 北京大学 | 一种新型基于影子页表机制的内存虚拟化方法与系统 |
CN112416536A (zh) * | 2020-12-10 | 2021-02-26 | 成都海光集成电路设计有限公司 | 提取处理器执行上下文的方法及处理器 |
CN112783600A (zh) * | 2020-07-01 | 2021-05-11 | 中兴通讯股份有限公司 | 中断处理方法、中断管理器、电子设备、计算机可读介质 |
CN116126472A (zh) * | 2023-01-20 | 2023-05-16 | 北京麟卓信息科技有限公司 | 一种基于动态内存虚拟磁盘的跨运行环境文件快速共享方法 |
CN117850985A (zh) * | 2024-03-07 | 2024-04-09 | 济南浪潮数据技术有限公司 | 一种虚拟机内存资源管理方法、装置、设备及介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4660130A (en) * | 1984-07-24 | 1987-04-21 | Texas Instruments Incorporated | Method for managing virtual memory to separate active and stable memory blocks |
US5392415A (en) * | 1992-12-15 | 1995-02-21 | International Business Machines Corporation | System for grouping non-contiguous pages belonging to a storage object for page out |
CN1303534C (zh) * | 2003-03-03 | 2007-03-07 | 华为技术有限公司 | 一种内存池管理的方法 |
US7281102B1 (en) * | 2004-08-12 | 2007-10-09 | Vmware, Inc. | Restricting memory access to protect data when sharing a common address space |
-
2007
- 2007-11-27 CN CNB2007101781183A patent/CN100527098C/zh not_active Expired - Fee Related
Cited By (88)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101982814B (zh) * | 2008-12-31 | 2014-08-27 | 英特尔公司 | 将用于虚拟化引擎的指令分页调度到本地存储设备 |
CN101477477B (zh) * | 2009-01-12 | 2012-01-11 | 华为技术有限公司 | 内核空间隔离方法、空间管理实体及系统 |
CN101782954B (zh) * | 2009-01-20 | 2013-05-01 | 联想(北京)有限公司 | 一种异常进程的检测装置及方法 |
CN101819564B (zh) * | 2009-02-26 | 2013-04-17 | 国际商业机器公司 | 协助在虚拟机之间进行通信的方法和装置 |
CN101833514B (zh) * | 2009-03-12 | 2012-02-15 | 安凯(广州)微电子技术有限公司 | 基于微内存系统在与非型闪存介质实现虚拟内存的方法 |
CN101882113B (zh) * | 2009-05-05 | 2012-02-22 | 北京大学 | 一种基于客户操作系统内核代码替换的内存虚拟化方法 |
CN102193815A (zh) * | 2010-03-12 | 2011-09-21 | 上海工程技术大学 | 一种基于虚拟机的多平台集成车载娱乐通讯系统 |
CN102193815B (zh) * | 2010-03-12 | 2013-08-21 | 上海工程技术大学 | 一种基于虚拟机的多平台集成车载娱乐通讯系统 |
CN101808141A (zh) * | 2010-04-19 | 2010-08-18 | 浙江大学 | 一种基于虚拟化平台的宿主客户机协同换页的方法 |
CN101853219A (zh) * | 2010-04-30 | 2010-10-06 | 浙江大学 | 基于虚拟化平台的磁盘页面换入的方法 |
CN101859282A (zh) * | 2010-05-26 | 2010-10-13 | 浙江大学 | 基于双重跟踪的虚拟化平台的磁盘页面换入的方法 |
CN102541619A (zh) * | 2010-12-23 | 2012-07-04 | 国际商业机器公司 | 虚拟机管理装置和方法 |
CN102541619B (zh) * | 2010-12-23 | 2015-09-16 | 国际商业机器公司 | 虚拟机管理装置和方法 |
CN102063594B (zh) * | 2011-01-10 | 2012-08-22 | 中国人民解放军国防科学技术大学 | 一种Windows平台下检测虚拟机监视器存在的方法 |
CN102063594A (zh) * | 2011-01-10 | 2011-05-18 | 中国人民解放军国防科学技术大学 | 一种Windows平台下检测虚拟机监视器存在的方法 |
CN102681895A (zh) * | 2011-03-11 | 2012-09-19 | 北京市国路安信息技术有限公司 | 一种动态自迁移云服务方法 |
US9183157B2 (en) | 2011-03-15 | 2015-11-10 | Huawei Technologies Co., Ltd. | Method for creating virtual machine, a virtual machine monitor, and a virtual machine system |
WO2012122796A1 (zh) * | 2011-03-15 | 2012-09-20 | 华为技术有限公司 | 一种创建虚拟机的方法、虚拟机监控器及虚拟机系统 |
CN102141931A (zh) * | 2011-03-15 | 2011-08-03 | 华为技术有限公司 | 一种创建虚拟机的方法、虚拟机监控器及虚拟机系统 |
CN102141931B (zh) * | 2011-03-15 | 2014-06-11 | 华为技术有限公司 | 一种创建虚拟机的方法、虚拟机监控器及虚拟机系统 |
CN102231121B (zh) * | 2011-07-25 | 2013-02-27 | 北方工业大学 | 基于内存映射的大数据文件快速并行提取方法 |
CN102231121A (zh) * | 2011-07-25 | 2011-11-02 | 北方工业大学 | 基于内存映射的大数据文件快速并行提取方法 |
CN102325178A (zh) * | 2011-09-07 | 2012-01-18 | 西安交通大学 | 基于hypervisor构架的虚拟非易失闪存存储器件设备设计方法 |
US9058197B2 (en) | 2011-10-18 | 2015-06-16 | Industrial Technology Research Institute | Method for sharing memory of virtual machine and computer system using the same |
CN102439567A (zh) * | 2011-10-21 | 2012-05-02 | 华为技术有限公司 | 分布式虚拟机访问异常的处理方法以及虚拟机监控器 |
CN103377133B (zh) * | 2012-04-17 | 2016-12-14 | 上海复旦微电子集团股份有限公司 | 利用空间冗余减少事务处理过程中对eeprom页擦写次数的方法 |
CN103377133A (zh) * | 2012-04-17 | 2013-10-30 | 上海复旦微电子集团股份有限公司 | 利用空间冗余减少事务处理过程中对eeprom页擦写次数的方法 |
CN104050189A (zh) * | 2013-03-14 | 2014-09-17 | 华为技术有限公司 | 页面共享处理方法及装置 |
CN104050189B (zh) * | 2013-03-14 | 2019-05-28 | 华为技术有限公司 | 页面共享处理方法及装置 |
CN104063281A (zh) * | 2013-03-21 | 2014-09-24 | 华为技术有限公司 | 一种调控虚拟机物理内存的方法和装置 |
CN104063281B (zh) * | 2013-03-21 | 2018-04-10 | 华为技术有限公司 | 一种调控虚拟机物理内存的方法和装置 |
CN104238955B (zh) * | 2013-06-20 | 2018-12-25 | 杭州迪普科技股份有限公司 | 一种存储资源虚拟化按需分配的装置和方法 |
CN104238955A (zh) * | 2013-06-20 | 2014-12-24 | 杭州迪普科技有限公司 | 一种存储资源虚拟化按需分配的装置和方法 |
CN103324516A (zh) * | 2013-07-04 | 2013-09-25 | 曙光信息产业(北京)有限公司 | 基于虚拟化驱动的硬件管理方法和装置 |
CN103324516B (zh) * | 2013-07-04 | 2017-02-08 | 曙光信息产业(北京)有限公司 | 基于虚拟化驱动的硬件管理方法和装置 |
WO2015013920A1 (zh) * | 2013-07-31 | 2015-02-05 | 华为技术有限公司 | 一种数据转发方法、装置及系统 |
CN103440160A (zh) * | 2013-08-15 | 2013-12-11 | 华为技术有限公司 | 虚拟机恢复方法和虚拟机迁移方法以及装置与系统 |
CN103440160B (zh) * | 2013-08-15 | 2016-12-28 | 华为技术有限公司 | 虚拟机恢复方法和虚拟机迁移方法以及装置与系统 |
CN105612528A (zh) * | 2013-09-17 | 2016-05-25 | 微软技术许可有限责任公司 | 虚拟机的虚拟安全模式 |
CN105612528B (zh) * | 2013-09-17 | 2019-06-18 | 微软技术许可有限责任公司 | 虚拟机的虚拟安全模式 |
WO2015043376A1 (zh) * | 2013-09-26 | 2015-04-02 | 华为技术有限公司 | 一种页的访问方法和页的访问装置、服务器 |
CN107851151A (zh) * | 2014-02-28 | 2018-03-27 | 超威半导体公司 | 保护虚拟机的状态信息 |
CN107851151B (zh) * | 2014-02-28 | 2020-06-30 | 超威半导体公司 | 保护虚拟机的状态信息 |
CN103838634B (zh) * | 2014-03-18 | 2017-02-22 | 上海电机学院 | 一种基于内存资源供给调度虚拟机数量的方法及系统 |
CN103838634A (zh) * | 2014-03-18 | 2014-06-04 | 上海电机学院 | 一种基于内存资源供给调度虚拟机数量的方法及系统 |
CN106462451B (zh) * | 2014-06-20 | 2019-11-12 | 华为技术有限公司 | 虚拟化平台处理中断方法和相关设备 |
CN106462451A (zh) * | 2014-06-20 | 2017-02-22 | 华为技术有限公司 | 虚拟化平台处理中断方法和相关设备 |
WO2016041118A1 (en) * | 2014-09-15 | 2016-03-24 | Intel Corporation | Memory management in virtualized computing |
CN107615255A (zh) * | 2015-06-17 | 2018-01-19 | 英特尔公司 | 利用持久存储器的计算装置和方法 |
CN108028804A (zh) * | 2015-07-10 | 2018-05-11 | 国际商业机器公司 | 基于结构限制的虚拟计算环境中虚拟机的管理 |
CN106557427B (zh) * | 2015-09-25 | 2021-11-12 | 中兴通讯股份有限公司 | 共享内存数据库的内存管理方法及装置 |
CN106557427A (zh) * | 2015-09-25 | 2017-04-05 | 中兴通讯股份有限公司 | 共享内存数据库的内存管理方法及装置 |
US10817432B2 (en) | 2016-02-03 | 2020-10-27 | Huawei Technologies Co., Ltd. | Memory address assignment method for virtual machine and apparatus |
WO2017133493A1 (zh) * | 2016-02-03 | 2017-08-10 | 华为技术有限公司 | 虚拟机的内存地址分配方法以及装置 |
CN108701047B (zh) * | 2016-03-31 | 2023-08-01 | 英特尔公司 | 具有dma写时复制的高密度虚拟机容器 |
CN108701047A (zh) * | 2016-03-31 | 2018-10-23 | 英特尔公司 | 具有dma写时复制的高密度虚拟机容器 |
CN107278292B (zh) * | 2016-06-21 | 2020-07-28 | 华为技术有限公司 | 一种虚拟机内存的映射方法、装置及数据传输设备 |
CN107278292A (zh) * | 2016-06-21 | 2017-10-20 | 华为技术有限公司 | 一种虚拟机内存的映射方法、装置及数据传输设备 |
CN107783812B (zh) * | 2016-08-24 | 2022-03-08 | 阿里巴巴集团控股有限公司 | 虚拟机内存管理方法及装置 |
CN107783812A (zh) * | 2016-08-24 | 2018-03-09 | 阿里巴巴集团控股有限公司 | 虚拟机内存管理方法及装置 |
CN107203411A (zh) * | 2017-04-18 | 2017-09-26 | 中国科学院计算技术研究所 | 一种基于远程ssd的虚拟机内存扩展方法及系统 |
CN107203411B (zh) * | 2017-04-18 | 2020-02-28 | 中国科学院计算技术研究所 | 一种基于远程ssd的虚拟机内存扩展方法及系统 |
CN107169346A (zh) * | 2017-04-28 | 2017-09-15 | 中国人民解放军信息工程大学 | 基于动态内存重映射和缓存清除的侧信道攻击防御方法及其装置 |
CN107169346B (zh) * | 2017-04-28 | 2019-09-06 | 中国人民解放军信息工程大学 | 基于动态内存重映射和缓存清除的侧信道攻击防御方法及其装置 |
CN107247618A (zh) * | 2017-05-13 | 2017-10-13 | 成都长天信息技术有限公司 | 一种基于指令外部获取架构下的磁盘重定向方法 |
CN107368354A (zh) * | 2017-08-03 | 2017-11-21 | 致象尔微电子科技(上海)有限公司 | 一种虚拟机安全隔离方法 |
CN107368354B (zh) * | 2017-08-03 | 2021-02-02 | 海光信息技术股份有限公司 | 一种虚拟机安全隔离方法 |
CN107516052A (zh) * | 2017-08-14 | 2017-12-26 | 致象尔微电子科技(上海)有限公司 | 一种内存访问隔离方法 |
CN108491716B (zh) * | 2018-01-29 | 2021-11-12 | 中国电子科技网络信息安全有限公司 | 一种基于物理页地址分析的虚拟机内存隔离性检测方法 |
CN108491716A (zh) * | 2018-01-29 | 2018-09-04 | 中国电子科技网络信息安全有限公司 | 一种基于物理页地址分析的虚拟机内存隔离性检测方法 |
CN109450974A (zh) * | 2018-10-08 | 2019-03-08 | 郑州云海信息技术有限公司 | 一种共享式设备高速数据传输方法及系统 |
CN109450974B (zh) * | 2018-10-08 | 2021-08-20 | 郑州云海信息技术有限公司 | 一种共享式设备高速数据传输方法及系统 |
CN109495236B (zh) * | 2018-11-02 | 2022-02-01 | 合肥保得工业自动化有限公司 | 一种基于CANopen的从站到主站的数据同步方法 |
CN109495236A (zh) * | 2018-11-02 | 2019-03-19 | 合肥保得工业自动化有限公司 | 一种CANopen的从站到主站的数据同步方法 |
CN111190752A (zh) * | 2019-12-30 | 2020-05-22 | 海光信息技术有限公司 | 虚拟机共享内核内存的方法及装置 |
CN111190752B (zh) * | 2019-12-30 | 2023-04-07 | 海光信息技术股份有限公司 | 虚拟机共享内核内存的方法及装置 |
CN112783600A (zh) * | 2020-07-01 | 2021-05-11 | 中兴通讯股份有限公司 | 中断处理方法、中断管理器、电子设备、计算机可读介质 |
CN111984374B (zh) * | 2020-08-20 | 2021-07-23 | 海光信息技术股份有限公司 | 用于管理安全内存的方法及其系统、装置和存储介质 |
CN111984374A (zh) * | 2020-08-20 | 2020-11-24 | 海光信息技术有限公司 | 用于管理安全内存的方法及其系统、装置和存储介质 |
CN112099904A (zh) * | 2020-08-25 | 2020-12-18 | 海光信息技术股份有限公司 | 一种虚拟机的嵌套页表管理方法、装置、处理器芯片及服务器 |
CN112099904B (zh) * | 2020-08-25 | 2024-05-17 | 海光信息技术股份有限公司 | 一种虚拟机的嵌套页表管理方法、装置、处理器芯片及服务器 |
CN112363960A (zh) * | 2020-10-12 | 2021-02-12 | 北京大学 | 一种新型基于影子页表机制的内存虚拟化方法与系统 |
CN112416536A (zh) * | 2020-12-10 | 2021-02-26 | 成都海光集成电路设计有限公司 | 提取处理器执行上下文的方法及处理器 |
CN112416536B (zh) * | 2020-12-10 | 2023-08-18 | 成都海光集成电路设计有限公司 | 提取处理器执行上下文的方法及处理器 |
CN116126472A (zh) * | 2023-01-20 | 2023-05-16 | 北京麟卓信息科技有限公司 | 一种基于动态内存虚拟磁盘的跨运行环境文件快速共享方法 |
CN116126472B (zh) * | 2023-01-20 | 2023-06-09 | 北京麟卓信息科技有限公司 | 一种基于动态内存虚拟磁盘的跨运行环境文件快速共享方法 |
CN117850985A (zh) * | 2024-03-07 | 2024-04-09 | 济南浪潮数据技术有限公司 | 一种虚拟机内存资源管理方法、装置、设备及介质 |
CN117850985B (zh) * | 2024-03-07 | 2024-07-26 | 济南浪潮数据技术有限公司 | 一种虚拟机内存资源管理方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN100527098C (zh) | 2009-08-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100527098C (zh) | 一种虚拟机管理器的动态内存映射方法 | |
US10684800B2 (en) | Facilitating processing within computing environments supporting pageable guests | |
US7409487B1 (en) | Virtualization system for computers that use address space indentifiers | |
US8661181B2 (en) | Memory protection unit in a virtual processing environment | |
US7886127B2 (en) | Methods for accessing multiple page tables in a computer system | |
EP2812795B1 (en) | A method and apparatus for supporting address translation in a multiprocessor virtual machine environment using tracking data to eliminate interprocessor interrupts | |
US7089377B1 (en) | Virtualization system for computers with a region-based memory architecture | |
JP5214670B2 (ja) | マルチプロセッサ仮想マシン環境においてアドレス変換をサポートする方法及び装置 | |
US8438363B1 (en) | Optimization of paging cache protection in virtual environment | |
US20140108701A1 (en) | Memory protection unit in a virtual processing environment | |
CN101403992B (zh) | 实现远程内存交换的方法、装置及系统 | |
US7805723B2 (en) | Runtime virtualization and devirtualization of memory by a virtual machine monitor | |
US11995459B2 (en) | Memory copy during virtual machine migration in a virtualized computing system | |
CN101620573B (zh) | X86体系结构内存管理单元虚拟化方法 | |
Chen et al. | DMM: A dynamic memory mapping model for virtual machines | |
CN103164348B (zh) | 一种多系统下对实时操作系统所占用内存的保护方法 | |
US20070220231A1 (en) | Virtual address translation by a processor for a peripheral device | |
CN101013404A (zh) | 面向异构多核体系的分页式存储空间管理方法 | |
CN115481053A (zh) | 对共享存储器区域的独立地受控的dma和cpu访问 | |
US11550728B2 (en) | System and method for page table caching memory | |
CN104049905A (zh) | 在异构处理器之间迁移不同尺寸的页 | |
Lopriore | Consigéio Tºlazion aée deéée Ricezche | |
Vasilevsky et al. | LINUX Rс Virtualization on Virtual IronTM VFe |
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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090812 Termination date: 20121127 |