所述硬盘的存储空间之间的映射关系之前,检测所述客户机的进程所对应的由所述GVA层到所述GPA层的映射关系是否改变;若改变,则将为所述客户机的进程分配的所述HVA层的地址空间设置为不可访问。
[0152]或者,利用VMM在建立所述访存指令指向的所述HVA层中的被分配的地址空间上的地址与所述硬盘的存储空间之间的映射关系之前,检测所述客户机的进程所对应的由所述GVA层到所述GPA层的映射关系是否改变;若改变,则确定发生改变的映射关系上的所述GVA层上的地址,并确定所述发生改变的映射关系上的所述GVA层的地址所对应的目标HVA层地址,将所述目标HVA层地址设置为不可访问,所述目标HVA层地址是为所述客户机的进程分配的所述HVA层的地址空间上的地址。
[0153]进一步的可选的,在本实施例中,处理器301,具体还用于为所述客户机的至少两个进程分配所述HVA层上的同一段地址空间;和/或为所述客户机的进程分配所述HVA层上的一段对应的地址空间,不同的所述客户机的进程对应的所述HVA层上的地址空间不相同。
[0154]本发明实施例提供的一种计算设备,能够建立所述HVA层到硬盘的存储空间之间的映射关系;为客户机的至少两个进程分配HVA层上的同一段地址空间;和/或为客户机的进程分配HVA层上的一段对应的地址空间,并建立GVA层到HVA层中的被分配的地址空间之间的映射关系;当执行客户机的进程的访存指令时,建立访存指令指向的HVA层中的被分配的地址空间上的地址到硬盘的存储空间之间的映射关系;从宿主机获取目标数据。对于现有技术,本发明实施例利用了宿主机的硬盘上的文件作为中介,建立了由GVA层到HVA层,由HVA层到硬盘,由硬盘到HPA层之间的映射关系,从而建立了 GVA层到HPA层之间的映射关系,避免了直接建立HVA层到HPA层之间的映射关系。当客户机运行进程并发出访存指令时,可以通过这条映射关系,根据GVA层上的地址从HPA层获取访存指令所要获取的数据,避免了直接对HVA层到HPA层之间的映射关系进行操作,从而不需要修改内核就可以由宿主机从HPA层获取数据,因此本发明实施例运行客户机的进程的过程中,不需要直接对HVA层到HPA层的映射关系进行操作,从而不需要修改宿主机的操作系统,就能够实现虚拟机在不同的宿主机上使用并且不受宿主机的操作系统的影响,使得虚拟机在不同的系统平台上的迁移使用不再受到限制;同时,为客户机的进程在HVA层分配的地址空间的起始地址为b,客户机的进程的访存指令访存GVA层上的地址a时,VMM可以直接访问HVA层上的地址b+a,省去了查询GVA层到GPA层之间的映射关系和GPA层到HVA层的映射关系的步骤,减少了访存指令访问地址所需要的时间,提高了访存指令执行的效率;而且,当GVA层到GPA层之间的映射关系发生改变时,VMM将映射关系改变的客户机的进程分配的HVA层的地址空间设置为不可访问,并将改变后的映射关系添加到宿主机页表中的SPT中,避免访存数据时发生错误,保持SPT与客户机页表的一致性;而且,为客户机的多个不同进程可以单独分配HVA层上的一段对应的地址空间,和/或客户机的多个不同进程可以分配HVA层上的同一段地址空间,增加了为客户机分配HVA层的地址空间的灵活性。
[0155]本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。
[0156]本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory, ROM)或随机存储记忆体(Random AccessMemory, RAM)等。
[0157]以上所述,仅为本发明的【具体实施方式】,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
【主权项】
1.一种内存虚拟化的方法,其特征在于,用于一种计算设备,所述计算设备至少包括内存和硬盘,所述内存的地址映射层次包括客户机虚拟地址(GVA)层、客户机物理地址(GPA)层、宿主机虚拟地址(HVA)层、宿主机物理地址(HPA)层,所述方法包括: 建立所述HVA层到硬盘的存储空间之间的映射关系; 为所述客户机的进程在所述HVA层中分配地址空间,并建立所述GVA层到所述HVA层中的被分配的地址空间之间的映射关系; 建立访存指令指向的所述HVA层中的被分配的地址空间上的地址到所述硬盘的存储空间之间的映射关系; 从所述宿主机获取目标数据,所述目标数据是由所述宿主机根据所述访存指令获取的数据。
2.根据权利要求1所述的内存虚拟化的方法,其特征在于,所述为所述客户机的进程在所述HVA层中分配地址空间,并建立所述GVA层到所述HVA层中的被分配地址空间之间的映射关系,包括: 确定所述GVA层上的地址为a ; 为所述客户机的进程分配所述HVA层上的地址空间,所述HVA层上的地址空间的起始地址为b,并建立所述GVA层上的地址a到所述HVA层上的地址b+a之间的映射关系。
3.根据权利要求1或2所述的内存虚拟化的方法,其特征在于,为所述客户机的进程分配的所述HVA层上的地址空间的起始地址为b,所述访存指令指向所述HVA层上的地址a+b ; 所述建立访存指令指向的所述HVA层中的被分配的地址空间上的地址与所述硬盘的存储空间之间的映射关系,包括: 确定所述访存指令指向的所述GVA层上的地址a,并根据所述GVA层到所述HVA层之间的映射关系,确定所述GVA层上的地址a对应的所述HVA层上的地址x ; 根据所述HVA层到所述硬盘的存储空间之间的映射关系,确定所述HVA层上的地址X对应的所述硬盘的存储空间上的地址z ; 建立所述访存指令指向的所述HVA层上的地址a+b到所述硬盘的存储空间上的地址z之间的映射关系。
4.根据权利要求1-3中任意一项所述的内存虚拟化的方法,其特征在于,在所述建立访存指令指向的所述HVA层中的被分配的地址空间上的地址与所述硬盘的存储空间之间的映射关系之前,还包括: 检测所述客户机的进程所对应的由所述GVA层到所述GPA层的映射关系是否改变; 若改变,则将为所述客户机的进程分配的所述HVA层的地址空间设置为不可访问。
5.根据权利要求1-3中任意一项所述的内存虚拟化的方法,其特征在于,在所述建立访存指令指向的所述HVA层中的被分配的地址空间上的地址与所述硬盘的存储空间之间的映射关系之前,还包括: 检测所述客户机的进程所对应的由所述GVA层到所述GPA层的映射关系是否改变; 若改变,则确定发生改变的映射关系上的所述GVA层上的地址,并确定所述发生改变的映射关系上的所述GVA层的地址所对应的目标HVA层地址,所述目标HVA层地址是为所述客户机的进程分配的所述HVA层的地址空间上的地址; 将所述目标HVA层地址设置为不可访问。
6.根据权利要求1-5中任意一项所述的内存虚拟化的方法,其特征在于,还包括: 为所述客户机的至少两个进程分配所述HVA层上的同一段地址空间; 和/或为所述客户机的进程分配所述HVA层上的一段对应的地址空间,不同的所述客户机的进程对应的所述HVA层上的地址空间不相同。
7.—种内存虚拟化的装置,其特征在于,所述装置用于一种计算设备,所述计算设备包括了内存和硬盘,所述内存的地址映射层次包括客户机虚拟地址(GVA)层、客户机物理地址(GPA)层、宿主机虚拟地址(HVA)层、宿主机物理地址(HPA)层,所述装置包括: 第一映射建立模块,用于建立所述HVA层到硬盘的存储空间之间的映射关系; 地址分配模块,用于为所述客户机的进程在所述HVA层中分配地址空间,并建立所述GVA层到所述HVA层中的被分配的地址空间之间的映射关系; 第二映射建立模块,用于建立所述访存指令指向的所述HVA层中的被分配的地址空间上的地址到所述硬盘的存储空间之间的映射关系; 数据获取模块,用于从所述宿主机获取目标数据,所述目标数据是由所述宿主机根据所述访存指令获取的数据。
8.根据权利要求7所述的装置,其特征在于,所述地址分配模块包括: 地址确定单元,用于确定所述GVA层上的地址为a ; 地址分配单元,用于为所述客户机的进程分配所述HVA层上的地址空间,所述HVA层上的地址空间的起始地址为b,并建立所述GVA层上的地址a到所述HVA层上的地址b+a之间的映射关系。
9.根据权利要求7或8所述的装置,其特征在于,为所述客户机的进程分配的所述HVA层上的地址空间的起始地址为b,所述访存指令指向所述HVA层上的地址a+b ; 所述第二映射建立模块包括: 指令分析单元,用于确定所述访存指令指向的所述GVA层上的地址a,并根据所述GVA层到所述HVA层之间的映射关系,确定所述GVA层上的地址a对应的所述HVA层上的地址X ;并根据所述HVA层到所述硬盘的存储空间之间的映射关系,确定所述HVA层上的地址X对应的所述硬盘的存储空间上的地址z ; 地址映射单元,具体用于建立所述访存指令指向的所述HVA层上的地址a+b到所述硬盘的存储空间上的地址z之间的映射关系。
10.根据权利要求7-9中任意一项所述的装置,其特征在于,还包括: 第一检测模块,用于在建立所述访存指令指向的所述HVA层中的被分配的地址空间上的地址与所述硬盘的存储空间之间的映射关系之前,检测所述客户机的进程所对应的由所述GVA层到所述GPA层的映射关系是否改变; 第一禁用模块,用于若改变,则将为所述客户机的进程分配的所述HVA层的地址空间设置为不可访问。
11.根据权利要求7-9中任意一项所述的装置,其特征在于,还包括: 第二检测模块,用于在建立所述访存指令指向的所述HVA层中的被分配的地址空间上的地址与所述硬盘的存储空间之间的映射关系之前,检测所述客户机的进程所对应的由所述GVA层到所述GPA层的映射关系是否改变; 第二禁用模块,用于若改变,则确定发生改变的映射关系上的所述GVA层上的地址,并确定所述发生改变的映射关系上的所述GVA层的地址所对应的目标HVA层地址,将所述目标HVA层地址设置为不可访问,所述目标HVA层地址是为所述客户机的进程分配的所述HVA层的地址空间上的地址。
12.根据权利要求7-11中任意一项所述的装置,其特征在于,所述地址分配模块,具体用于为所述客户机的至少两个进程分配所述HVA层上的同一段地址空间;和/或为所述客户机的进程分配所述HVA层上的一段对应的地址空间,不同的所述客户机的进程对应的所述HVA层上的地址空间不相同。
【专利摘要】本发明实施例公开了一种内存虚拟化的方法及装置,涉及电子信息技术领域,能够在需要修改映射关系时,避免了使用宿主机的内核修改映射关系。本发明的方法包括:建立HVA层到硬盘的存储空间之间的映射关系;为客户机的进程在HVA层中分配地址空间,并建立GVA层到HVA层中的被分配的地址空间之间的映射关系;建立访存指令指向的HVA层中的被分配的地址空间上的地址到硬盘的存储空间之间的映射关系;从宿主机获取目标数据。本发明适用于将计算设备的内存虚拟化的场景中。
【IPC分类】G06F9-455, G06F12-08
【公开号】CN104750623
【申请号】CN201310752024
【发明人】王振江, 武成岗, 李斌, 杨东艳
【申请人】华为技术有限公司, 中国科学院计算技术研究所
【公开日】2015年7月1日
【申请日】2013年12月31日