CN103257929B - 一种虚拟机内存映射方法及系统 - Google Patents

一种虚拟机内存映射方法及系统 Download PDF

Info

Publication number
CN103257929B
CN103257929B CN201310134852.5A CN201310134852A CN103257929B CN 103257929 B CN103257929 B CN 103257929B CN 201310134852 A CN201310134852 A CN 201310134852A CN 103257929 B CN103257929 B CN 103257929B
Authority
CN
China
Prior art keywords
page
mapped
virtual machine
machine
physical
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
CN201310134852.5A
Other languages
English (en)
Other versions
CN103257929A (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.)
Shanghai Yinglian Information Technology Co ltd
Original Assignee
Institute of Computing Technology of CAS
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 Institute of Computing Technology of CAS filed Critical Institute of Computing Technology of CAS
Priority to CN201310134852.5A priority Critical patent/CN103257929B/zh
Publication of CN103257929A publication Critical patent/CN103257929A/zh
Application granted granted Critical
Publication of CN103257929B publication Critical patent/CN103257929B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明提供一种虚拟机内存映射方法及系统,其中方法包括:步骤1,根据应用层映射请求选择内存映射方式,执行步骤2或步骤3;步骤2,将待映射虚拟机的待映射机器页与监控虚拟机的物理页绑定,直接读写所映射的虚拟机的对应内存,执行步骤4;步骤3,监控虚拟机对物理内存中未使用的物理内存进行处理后,将其虚拟地址空间分解为相应的多个页组合的物理页,获取待映射虚拟机的待映射机器页,判断后进行相应处理,然后将待映射虚拟机的待映射机器页与监控虚拟机的物理页绑定,执行步骤4;步骤4,映射结束后,将与待映射虚拟机的映射内存对应的监控虚拟机内存释放,设置监控虚拟机的机器页到物理页映射表,将相应项设为无效机器页。

Description

一种虚拟机内存映射方法及系统
技术领域
本发明涉及虚拟机内存映射领域,尤其涉及一种虚拟机内存映射方法及系统。
背景技术
虚拟机带外内存映射是通过一个作为监控虚拟机的虚拟机从外部映射其他虚拟机内存的方法,作为构建安全系统的关键技术,正得到越来越广泛的应用。
当前对该技术的典型应用如虚拟机安全监控,犯罪取证,尤其是本地系统活体取证等。但是目前该技术针对这两类应用存在两大固有缺陷,一方面,现有虚拟化平台虚拟机带外监控技术均以特权虚拟机(如Xen平台下Domain0)作为监控虚拟机,忽视了特权虚拟机中庞大的用户层工具所带来的安全威胁,同时半虚拟化的特权虚拟机对Windows等闭源操作系统上的特殊应用无法提供支持。另一方面,现有带外内存映射方法均是以一页作为单位进行映射。当需要进行大数据映射时,需要循环重复映射,效率低下。同时,一些典型的对带外内存映射的应用(如本地活体取证等)需要及时快速的获取整个运行时机器的内存。
发明内容
为解决上述问题,本发明提供了一种虚拟机内存映射方法及系统,能够很好的满足不同应用多样化的需求;大块内存映射时通过物理空间借用技术及协同使用大页技术,降低了后续内存访问时pagefault(页异常)的次数及TLBfootprint(快表项占用数目),效率极高;已映射的虚拟机内存页释放时,能及时地通知给特权机中的程序,以避免访问过时的数据。
为实现上述发明目的,本发明提供一种虚拟机内存映射方法,该方法包括:
步骤1,根据应用层映射请求选择内存映射方式,当是小页内存映射需求时调用小页映射方式,执行步骤2,当是大页面内存映射需求时调用大页映射方式,执行步骤3;
步骤2,将待映射虚拟机的待映射机器页与监控虚拟机的物理页绑定,直接读写所映射的虚拟机的对应内存,执行步骤4;
步骤3,所述监控虚拟机对物理内存中未使用的物理内存进行处理后,将其虚拟地址空间分解为相应的多个页组合的物理页,获取待映射虚拟机的待映射机器页,判断所述待映射机器页是否与所述监控虚拟机的多个页组合的物理页中的任意物理页大小相同,若相同,直接将所述待映射虚拟机的待映射机器页与所述监控虚拟机的物理页绑定,否则继续分解所述多个页组合的的物理页,直至所述待映射的机器页与所述多个页组合的物理页中的任意物理页大小相同,然后将所述待映射虚拟机的待映射机器页与所述监控虚拟机的物理页绑定,执行步骤4;
步骤4,映射结束后,将与所述待映射虚拟机的映射内存对应的所述监控虚拟机内存释放,设置所述监控虚拟机的机器页到物理页映射表,将相应项设为无效机器页。
进一步的,所述步骤2包括:
步骤21,在所述监控虚拟机内分配n页内存,并将其锁定,所述待映射虚拟机的待映射内存大小为n页;
步骤22,获取所述监控虚拟机的n页内存的物理地址,释放所述物理地址对应的机器页;
步骤23,获取所述待映射虚拟机的待映射机器页,将所述待映射虚拟机的待映射机器页与所述监控虚拟机的物理地址绑定,并在所述待映射虚拟机的物理页到机器页映射表中标记被绑定的内存机器页为已被映射,同时更新所述监控虚拟机的机器页到物理页映射表,使得相应项记录监控虚拟机物理页;
步骤24,通过vaddr直接读写所映射的虚拟机的对应内存,其中vaddr为所述监控虚拟机内存地址。
进一步的,所述步骤3还包括:
步骤31,在所述监控虚拟机内分配一段大小为n页的虚拟地址空间,所述待映射虚拟机的待映射内存大小为n页;
步骤32,将所述虚拟地址空间划分为1GB页、2MB页、4KB页的页组合,所述页组合的页是对齐的,1GB页的地址是1GB对齐,2MB页的地址是2MB对齐,4K页的地址是4KB对齐;
步骤33,然后将待映射虚拟机的待映射内存机器页与监控虚拟机的物理页绑定后,更新所述待映射虚拟机的物理页到机器页映射表,并在所述待映射虚拟机的物理页到机器页映射表中标记被绑定的内存机器页为已被映射,同时更新所述监控虚拟机的机器页到物理页映射表,使得相应项记录监控虚拟机物理页。
步骤34,通过vaddr读写所映射的虚拟机的对应内存。
进一步的,所述步骤4之后还包括:
步骤5,更改所述监控虚拟机的虚拟机监控器的缺页异常处理函数,当所述监控虚拟机再次访问已释放的虚拟机内存时,所述监控虚拟机收到通用保护错误,并在异常处理函数中解映射或重新映射虚拟机的相应内存。
进一步的,所述步骤3中监控虚拟机对物理内存中未使用的物理内存进行以下处理:
步骤301,将所述监控虚拟机内未使用的物理内存空间的起始地址按照1G对齐;
步骤302,创建三个位图,分别记录所述物理内存空间中1G页面,2M页面,4K页面的空闲信息,未使用记录为1,使用记录为0;
步骤303,将此空间分解为页数为1GB页、2MB页、4KB页的三个页组合,且页组合里的页必须是对齐的,并将所述三个位图中对应于所述页组合里相关页的相应位置记录为1;
步骤304,将待映射虚拟机的待映射机器页与监控虚拟机的物理页绑定后,分配物理页时,先从对应的页位图中寻找空闲页,找不到时则其他位图中寻找空闲页,释放物理页时,检查与所述物理页在同一个大页中的的其它页是否空闲,若空闲则将释放后的物理页与所述其他页合并成一个大页,并更新相关位图。
为实现上述发明目的,本发明还提供一种虚拟机内存映射系统,该系统包括:
映射请求模块,根据应用层映射请求选择内存映射方式,当是小页内存映射需求时调用小页映射方式,执行小页面映射模块,当是大页面内存映射需求时调用大页映射方式,执行大页面映射模块;
小页面映射模块,将待映射虚拟机的待映射机器页与监控虚拟机的物理页绑定,直接读写所映射的虚拟机的对应内存,执行映射处理模块;
大页面映射模块,所述监控虚拟机对物理内存中未使用的物理内存进行处理后,将其虚拟地址空间分解为相应的多个页组合的物理页,获取待映射虚拟机的待映射机器页,判断所述待映射机器页是否与所述监控虚拟机的多个页组合的物理页中的任意物理页大小相同,若相同,直接将所述待映射虚拟机的待映射机器页与所述监控虚拟机的物理页绑定,否则继续分解所述多个页组合的的物理页,直至所述待映射的机器页与所述多个页组合的物理页中的任意物理页大小相同,然后将所述待映射虚拟机的待映射机器页与所述监控虚拟机的物理页绑定,执行映射处理模块;
映射处理模块,映射结束后,将与所述待映射虚拟机的映射内存对应的所述监控虚拟机内存释放,设置所述监控虚拟机的机器页到物理页映射表,将相应项设为无效机器页。
进一步的,所述大页面映射模块包括:
第一分配模块,在所述监控虚拟机内分配n页内存,并将其锁定,所述待映射虚拟机的待映射内存大小为n页;
第一获取模块,获取所述监控虚拟机的n页内存的物理地址,释放所述物理地址对应的机器页;
第一处理模块,获取所述待映射虚拟机的待映射机器页,将所述待映射虚拟机的待映射机器页与所述监控虚拟机的物理地址绑定,并在所述待映射虚拟机的物理页到机器页映射表中标记被绑定的内存机器页为已被映射,同时更新所述监控虚拟机的机器页到物理页映射表,使得相应项记录监控虚拟机物理页;
第一读写模块,通过vaddr直接读写所映射的虚拟机的对应内存,其中vaddr为所述监控虚拟机内存地址。
进一步的,所述大页面映射模块还包括:
第二分配模块,在所述监控虚拟机内分配一段大小为n页的虚拟地址空间,所述待映射虚拟机的待映射内存大小为n页;
划分处理模块,将所述虚拟地址空间划分为1GB页、2MB页、4KB页的页组合,所述页组合的页是对齐的,1GB页的地址是1GB对齐,2MB页的地址是2MB对齐,4K页的地址是4KB对齐;
第二处理模块,然后将待映射虚拟机的待映射内存机器页与监控虚拟机的物理页绑定后,更新所述待映射虚拟机的物理页到机器页映射表,并在所述待映射虚拟机的物理页到机器页映射表中标记被绑定的内存机器页为已被映射,同时更新所述监控虚拟机的机器页到物理页映射表,使得相应项记录监控虚拟机物理页。
第二读写模块,通过vaddr读写所映射的虚拟机的对应内存。
进一步的,所述映射处理模块之后还包括:
更改处理模块,更改所述监控虚拟机的虚拟机监控器的缺页异常处理函数,当所述监控虚拟机再次访问已释放的虚拟机内存时,所述监控虚拟机收到通用保护错误,并在异常处理函数中解映射或重新映射虚拟机的相应内存。
进一步的,所述大页面映射模块中监控虚拟机对物理内存中未使用的物理内存进行以下处理:
将所述监控虚拟机内未使用的物理内存空间的起始地址按照1G对齐;
创建三个位图,分别记录所述物理内存空间中1G页面,2M页面,4K页面的空闲信息,未使用记录为1,使用记录为0;
将此空间分解为页数为1GB页、2MB页、4KB页的三个页组合,且页组合里的页必须是对齐的,并将所述三个位图中对应于所述页组合里相关页的相应位置记录为1;
将待映射虚拟机的待映射机器页与监控虚拟机的物理页绑定后,分配物理页时,先从对应的页位图中寻找空闲页,找不到时则其他位图中寻找空闲页,释放物理页时,检查与所述物理页在同一个大页中的的其它页是否空闲,若空闲则将释放后的物理页与所述其他页合并成一个大页,并更新相关位图。
本发明的有益效果在于,能够同时针对不同映射需求,并根据应用需求可选择性支持小页面及大页面内存映射的系统。在大数据映射时,其中的大页面内存映射方法可以一次性映射整个虚拟机的内存,不仅能够很好的满足特定应用的需求(如本地活体取证),降低了后续内存访问时pagefault(页异常)的次数及TLBfootprint(快表项占用数目),且相较于现有内存映射方法在效率上具有显著提高;已映射的虚拟机内存页释放时,能及时地通知给特权机中的程序,以避免访问过时的数据。
以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。
附图说明
图1是本发明的虚拟机内存映射方法流程图;
图2是本发明的虚拟机内存映射系统示意图;
图3是本发明的一实施例的Xen虚拟化平台下高效虚拟机内存映射系统示意图。
具体实施方式
图1是本发明的虚拟机内存映射方法流程图。如图1所示,该方法包括:
步骤1,根据应用层映射请求选择内存映射方式,当是小页内存映射需求时调用小页映射方式,执行步骤2,当是大页面内存映射需求时调用大页映射方式,执行步骤3;
步骤2,将待映射虚拟机的待映射机器页与监控虚拟机的物理页绑定,直接读写所映射的虚拟机的对应内存,执行步骤4;
步骤3,所述监控虚拟机对物理内存中未使用的物理内存进行处理后,将其虚拟地址空间分解为相应的多个页组合的物理页,获取待映射虚拟机的待映射机器页,判断所述待映射机器页是否与所述监控虚拟机的多个页组合的物理页中的任意物理页大小相同,若相同,直接将所述待映射虚拟机的待映射机器页与所述监控虚拟机的物理页绑定,否则继续分解所述多个页组合的的物理页,直至所述待映射的机器页与所述多个页组合的物理页中的任意物理页大小相同,然后将所述待映射虚拟机的待映射机器页与所述监控虚拟机的物理页绑定,执行步骤4;
步骤4,映射结束后,将与所述待映射虚拟机的映射内存对应的所述监控虚拟机内存释放,设置所述监控虚拟机的机器页到物理页映射表,将相应项设为无效机器页。
进一步的,所述步骤2包括:
步骤21,在所述监控虚拟机内分配n页内存,并将其锁定,所述待映射虚拟机的待映射内存大小为n页;
步骤22,获取所述监控虚拟机的n页内存的物理地址,释放所述物理地址对应的机器页;
步骤23,获取所述待映射虚拟机的待映射机器页,将所述待映射虚拟机的待映射机器页与所述监控虚拟机的物理地址绑定,并在所述待映射虚拟机的物理页到机器页映射表中标记被绑定的内存机器页为已被映射,同时更新所述监控虚拟机的机器页到物理页映射表,使得相应项记录监控虚拟机物理页;
步骤24,通过vaddr直接读写所映射的虚拟机的对应内存,其中vaddr为所述监控虚拟机内存地址。
进一步的,所述步骤3还包括:
步骤31,在所述监控虚拟机内分配一段大小为n页的虚拟地址空间,所述待映射虚拟机的待映射内存大小为n页;
步骤32,将所述虚拟地址空间划分为1GB页、2MB页、4KB页的页组合,所述页组合的页是对齐的,1GB页的地址是1GB对齐,2MB页的地址是2MB对齐,4K页的地址是4KB对齐;
步骤33,然后将待映射虚拟机的待映射内存机器页与监控虚拟机的物理页绑定后,更新所述待映射虚拟机的物理页到机器页映射表,并在所述待映射虚拟机的物理页到机器页映射表中标记被绑定的内存机器页为已被映射,同时更新所述监控虚拟机的机器页到物理页映射表,使得相应项记录监控虚拟机物理页。
步骤34,通过vaddr读写所映射的虚拟机的对应内存。
进一步的,所述步骤4之后还包括:
步骤5,更改所述监控虚拟机的虚拟机监控器的缺页异常处理函数,当所述监控虚拟机再次访问已释放的虚拟机内存时,所述监控虚拟机收到通用保护错误,并在异常处理函数中解映射或重新映射虚拟机的相应内存。
进一步的,所述步骤3中监控虚拟机对物理内存中未使用的物理内存进行以下处理:
步骤301,将所述监控虚拟机内未使用的物理内存空间的起始地址按照1G对齐;
步骤302,创建三个位图,分别记录所述物理内存空间中1G页面,2M页面,4K页面的空闲信息,未使用记录为1,使用记录为0;
步骤303,将此空间分解为页数为1GB页、2MB页、4KB页的三个页组合,且页组合里的页必须是对齐的,并将所述三个位图中对应于所述页组合里相关页的相应位置记录为1;
步骤304,将待映射虚拟机的待映射机器页与监控虚拟机的物理页绑定后,分配物理页时,先从对应的页位图中寻找空闲页,找不到时则其他位图中寻找空闲页,释放物理页时,检查与所述物理页在同一个大页中的的其它页是否空闲,若空闲则将释放后的物理页与所述其他页合并成一个大页,并更新相关位图。
图2是本发明的虚拟机内存映射系统示意图。如图2所示,该系统包括:
映射请求模块100,根据应用层映射请求选择内存映射方式,当是小页内存映射需求时调用小页映射方式,执行小页面映射模块,当是大页面内存映射需求时调用大页映射方式,执行大页面映射模块;
小页面映射模块200,将待映射虚拟机的待映射机器页与监控虚拟机的物理页绑定,直接读写所映射的虚拟机的对应内存,执行映射处理模块;
大页面映射模块300,所述监控虚拟机对物理内存中未使用的物理内存进行处理后,将其虚拟地址空间分解为相应的多个页组合的物理页,获取待映射虚拟机的待映射机器页,判断所述待映射机器页是否与所述监控虚拟机的多个页组合的物理页中的任意物理页大小相同,若相同,直接将所述待映射虚拟机的待映射机器页与所述监控虚拟机的物理页绑定,否则继续分解所述多个页组合的的物理页,直至所述待映射的机器页与所述多个页组合的物理页中的任意物理页大小相同,然后将所述待映射虚拟机的待映射机器页与所述监控虚拟机的物理页绑定,执行映射处理模块;
映射处理模块400,映射结束后,将与所述待映射虚拟机的映射内存对应的所述监控虚拟机内存释放,设置所述监控虚拟机的机器页到物理页映射表,将相应项设为无效机器页。
进一步的,所述大页面映射模块300包括:
第一分配模块,在所述监控虚拟机内分配n页内存,并将其锁定,所述待映射虚拟机的待映射内存大小为n页;
第一获取模块,获取所述监控虚拟机的n页内存的物理地址,释放所述物理地址对应的机器页;
第一处理模块,获取所述待映射虚拟机的待映射机器页,将所述待映射虚拟机的待映射机器页与所述监控虚拟机的物理地址绑定,并在所述待映射虚拟机的物理页到机器页映射表中标记被绑定的内存机器页为已被映射,同时更新所述监控虚拟机的机器页到物理页映射表,使得相应项记录监控虚拟机物理页;
第一读写模块,通过vaddr直接读写所映射的虚拟机的对应内存,其中vaddr为所述监控虚拟机内存地址。
进一步的,所述大页面映射模块300还包括:
第二分配模块,在所述监控虚拟机内分配一段大小为n页的虚拟地址空间,所述待映射虚拟机的待映射内存大小为n页;
划分处理模块,将所述虚拟地址空间划分为1GB页、2MB页、4KB页的页组合,所述页组合的页是对齐的,1GB页的地址是1GB对齐,2MB页的地址是2MB对齐,4K页的地址是4KB对齐;
第二处理模块,然后将待映射虚拟机的待映射内存机器页与监控虚拟机的物理页绑定后,更新所述待映射虚拟机的物理页到机器页映射表,并在所述待映射虚拟机的物理页到机器页映射表中标记被绑定的内存机器页为已被映射,同时更新所述监控虚拟机的机器页到物理页映射表,使得相应项记录监控虚拟机物理页。
第二读写模块,通过vaddr读写所映射的虚拟机的对应内存。
进一步的,所述映射处理模块400之后还包括:
更改处理模块500,更改所述监控虚拟机的虚拟机监控器的缺页异常处理函数,当所述监控虚拟机再次访问已释放的虚拟机内存时,所述监控虚拟机收到通用保护错误,并在异常处理函数中解映射或重新映射虚拟机的相应内存。
进一步的,所述大页面映射模块中监控虚拟机对物理内存中未使用的物理内存进行以下处理:
将所述监控虚拟机内未使用的物理内存空间的起始地址按照1G对齐;
创建三个位图,分别记录所述物理内存空间中1G页面,2M页面,4K页面的空闲信息,未使用记录为1,使用记录为0;
将此空间分解为页数为1GB页、2MB页、4KB页的三个页组合,且页组合里的页必须是对齐的,并将所述三个位图中对应于所述页组合里相关页的相应位置记录为1;
将待映射虚拟机的待映射机器页与监控虚拟机的物理页绑定后,分配物理页时,先从对应的页位图中寻找空闲页,找不到时则其他位图中寻找空闲页,释放物理页时,检查与所述物理页在同一个大页中的的其它页是否空闲,若空闲则将释放后的物理页与所述其他页合并成一个大页,并更新相关位图。
现在通过Xen平台使用windows2003操作系统作为特权虚拟机的内存映射为一个具体实施例对本发明作进一步描述。
具体来说,本发明是针对虚拟化平台下HVM(硬件辅助虚拟化)监控虚拟机内存映射方法,包括下列步骤:
A.若待映射的是小块的虚拟机内存,假设待映射内存的大小为n页,则执行以下步骤:
A1.在监控虚拟机内分配n页内存(假设这些内存的虚拟地址为vaddr),并锁定这些内存。
A2.获取这n页的物理地址,并释放这些物理地址所对应的机器内存页。
A3.获取待映射虚拟机待映射内存的机器页,之后将上一步的物理地址与这些机器页绑定。在待映射虚拟机的P2M(物理页到机器页映射)表中标记这些已经被映射页的类型为mapped(已被映射).同时更新M2P(机器页到物理页映射)表,使得相应项记录监控虚拟机物理页。
A5.若上述步骤成功,程序就可以通过vaddr直接读写所映射的虚拟机的对应内存。
B.若待映射的是大块或全部的虚拟机内存,假设待映射内存的大小为n页,则执行以下步骤:
B1.程序启动时探测监控虚拟机的物理内存范围,将未使用的物理内存空间用以下方法管理起来,以便后续分配和回收不同大小的物理内存页:
将此空间的起始地址按照1G对齐即将此地址和0xffffffffc0000000按位与,并记录为此空间的起始地址。
创建三个位图,分别记录此空间中1G页面,2M页面,4K页面的空闲(记录为1)或使用(记录为0)情况。
将此空间分解为页数最少的页组合(1GB页、2MB页、4KB页),而且页组合里的页必须是对齐的,即1GB页的地址是1GB对齐,2MB页的地址是2MB对齐,4K页的地址是4KB对齐。将三个位图中对应于页组合里相关页的相应位置为1。
分配物理页时,先从对应的页位图中寻找空闲页。若找不到则从稍大页的位图中寻找空闲页,并将其分解为512个小页。
释放物理页时,检查与此页在同一个大页中的的其它511个页是否空闲,若空闲则合并成一个大页,并更新相关位图。
B2.在监控虚拟机内分配一段大小为n页的虚拟地址空间,之后将映射请求(内容包括用户称程序的进程号及虚拟地址空间的起始地址vaddr及n)提交给驱动模块。
B3.分析这段虚拟地址空间,将其划分为页数最少的页组合(1GB页、2MB页、4KB页),同时页组合里的页必须是对齐的,即1GB页的地址是1GB对齐,2MB页的地址是2MB对齐,4K页的地址是4KB对齐。
B4.依次对页组合中的虚拟页执行以下操作,之后程序就可以通过vaddr直接读写所映射的虚拟机的对应内存:
从B1所述的物理空间中为虚拟页分配一个相应大小的物理页。若分配失败则分配512个较小的物理页。
更新用户程序的页表,使得虚拟页与物理页对应起来。
查询待映射虚拟机的P2M表,获取待映射的物理页所对应的机器页,同时确认此机器页是否跟物理页同样大小,若不同,则分解物理页。
更新待映射虚拟机的P2M表,标记这些已经被映射页的类型为mapped.
更新监控虚拟机的P2M表,使得物理页与机器页对应起来,同时更新M2P表,使得相应项记录监控虚拟机物理页。
C.监控虚拟机映射指定虚拟机的指定内存后,若虚拟机对应的内存被释放(虚拟机关闭或迁移时或气球机制运行时),则执行以下步骤:
C1.查询M2P表,找到映射此机器页的监控虚拟机对应的物理页。
C2.设置监控虚拟机的P2M表,将相应项设为INVALID_MFN(无效机器页)。
C3.更改hypervisor(虚拟机监控器)的page_fault(缺页)异常处理函数,使其在此种情况下,向上层返回通用保护错误。
C4.监控虚拟机再次访问已释放的虚拟机内存时,就会收到通用保护错误,此时可以在异常处理函数里解映射或重新映射虚拟机的相应内存。
图3是本发明的一实施例的Xen虚拟化平台下高效虚拟机内存映射系统示意图。实现一个如图3所示的应用系统,该系统包括如图所示的映射请求模块,小页面映射模块,大页面映射模块,物理地址空间管理器,更新M2P表模块,获取MFN模块,设置P2M表模块。
此虚拟机内存映射过程分为两类情况,根据应用层映射请求模块的不同需求能够选择不同的内存映射方法,当是小页内存映射需求时调用小页映射模块,当有大页面内存映射需求时调用大页映射模块。
通过Xen平台使用windows2003操作系统作为特权虚拟机的内存映射方法包括:
1应用层映射请求模块判断映射请求类型。若为小页面内存映射需求,以一页为例,则在windows特权机中分配两页虚拟地址空间内存,并锁定该内存,调用驱动中小页映射模块,执行步骤2和步骤4;若为大页面内存映射需求,应用层解析待映射虚拟机内存起始地址,例如映射虚拟机1G+3M+8K开始的2G内存,则向windows操作系统申请大小为2G,起始地址为nG+3M+8K的虚拟地址空间,其中n可以是0,1,2……,若都不成功则申请起始地址为(2n+1)M+8k的虚拟地址空间,其中n可以是0,1,2..….,若还是不行则让操作系统随便分一段虚拟地址空间。调用驱动中大页映射模块,执行步骤3和步骤4。
2分别执行以下子步骤:
2.1获取第2页的伪物理地址,并释放这个伪物理地址所对应的机器内存页,调用Xen超级调用do_memory_op(子功能号为XENMEM_decrease_reservation).
2.2驱动中小页映射模块根据应用层传入的待映射虚拟机内存页,调用xenpatch中获取MFN模块,得到待映射页对应的MFN(机器页)。
2.3根据步骤2.2获得的MFN调用设置P2M表模块,修改特权虚拟机P2M表将步骤1中锁定的内存页对应此MFN。标记P2M表中这些已经被映射页的类型为mapped.
2.4更新M2P表,使得相应项记录特权机物理页框号。
3分别执行以下子步骤:
3.1驱动中大页映射模块将虚拟地址空间分解为页数最少的页组合,1个1G页,510个2M页,1024个4K页。执行步骤3.2。
3.2针对每一页执行如下操作:
1)调用物理地址空间管理器模块。从物理地址空间管理器里分配一页相应大小的物理页。
2)设置windows特权虚拟机的页表,使虚拟页与物理页对应起来。
3)调用获取MFN模块,查询待映射HVM虚拟机的P2M表,获取待映射的物理页所对应的机器页框号,同时确认此机器页是否跟虚拟页同样大小,若不同,则分解物理页为较小的页。
4)调用设置P2M模块,更新特权虚拟机的P2M表,使得物理页与机器页对应起来,并标记P2M表中这些已经被映射页的类型为mapped。
3.3更新M2P表,使得相应项记录特权机物理页框号。执行步骤5。
4特权机映射指定虚拟机的指定内存后,若虚拟机对应的内存被释放,调用解映射模块,执行以下步骤:
1)查询M2P表,找到映射此机器页的特权机对应的物理页框号。
2)设置特权机的P2M表,将相应项设为INVALID_MFN.
3)更改XEN的page_fault异常处理函数,向上层返回通用保护错误。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。

Claims (10)

1.一种虚拟机内存映射方法,其特征在于,包括:
步骤1,根据应用层映射请求选择内存映射方式,当是小页内存映射需求时调用小页映射方式,执行步骤2,当是大页面内存映射需求时调用大页映射方式,执行步骤3;
步骤2,将待映射虚拟机的待映射机器页与监控虚拟机的物理页绑定,直接读写所映射的虚拟机的对应内存,执行步骤4;
步骤3,所述监控虚拟机对物理内存中未使用的物理内存进行处理后,将其虚拟地址空间分解为相应的多个页组合的物理页,获取待映射虚拟机的待映射机器页,判断所述待映射机器页是否与所述监控虚拟机的多个页组合的物理页中的任意物理页大小相同,若相同,直接将所述待映射虚拟机的待映射机器页与所述监控虚拟机的物理页绑定,否则继续分解所述多个页组合的的物理页,直至所述待映射的机器页与所述多个页组合的物理页中的任意物理页大小相同,然后将所述待映射虚拟机的待映射机器页与所述监控虚拟机的物理页绑定,执行步骤4;
步骤4,映射结束后,将与所述待映射虚拟机的映射内存对应的所述监控虚拟机内存释放,设置所述监控虚拟机的机器页到物理页映射表,将相应项设为无效机器页。
2.如权利要求1所述的虚拟机内存映射方法,其特征在于,所述步骤2包括:
步骤21,在所述监控虚拟机内分配n页内存,并将其锁定,所述待映射虚拟机的待映射内存大小为n页;
步骤22,获取所述监控虚拟机的n页内存的物理地址,释放所述物理地址对应的机器页;
步骤23,获取所述待映射虚拟机的待映射机器页,将所述待映射虚拟机的待映射机器页与所述监控虚拟机的物理地址绑定,并在所述待映射虚拟机的物理页到机器页映射表中标记被绑定的内存机器页为已被映射,同时更新所述监控虚拟机的机器页到物理页映射表,使得相应项记录监控虚拟机物理页;
步骤24,通过vaddr直接读写所映射的虚拟机的对应内存,其中vaddr为所述监控虚拟机内存地址。
3.如权利要求1所述的虚拟机内存映射方法,其特征在于,所述步骤3还包括:
步骤31,在所述监控虚拟机内分配一段大小为n页的虚拟地址空间,所述待映射虚拟机的待映射内存大小为n页;
步骤32,将所述虚拟地址空间划分为1GB页、2MB页、4KB页的页组合,所述页组合的页是对齐的,1GB页的地址是1GB对齐,2MB页的地址是2MB对齐,4K页的地址是4KB对齐;
步骤33,然后将待映射虚拟机的待映射内存机器页与监控虚拟机的物理页绑定后,更新所述待映射虚拟机的物理页到机器页映射表,并在所述待映射虚拟机的物理页到机器页映射表中标记被绑定的内存机器页为已被映射,同时更新所述监控虚拟机的机器页到物理页映射表,使得相应项记录监控虚拟机物理页;
步骤34,通过vaddr读写所映射的虚拟机的对应内存。
4.如权利要求1所述的虚拟机内存映射方法,其特征在于,所述步骤4之后还包括:
步骤5,更改所述监控虚拟机的虚拟机监控器的缺页异常处理函数,当所述监控虚拟机再次访问已释放的虚拟机内存时,所述监控虚拟机收到通用保护错误,并在异常处理函数中解映射或重新映射虚拟机的相应内存。
5.如权利要求1所述的虚拟机内存映射方法,其特征在于,所述步骤3中监控虚拟机对物理内存中未使用的物理内存进行以下处理:
步骤301,将所述监控虚拟机内未使用的物理内存空间的起始地址按照1G对齐;
步骤302,创建三个位图,分别记录所述物理内存空间中1G页面,2M页面,4K页面的空闲信息,未使用记录为1,使用记录为0;
步骤303,将此空间分解为页数为1GB页、2MB页、4KB页的三个页组合,且页组合里的页必须是对齐的,并将所述三个位图中对应于所述页组合里相关页的相应位置记录为1;
步骤304,将待映射虚拟机的待映射机器页与监控虚拟机的物理页绑定后,分配物理页时,先从对应的页位图中寻找空闲页,找不到时则其他位图中寻找空闲页,释放物理页时,检查与所述物理页在同一个大页中的的其它页是否空闲,若空闲则将释放后的物理页与所述其它页合并成一个大页,并更新相关位图。
6.一种虚拟机内存映射系统,其特征在于,包括:
映射请求模块,根据应用层映射请求选择内存映射方式,当是小页内存映射需求时调用小页映射方式,执行小页面映射模块,当是大页面内存映射需求时调用大页映射方式,执行大页面映射模块;
小页面映射模块,将待映射虚拟机的待映射机器页与监控虚拟机的物理页绑定,直接读写所映射的虚拟机的对应内存,执行映射处理模块;
大页面映射模块,所述监控虚拟机对物理内存中未使用的物理内存进行处理后,将其虚拟地址空间分解为相应的多个页组合的物理页,获取待映射虚拟机的待映射机器页,判断所述待映射机器页是否与所述监控虚拟机的多个页组合的物理页中的任意物理页大小相同,若相同,直接将所述待映射虚拟机的待映射机器页与所述监控虚拟机的物理页绑定,否则继续分解所述多个页组合的的物理页,直至所述待映射的机器页与所述多个页组合的物理页中的任意物理页大小相同,然后将所述待映射虚拟机的待映射机器页与所述监控虚拟机的物理页绑定,执行映射处理模块;
映射处理模块,映射结束后,将与所述待映射虚拟机的映射内存对应的所述监控虚拟机内存释放,设置所述监控虚拟机的机器页到物理页映射表,将相应项设为无效机器页。
7.如权利要求6所述的虚拟机内存映射系统,其特征在于,所述大页面映射模块包括:
第一分配模块,在所述监控虚拟机内分配n页内存,并将其锁定,所述待映射虚拟机的待映射内存大小为n页;
第一获取模块,获取所述监控虚拟机的n页内存的物理地址,释放所述物理地址对应的机器页;
第一处理模块,获取所述待映射虚拟机的待映射机器页,将所述待映射虚拟机的待映射机器页与所述监控虚拟机的物理地址绑定,并在所述待映射虚拟机的物理页到机器页映射表中标记被绑定的内存机器页为已被映射,同时更新所述监控虚拟机的机器页到物理页映射表,使得相应项记录监控虚拟机物理页;
第一读写模块,通过vaddr直接读写所映射的虚拟机的对应内存,其中vaddr为所述监控虚拟机内存地址。
8.如权利要求6所述的虚拟机内存映射系统,其特征在于,所述大页面映射模块还包括:
第二分配模块,在所述监控虚拟机内分配一段大小为n页的虚拟地址空间,所述待映射虚拟机的待映射内存大小为n页;
划分处理模块,将所述虚拟地址空间划分为1GB页、2MB页、4KB页的页组合,所述页组合的页是对齐的,1GB页的地址是1GB对齐,2MB页的地址是2MB对齐,4K页的地址是4KB对齐;
第二处理模块,然后将待映射虚拟机的待映射内存机器页与监控虚拟机的物理页绑定后,更新所述待映射虚拟机的物理页到机器页映射表,并在所述待映射虚拟机的物理页到机器页映射表中标记被绑定的内存机器页为已被映射,同时更新所述监控虚拟机的机器页到物理页映射表,使得相应项记录监控虚拟机物理页;
第二读写模块,通过vaddr读写所映射的虚拟机的对应内存。
9.如权利要求6所述的虚拟机内存映射系统,其特征在于,所述映射处理模块之后还包括:
更改处理模块,更改所述监控虚拟机的虚拟机监控器的缺页异常处理函数,当所述监控虚拟机再次访问已释放的虚拟机内存时,所述监控虚拟机收到通用保护错误,并在异常处理函数中解映射或重新映射虚拟机的相应内存。
10.如权利要求6所述的虚拟机内存映射系统,其特征在于,所述大页面映射模块中监控虚拟机对物理内存中未使用的物理内存进行以下处理:
将所述监控虚拟机内未使用的物理内存空间的起始地址按照1G对齐;
创建三个位图,分别记录所述物理内存空间中1G页面,2M页面,4K页面的空闲信息,未使用记录为1,使用记录为0;
将此空间分解为页数为1GB页、2MB页、4KB页的三个页组合,且页组合里的页必须是对齐的,并将所述三个位图中对应于所述页组合里相关页的相应位置记录为1;
将待映射虚拟机的待映射机器页与监控虚拟机的物理页绑定后,分配物理页时,先从对应的页位图中寻找空闲页,找不到时则其他位图中寻找空闲页,释放物理页时,检查与所述物理页在同一个大页中的的其它页是否空闲,若空闲则将释放后的物理页与所述其它页合并成一个大页,并更新相关位图。
CN201310134852.5A 2013-04-18 2013-04-18 一种虚拟机内存映射方法及系统 Expired - Fee Related CN103257929B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310134852.5A CN103257929B (zh) 2013-04-18 2013-04-18 一种虚拟机内存映射方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310134852.5A CN103257929B (zh) 2013-04-18 2013-04-18 一种虚拟机内存映射方法及系统

Publications (2)

Publication Number Publication Date
CN103257929A CN103257929A (zh) 2013-08-21
CN103257929B true CN103257929B (zh) 2016-03-16

Family

ID=48961862

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310134852.5A Expired - Fee Related CN103257929B (zh) 2013-04-18 2013-04-18 一种虚拟机内存映射方法及系统

Country Status (1)

Country Link
CN (1) CN103257929B (zh)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104516826B (zh) * 2013-09-30 2017-11-17 华为技术有限公司 一种虚拟大页面与物理大页面的对应方法及装置
CN104714821B (zh) * 2013-12-17 2018-07-31 华为技术有限公司 操作系统实例创建方法及装置
CN103984599B (zh) * 2014-04-14 2017-05-17 北京大学 一种提高操作系统大页使用率的方法
CN103914403B (zh) * 2014-04-28 2016-11-02 中国科学院微电子研究所 一种混合内存访问情况的记录方法及其系统
CN104156255B (zh) * 2014-07-31 2017-10-17 华为技术有限公司 一种虚拟机迁移方法、虚拟机迁移装置及源物理主机
CN105373413A (zh) * 2014-08-22 2016-03-02 中兴通讯股份有限公司 Xen虚拟化系统的全映射方法及装置
CN105468542B (zh) * 2014-09-03 2019-03-26 杭州华为数字技术有限公司 地址分配方法及装置
CN105830022B (zh) * 2014-11-28 2019-03-08 华为技术有限公司 访问文件的方法和装置
US9542333B2 (en) * 2014-12-04 2017-01-10 Qualcomm Incorporated Systems and methods for providing improved latency in a non-uniform memory architecture
US9575881B2 (en) * 2014-12-04 2017-02-21 Qualcomm Incorporated Systems and methods for providing improved latency in a non-uniform memory architecture
CN104536816A (zh) * 2014-12-17 2015-04-22 中电科华云信息技术有限公司 提高虚拟机迁移效率的方法
CN106326144B (zh) * 2015-06-24 2019-08-06 龙芯中科技术有限公司 基于大页映射的数据读取方法及装置
CN105718325B (zh) * 2016-01-22 2019-05-03 北京航空航天大学 基于虚拟机集群的回滚方法及系统和服务器
CN107038128B (zh) * 2016-02-03 2020-07-28 华为技术有限公司 一种执行环境的虚拟化、虚拟执行环境的访问方法及装置
CN107278292B (zh) * 2016-06-21 2020-07-28 华为技术有限公司 一种虚拟机内存的映射方法、装置及数据传输设备
EP3602376B1 (en) * 2017-03-29 2022-03-30 Advanced Micro Devices, Inc. Monitoring of memory page transitions between a hypervisor and a virtual machine
CN107239696B (zh) * 2017-04-11 2019-07-19 中国科学院信息工程研究所 一种针对虚拟化超级调用函数的漏洞热修复方法
CN107644065A (zh) * 2017-08-31 2018-01-30 北京金堤科技有限公司 企业信息关系网络的构建方法及装置
SG10201808256PA (en) * 2018-09-21 2020-04-29 Singapore Management Univ Method and system for dynamically detecting, analyzing, monitoring, investigating and/or executing a live target program
CN109582594A (zh) * 2018-12-05 2019-04-05 北京锐安科技有限公司 一种内存地址的管理方法、装置、设备和存储介质
CN110399205B (zh) * 2019-07-29 2022-09-06 中国科学技术大学 一种基于状态感知的虚拟机内存动态调节方法
CN110968361B (zh) * 2019-11-04 2021-11-23 上海交通大学 隔离沙箱加载方法
CN111562975B (zh) * 2020-05-20 2023-01-06 苏州浪潮智能科技有限公司 一种虚拟机大页内存的开机调度方法、装置、设备和介质
CN113849428A (zh) * 2020-06-28 2021-12-28 华为技术有限公司 共享内存权限配置方法,内存单元和系统
CN112596913B (zh) * 2020-12-29 2022-08-02 海光信息技术股份有限公司 提高内存透明大页性能的方法、装置及用户设备、存储介质
CN115129459A (zh) * 2021-03-24 2022-09-30 华为技术有限公司 一种内存管理的方法及设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101403992A (zh) * 2008-07-18 2009-04-08 华为技术有限公司 实现远程内存交换的方法、装置及系统
CN101477495A (zh) * 2008-10-28 2009-07-08 北京航空航天大学 分布式内存虚拟化技术的实现方法
US8015387B2 (en) * 2006-10-12 2011-09-06 Foundry Networks, Llc Virtual memory mapping for efficient memory usage

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8015387B2 (en) * 2006-10-12 2011-09-06 Foundry Networks, Llc Virtual memory mapping for efficient memory usage
CN101403992A (zh) * 2008-07-18 2009-04-08 华为技术有限公司 实现远程内存交换的方法、装置及系统
CN101477495A (zh) * 2008-10-28 2009-07-08 北京航空航天大学 分布式内存虚拟化技术的实现方法

Also Published As

Publication number Publication date
CN103257929A (zh) 2013-08-21

Similar Documents

Publication Publication Date Title
CN103257929B (zh) 一种虚拟机内存映射方法及系统
US9952891B2 (en) Anomalous usage of resources by a process in a software defined data center
US9454497B2 (en) Technologies for secure inter-virtual-machine shared memory communication
DE102007063960B3 (de) Synchronisieren eines Übersetzungspufers (TLB) mit einer erweiterten Seitenwechseltabelle
DE202019005671U1 (de) Koexistenz von Vertrauensdomänenarchitektur mitMehrschlüssel-Gesamtspeicherverschlüsselungstechnologieauf Servern
CN101853416B (zh) 设有虚拟智能卡的物理智能卡及虚拟智能卡的配置方法
DE112016002285T5 (de) Adressvalidierung unter verwendung von signaturen
CN104036185B (zh) 基于虚拟化的宏内核操作系统载入模块权能隔离方法
DE112017003483T5 (de) Eingeschränkte adressumsetzung zum schutz vor vorrichtungs-tlb-anfälligkeiten
CN104408366B (zh) 基于插装技术的安卓应用程序权限使用行为跟踪方法
CN103440457B (zh) 基于进程模拟的二进制程序分析系统
DE112020000303T5 (de) Testen von speicherschutz-hardware in einer umgebung einer sicheren virtuellen maschine
DE102023202297A1 (de) Wahrung der vertraulichkeit von mandanten in einer cloud-umgebung beim einsatz von sicherheitsdiensten
DE112020000223B4 (de) Gemeinsame speichernutzung zwischen einer sicheren domäne und einer nicht sicheren entität
DE102012200613A1 (de) System und Verfahren zur Unterstützung von JIT in einem sicheren System und zufällig zugewiesenen Speicherbereichen
DE112019000594T5 (de) Injizieren von Abfangcode in einen Ausführungspfad eines ein Programm ausführenden Prozesses, um einen Abfangadressbereich zu erzeugen, um möglichen schädlichen Programmcode zu erkennen
CN103309819B (zh) 嵌入式系统及其中的内存安全管理方法
DE202017007430U1 (de) Erkennen von Bussperrbedingungen und Vermeiden von Bussperren
CN104298623B (zh) 电子装置、操作系统以及访问控制方法
CN101470633A (zh) 一种虚拟机监视器、虚拟机系统及其内存处理方法
CN104091102A (zh) 一种基于安卓系统的多用户管理方法及其装置
DE112020000285T5 (de) Programmunterbrechungen für Seiten-Import/-Export
DE102018125665A1 (de) Vorrichtung und verfahren zum pausieren einer prozessortrace für eine effiziente analyse
CN102799491B (zh) 虚拟机间安全通信方法
CN107562521B (zh) 一种资源管理方法及装置

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
C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20170120

Address after: 200031 Shanghai, Hunan Road, No. 121, building 10, building

Patentee after: SHANGHAI YINGLIAN SOMATOSENSORY INTELLIGENT TECHNOLOGY Co.,Ltd.

Address before: 100190 Haidian District, Zhongguancun Academy of Sciences, South Road, No. 6, No.

Patentee before: Institute of Computing Technology, Chinese Academy of Sciences

CP01 Change in the name or title of a patent holder

Address after: 200031 Shanghai, Hunan Road, No. 121, building 10, building

Patentee after: SHANGHAI YINGLIAN INFORMATION TECHNOLOGY CO.,LTD.

Address before: 200031 Shanghai, Hunan Road, No. 121, building 10, building

Patentee before: SHANGHAI YINGLIAN SOMATOSENSORY INTELLIGENT TECHNOLOGY Co.,Ltd.

CP01 Change in the name or title of a patent holder
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160316

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