CN102306126A - 内存管理方法、装置和系统 - Google Patents
内存管理方法、装置和系统 Download PDFInfo
- Publication number
- CN102306126A CN102306126A CN201110246894A CN201110246894A CN102306126A CN 102306126 A CN102306126 A CN 102306126A CN 201110246894 A CN201110246894 A CN 201110246894A CN 201110246894 A CN201110246894 A CN 201110246894A CN 102306126 A CN102306126 A CN 102306126A
- Authority
- CN
- China
- Prior art keywords
- memory
- machine
- virtual
- virtual machine
- processing program
- 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
Images
Landscapes
- Stored Programmes (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明实施例提供了一种内存管理方法、装置和系统。该方法主要包括:通过内存管理单元来建立和管理针对所有虚拟机的物理内存和机器内存之间的映射关系表,虚拟机接收到本虚拟机上的业务处理程序发送的虚拟内存的分配请求,给所述业务处理程序分配所述虚拟内存对应的物理内存,将所述虚拟内存的分配请求、所述物理内存、所述虚拟机的标识发送给所述内存管理单元。所述内存管理单元根据所述虚拟机的标识、所述物理内存查询所述映射关系表,给所述业务处理程序分配机器内存。本发明实施例大大提高了业务处理程序中的内存使用、内存分配的效率。
Description
技术领域
本发明涉及计算机应用技术领域,尤其涉及一种内存管理方法、装置和系统。
背景技术
一个物理路由器上可能有一到多个SPU(Service Processing Unit,物理业务板),上述SPU上运行着业务处理程序,用来处理由LPU(LineProcessing Unit,接口板)转发过来的业务流。为了在一个SPU上运行多个业务处理程序,必须构建VSPU(Virtual Service Processing Unit,虚拟业务板),这样在每个VSPU上可以单独运行一个业务处理程序。
内存虚拟化是业务板虚拟化的一个重要方面,而内存的映射是内存虚拟化的一个重要方面。现有技术中的一种多核处理器上的内存虚拟化的实现方案为:半虚拟化Xen(一种虚拟机)方案,该方案主要采用影子页表技术,针对每个业务处理程序,需要完成虚拟地址到物理地址、物理地址到机器地址的两级映射。虚拟地址到物理地址的映射,由虚拟机内的Guest OS(GuestOperating System,VM中运行的操作系统)维护的一套页表来完成,物理地址到机器地址的映射,由虚拟机内的VMM(Virtual Machine Monitor,虚拟机管理进程)维护的一套页表来完成。
在实现本发明过程中,发明人发现上述现有技术中的多核处理器上的内存虚拟化的实现方案至少存在如下问题:业务处理程序只能通过虚拟机内的Guest OS来访问页表,在每个虚拟机内都要经过两层映射才能完成虚拟地址到机器地址的转换,降低了执行效率。
发明内容
本发明的实施例提供了一种内存管理方法、装置和系统,以提高业务处理程序使用中的内存分配效率。
一种内存管理方法,包括:
内存管理单元接收虚拟机发送的虚拟内存的分配请求、物理内存和虚拟机的标识,所述虚拟内存的分配请求为虚拟机上的业务处理程序发送给所述虚拟机的,所述物理内存为所述虚拟机给所述业务处理程序分配的所述虚拟内存对应的物理内存;
所述内存管理单元根据所述虚拟机的标识、所述物理内存查询其管理的针对所有虚拟机的物理内存和机器内存之间的映射关系表,给所述业务处理程序分配机器内存,以使得所述虚拟机将所述虚拟内存发送给所述业务处理程序。
一种内存管理方法,包括:
虚拟机接收到本虚拟机上的业务处理程序发送的虚拟内存的分配请求,所述虚拟机给所述业务处理程序分配所述虚拟内存对应的物理内存;
所述虚拟机将所述虚拟内存的分配请求、所述物理内存、所述虚拟机的标识发送给所述内存管理单元,在所述内存管理单元给所述业务处理程序分配机器内存后,所述虚拟机将所述虚拟内存发送给所述业务处理程序。
一种内存管理单元,包括:
信息接收模块,用于接收虚拟机发送的虚拟内存的分配请求、物理内存和虚拟机的标识,所述虚拟内存的分配请求为虚拟机上的业务处理程序发送给所述虚拟机的,所述物理内存为所述虚拟机给所述业务处理程序分配的所述虚拟内存对应的物理内存;
机器内存分配模块,用于根据所述信息接收模块所接收到的所述虚拟机的标识、所述物理内存查询其管理的针对所有虚拟机的物理内存和机器内存之间的映射关系表,给所述业务处理程序分配机器内存,以使得所述虚拟机将所述虚拟内存发送给所述业务处理程序。
一种虚拟机,包括:
内存分配模块,用于接收本虚拟机上的业务处理程序发送的虚拟内存的分配请求,给所述业务处理程序分配所述虚拟内存对应的物理内存;
信息发送模块,用于将所述虚拟内存的分配请求、所述物理内存、所述虚拟机的标识发送给内存管理单元;
所述的内存分配模块,还用于在所述内存管理单元给所述业务处理程序分配机器内存后,所述虚拟机将所述虚拟内存发送给所述业务处理程序。
一种内存管理系统,包括所述的内存管理单元和所述的虚拟机。
由上述本发明的实施例提供的技术方案可以看出,本发明实施例通过内存管理单元上的内存虚拟化部件来给所有的业务处理程序分配机器内存,从而使用硬件映射关系表来完成每个虚拟机内部的两级内存映射,大大提高了业务处理程序中的内存使用、内存分配的效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一提供的一种内存管理方法的原理示意图;
图2为本发明实施例一提供的一种内存管理方法的具体处理流程图;
图3为本发明实施例一提供的一种利用空闲机器内存链给虚拟机分配机器内存区间方法的具体处理流程示意图;
图4为本发明实施例一提供的一种利用空闲机器内存链给业务分配机器内存区间方法的具体处理流程示意图;
图5为本发明实施例一提供的一种在内核停止后,将内核所占用的机器内存回收的方法的处理流程图;
图6为本发明实施例一提供的一种内存管理单元将机器内存区间回收的方法的处理流程图;
图7为本发明实施例二提供的一种内存管理方法的具体处理流程图;
图8为本发明实施例三提供的一种内存管理单元的具体结构图;
图9为本发明实施例三提供的一种虚拟机的具体结构图;
图10为本发明实施例三提供的一种内存管理系统的具体结构图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为便于对本发明实施例的理解,下面将结合附图以几个具体实施例为例做进一步的解释说明,且各个实施例并不构成对本发明实施例的限定。
实施例一
该实施例提供的一种内存管理方法的原理示意图如图1所示,具体处理流程如图2所示,包括:
步骤21、内存管理单元接收虚拟机发送的虚拟内存的分配请求、物理内存和虚拟机的标识。
上述的虚拟内存的分配请求为虚拟机上的业务处理程序发送给所述虚拟机的,所述物理内存为所述虚拟机给所述业务处理程序分配的所述虚拟内存对应的物理内存。
步骤22、所述内存管理单元根据所述虚拟机的标识、所述物理内存查询其管理的针对所有虚拟机的物理内存和机器内存之间的映射关系表,给所述业务处理程序分配机器内存,以使得所述虚拟机将所述虚拟内存发送给所述业务处理程序。
具体的,上述的步骤22可以包括:
步骤221、通过内存管理单元来建立和管理针对所有虚拟机的物理内存和机器内存之间的映射关系表。
当重新设置的虚拟机需要物理内存或者已经设置的虚拟机的物理内存不够时,所述内存管理单元接收所述虚拟机发送的物理内存的分配请求;
所述内存管理单元中的内存虚拟化部件根据所述虚拟机请求的物理内存的大小,从内存管理单元的空闲机器内存链表中为所述虚拟机分配机器内存,通过硬件将所述机器内存映射成的同样大小的物理内存。
所述内存虚拟化部件将分配给所述虚拟机的机器内存和物理内存,以及所述虚拟机的标识写入到所述内存管理单元管理的所述映射关系表中,将分配给所述虚拟机的物理内存发送给所述虚拟机。上述映射关系表由所述的内存虚拟化部件通过硬件来维护。在多核处理器中,每个内核都具有一个硬件的TLB(Translation lookaside buffer,旁路转换户缓冲区)表,其中存放了页表文件完成不同地址间的转换。所述的内存虚拟化部件利用管理内核上的TLB表来维护所述虚拟机的物理内存与所述机器内存的映射关系,以提高转换效率。
步骤222、所述内存管理单元中的内存虚拟化部件根据所述虚拟机的标识查询所述映射关系表,获取所述虚拟机的机器内存和该机器内存中的空闲机器内存的大小;
当所述空闲机器内存的大小大于所述物理内存的大小,所述内存虚拟化部件利用所述虚拟机的空闲机器内存链表给所述业务处理程序分配和所述物理内存同样大小的机器内存,并将分配的机器内存从所述虚拟机的空闲机器内存链中删除;将分配的机器内存与所述物理内存的对应关系写入到所述内存管理单元管理的所述映射关系表中。
当所述空闲机器内存的大小不大于所述物理内存的大小,所述内存虚拟化部件利用其维护的不属于所有虚拟机的空闲机器内存链表给所述业务处理程序分配和所述物理内存同样大小的机器内存,并将分配的机器内存从所述不属于所有虚拟机的空闲机器内存链中删除,将分配的机器内存加入到所述虚拟机的机器内存中。将分配的机器内存与所述物理内存的对应关系写入到所述内存管理单元管理的所述映射关系表中。
进一步地,上述图2所示的内存管理方法的处理流程还可以包括:
所述内存管理单元接收所述虚拟机发送的所述业务处理程序所在的内核的标识,所述内存管理单元将分配给所述业务处理程序的虚拟内存和机器内存填入到所述业务处理程序所在的内核管理的虚拟内存和机器内存之间的映射关系表中,上述映射关系表由所述业务处理程序所在的内核通过硬件来维护。
进一步地,上述步骤222中的所述内存管理单元中的内存虚拟化部件根据所述虚拟机请求的物理内存的大小,从内存管理单元的空闲机器内存链表中为所述虚拟机分配机器内存,可以包括:
在上述内存虚拟化部件中建立不属于所有虚拟机的包括所有空闲的机器内存块的空闲机器内存链表,该空闲机器内存链表的首地址保存在系统信息记录表中,每个机器内存块的前8个字节记录下个机器内存块的首地址;紧接着的8个字节记录本机器内存块的大小;最后一个机器内存块的前8个字节为NULL。
所述内存虚拟化部件根据所述物理内存分配请求中携带的所请求分配的物理内存的大小,利用所述空闲机器内存链给所述虚拟机分配连续或者间断的机器内存。具体的,该实施例提供的一种利用所述空闲机器内存链给虚拟机分配机器内存的方法的具体处理流程示意图如图3所示,主要包括:首先输入虚拟机所请求分配的物理内存的大小和空闲机器内存链的首地址,判断所述空闲机器内存链的首地址对应的空闲机器内存块的大小是否大于或者等于上述虚拟机所请求分配的物理内存的大小,如果是,在所述空闲机器内存链的首地址对应的空闲机器内存块中给所述虚拟机分配对应的机器内存,将剩余的机器内存插入到上述空闲机器内存链中;否则,继续遍历空闲机器内存链,选取上述首地址的下一个地址对应的下一个空闲机器内存块,继续判断所述下一个空闲机器内存块的大小是否大于或者等于上述虚拟机所请求分配的物理内存的大小,一直到查找到合适的空闲机器内存块。
进一步地,上述步骤222中的所述内存管理单元利用所述虚拟机的空闲机器内存链表给所述业务处理程序分配和所述物理内存同样大小的机器内存,可以包括:
在内存虚拟化部件中建立和管理针对每个虚拟机的空闲机器内存链,该空闲机器内存链的首地址保存在内存虚拟化部件的系统信息记录表中,每个机器内存块的前8个字节记录下个机器内存块的首地址;紧接着的8个字节记录本机器内存块的大小;最后一个机器内存块的前8个字节为NULL。
该实施例提供的一种利用虚拟机的空闲机器内存链给业务处理程序分配机器内存的方法的具体处理流程示意图如图4所示,主要包括:首先输入虚拟机的空闲机器内存链的首地址和给业务处理程序分配的物理内存的大小,判断所述空闲机器内存链的首地址对应的空闲机器内存块的大小是否大于或者等于上述物理内存的大小,如果是,在所述空闲机器内存链的首地址对应的空闲机器内存块中给所述业务处理程序分配对应的机器内存,将剩余的机器内存插入到上述空闲机器内存链中;否则,当没有到内存碎片处理的时间时,继续遍历空闲机器内存链,选取上述首地址的下一个地址对应的下一个空闲机器内存块,继续判断所述下一个空闲机器内存块的大小是否大于或者等于上述物理内存的大小,一直到查找到合适的空闲机器内存块。当到了内存碎片处理的时间时,采用临界值预测法,判断上述对应的虚拟机的机器内存中的机器内存的内存利用率超过某个设定的数值后,利用上述空闲机器内存链中的最后一个空闲机器内存块进行内存碎片整理。
进一步地,上述图2所示的内存管理方法的处理流程还可以包括:
在每个虚拟机上可以运行一个或者多个业务处理程序,当一个虚拟机上运行的部分业务处理程序停止或者退出后,需要将停止或者退出的业务处理程序所占用的机器内存回收到上述虚拟机对应的机器内存的空闲机器内存链中;当一个虚拟机上运行的所有业务处理程序都停止或者退出后,上述虚拟机也就停止了,需要将上述虚拟机所占用的机器内存回收。
该实施例提供的一种在业务处理程序停止或者退出后,将业务处理程序所占用的机器内存回收的方法的处理流程如图5所示,主要包括:在所述业务处理程序停止或者退出后,在所述业务处理程序停止或者退出后,所述内存管理单元接收所述虚拟机发送的分配给所述业务处理程序的物理内存,根据所述物理内存查询所述映射关系表获取机器内存,将所述机器内存回收,并将回收的机器内存插入到在所述虚拟机的空闲机器内存链表中。所述内存管理单元对所述业务处理程序所在的内核管理的虚拟内存和机器内存之间的映射关系表进行更新。
该实施例提供的一种内存虚拟化部件将虚拟机的机器内存回收的方法的处理流程如图6所示,主要包括:
当某个虚拟机被删除时,需要回收该虚拟机的机器内存。内存虚拟化部件将需要回收的机器内存块设置为空闲状态,并将上述需要回收的机器内存块插入到其管理的不属于所有虚拟机的空闲机器内存链中。然后,对上述空闲机器内存链进行相应的空闲内存块合并操作。
由上述本发明的实施例提供的技术方案可以看出,本发明实施例通过内存管理单元来给所有的业务处理程序分配物理内存,从而在每个虚拟机内部不需要完成两级内存映射,大大提高了业务处理程序使用中的内存映射、内存分配效率。
本发明实施例通过硬件来完成虚拟内存到物理内存、物理内存到机器内存的两级映射,提高了机器内存的分配效率。
本发明实施例通过在业务处理程序所在的内核中管理业务处理程序的虚拟内存和机器内存之间的映射关系表,从而使得业务处理程序在所在内核内不需要通过操作系统直接根据其管理的上述映射关系表来完成内存转换,不需要所在内核的操作系统另外维护页表,大大提高了业务处理程序使用中的内存映射效率。
实施例二
该实施例提供的一种内存管理方法的具体处理流程如图7所示,包括:
步骤71、虚拟机接收到本虚拟机上的业务处理程序发送的虚拟内存的分配请求,所述的虚拟机给所述业务处理程序分配和所述虚拟内存同样大小的物理内存。
业务处理程序在虚拟机中的某个内核中启动后,上述业务处理程序向上述虚拟机中的某个内核发送虚拟内存的分配请求,该分配请求中可以携带所请求分配的虚拟内存的大小信息,虚拟机接收到所述分配请求。
上述虚拟机中的虚拟机内存管理部件在所述内存管理单元分配给所述虚拟机的物理内存中,给所述业务处理程序分配和所述虚拟内存同样大小的物理内存;
上述虚拟机内存管理部件建立所有业务处理程序的虚拟内存和物理内存之间的映射关系表。
步骤72、所述虚拟机将所述虚拟内存的分配请求、所述物理内存、所述虚拟机的标识发送给所述内存管理单元。
在所述内存管理单元根据所述虚拟机的标识、所述物理内存查询其管理的针对所有虚拟机的物理内存和机器内存之间的映射关系表,给所述业务处理程序分配机器内存后,所述虚拟机将所述虚拟内存发送给所述业务处理程序。
进一步地,所述的方法还可以包括:所述虚拟机将所述业务处理程序所在的内核的标识发送给所述内存管理单元。
进一步地,所述的方法还可以包括:
在所述业务处理程序停止或者退出后,所述虚拟机接收所述业务处理程序所在的内核发送的所述业务处理程序释放的虚拟内存;
所述虚拟机将分配给所述业务处理程序的所述虚拟内存对应的物理内存回收,将所述物理内存的信息发送给所述内存管理单元。
实施例三
该实施例提供了一种内存管理单元,其具体结果如图8所示,包括:
信息接收模块81,用于接收虚拟机发送的虚拟内存的分配请求、物理内存和虚拟机的标识,所述虚拟内存的分配请求为虚拟机上的业务处理程序发送给所述虚拟机的,所述物理内存为所述虚拟机给所述业务处理程序分配的所述虚拟内存对应的物理内存;
机器内存分配模块82,用于根据所述信息接收模块所接收到的所述虚拟机的标识、所述物理内存查询其管理的针对所有虚拟机的物理内存和机器内存之间的映射关系表,给所述业务处理程序分配机器内存,以使得所述虚拟机将所述虚拟内存发送给所述业务处理程序。
进一步地,所述的信息接收模块81,还用于接收所述虚拟机发送的所述业务处理程序所在的内核的标识;
所述的机器内存分配模块82,还用于根据所述内核的标识查找到所述业务处理程序所在的内核,将分配给所述业务处理程序的虚拟内存和机器内存填入到所述业务处理程序所在的内核管理的虚拟内存和机器内存之间的映射关系表中。
进一步地,所述的内存管理单元还包括:
映射关系表管理模块83,用于当重新设置的虚拟机需要物理内存或者已经设置的虚拟机的物理内存不够时,接收所述虚拟机发送的物理内存的分配请求;
根据所述虚拟机请求的物理内存的大小,从内存管理单元的空闲机器内存链表中为所述虚拟机分配机器内存,确定所述机器内存对应的物理内存;
将分配给所述虚拟机的机器内存和物理内存,以及所述虚拟机的标识写入到针对所有虚拟机的物理内存和机器内存之间的映射关系表中,将分配给所述虚拟机的物理内存发送给所述虚拟机。
进一步地,所述的机器内存分配模块82,还用于根据所述虚拟机的标识查询所述映射关系表,获取所述虚拟机的机器内存和该机器内存中的空闲机器内存的大小;
当所述空闲机器内存的大小大于或者等于所述物理内存的大小,利用所述虚拟机的空闲机器内存链表给所述业务处理程序分配和所述物理内存同样大小的机器内存,并将分配的机器内存从所述虚拟机的空闲机器内存链中删除;将分配的机器内存与所述物理内存的对应关系写入到所述内存管理单元管理的所述映射关系表中;
当所述空闲机器内存的大小小于所述物理内存的大小,利用其维护的不属于所有虚拟机的空闲机器内存链表给所述业务处理程序分配和所述物理内存同样大小的机器内存,并将分配的机器内存从所述不属于所有虚拟机的空闲机器内存链中删除,将分配的机器内存加入到所述虚拟机的机器内存中;将分配的机器内存与所述物理内存的对应关系写入到所述内存管理单元管理的所述映射关系表中。
进一步地,所述的信息接收模块81,还用于在所述业务处理程序停止或者退出后,接收所述虚拟机发送的分配给所述业务处理程序的物理内存;
所述的机器内存分配模块82,还用于根据所述物理内存查询所述映射关系表获取机器内存,将所述机器内存回收,并将回收的机器内存插入到在所述虚拟机的空闲机器内存链表中;对所述业务处理程序所在的内核管理的虚拟内存和机器内存之间的映射关系表进行更新。
该实施例还提供了一种虚拟机,其具体结构如图9所示,包括:
内存分配模块91,用于接收本虚拟机上的业务处理程序发送的虚拟内存的分配请求,给所述业务处理程序分配所述虚拟内存对应的物理内存;
信息发送模块92,用于将所述虚拟内存的分配请求、所述物理内存、所述虚拟机的标识发送给内存管理单元;
所述的内存分配模块91,还用于在所述内存管理单元给所述业务处理程序分配机器内存后,所述虚拟机将所述虚拟内存发送给所述业务处理程序。
进一步地,所述的内存分配模块91,还用于在内存管理单元分配给所述虚拟机的物理内存中,给所述业务处理程序分配和所述虚拟内存同样大小的物理内存;在所述的虚拟机中建立所述业务处理程序的虚拟内存和物理内存之间的映射关系表。
进一步地,所述的内存分配模块91,还用于在所述业务处理程序停止或者退出后,接收所述业务处理程序所在的内核发送的所述业务处理程序释放的虚拟内存;将分配给所述业务处理程序的所述虚拟内存对应的物理内存回收;
所述的信息发送模块92,还用于将所述物理内存的信息发送给所述内存管理单元。
该实施例还提供了一种内存管理系统,其具体结构如图10所示,包括:
内存管理单元101,用于建立和管理针对所有虚拟机的物理内存和机器内存之间的映射关系表;
虚拟机102,用于接收本虚拟机上的业务处理程序发送的虚拟内存的分配请求,给所述业务处理程序分配所述虚拟内存对应的物理内存,将所述虚拟内存的分配请求、所述物理内存、所述虚拟机的标识发送给所述内存管理单元;
所述内存管理单元101,还用于根据所述虚拟机的标识、所述物理内存查询所述映射关系表,给所述业务处理程序分配机器内存。
上述内存管理单元的具体结构如图8所示,上述虚拟机的具体结构如图9所示。
应用本发明实施例的装置和系统进行内存管理的具体过程与前述方法实施例类似,此处不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
综上所述,本发明实施例通过指定虚拟机来给所有的业务处理程序分配机器内存,从而在每个虚拟机内部不需要完成两级内存映射,大大提高了业务处理程序的内存使用、内存分配效率。
本发明实施例通过硬件来完成虚拟内存到物理内存、物理内存到机器内存的两级映射,提高了机器内存的分配效率。
本发明实施例通过在业务处理程序所在的内核中管理业务处理程序的虚拟内存和机器内存之间的映射关系表,从而使得业务处理程序在所在内核内不需要通过操作系统直接根据其管理的上述映射关系表来完成内存转换,不需要所在内核的操作系统另外维护页表,大大提高了业务处理程序使用中的内存映射效率。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (18)
1.一种内存管理方法,其特征在于,包括:
内存管理单元接收虚拟机发送的虚拟内存的分配请求、物理内存和虚拟机的标识,所述虚拟内存的分配请求为虚拟机上的业务处理程序发送给所述虚拟机的,所述物理内存为所述虚拟机给所述业务处理程序分配的所述虚拟内存对应的物理内存;
所述内存管理单元根据所述虚拟机的标识、所述物理内存查询其管理的针对所有虚拟机的物理内存和机器内存之间的映射关系表,给所述业务处理程序分配机器内存,以使得所述虚拟机将所述虚拟内存发送给所述业务处理程序。
2.根据权利要求1所述的内存管理方法,其特征在于,所述的方法还包括:
所述内存管理单元接收所述虚拟机发送的所述业务处理程序所在的内核的标识,所述内存管理单元根据所述内核的标识查找到所述业务处理程序所在的内核,将分配给所述业务处理程序的虚拟内存和机器内存填入到所述业务处理程序所在的内核管理的虚拟内存和机器内存之间的映射关系表中。
3.根据权利要求1所述的内存管理方法,其特征在于,所述的方法还包括:
当重新设置的虚拟机需要物理内存或者已经设置的虚拟机的物理内存不够时,所述内存管理单元接收所述虚拟机发送的物理内存的分配请求;
所述内存管理单元根据所述虚拟机请求的物理内存的大小,从内存管理单元的空闲机器内存链表中为所述虚拟机分配机器内存,确定所述机器内存对应的物理内存;
所述内存管理单元将分配给所述虚拟机的机器内存和物理内存,以及所述虚拟机的标识写入到所述内存管理单元管理的所述映射关系表中,将分配给所述虚拟机的物理内存发送给所述虚拟机。
4.根据权利要求1或2或3所述的内存管理方法,其特征在于,所述内存管理单元根据所述虚拟机的标识、所述物理内存查询所述映射关系表,给所述业务处理程序分配机器内存,包括:
所述内存管理单元根据所述虚拟机的标识查询所述映射关系表,获取所述虚拟机的机器内存和该机器内存中的空闲机器内存的大小;
当所述空闲机器内存的大小大于或者等于所述物理内存的大小,所述内存管理单元利用所述虚拟机的空闲机器内存链表给所述业务处理程序分配和所述物理内存同样大小的机器内存,并将分配的机器内存从所述虚拟机的空闲机器内存链中删除;将分配的机器内存与所述物理内存的对应关系写入到所述内存管理单元管理的所述映射关系表中;
当所述空闲机器内存的大小小于所述物理内存的大小,所述内存管理单元利用其维护的不属于所有虚拟机的空闲机器内存链表给所述业务处理程序分配和所述物理内存同样大小的机器内存,并将分配的机器内存从所述不属于所有虚拟机的空闲机器内存链中删除,将分配的机器内存加入到所述虚拟机的机器内存中;将分配的机器内存与所述物理内存的对应关系写入到所述内存管理单元管理的所述映射关系表中。
5.根据权利要求2所述的内存管理方法,其特征在于,所述的方法还包括:
在所述业务处理程序停止或者退出后,所述内存管理单元接收所述虚拟机发送的分配给所述业务处理程序的物理内存,根据所述物理内存查询所述映射关系表获取机器内存,将所述机器内存回收,并将回收的机器内存插入到在所述虚拟机的空闲机器内存链表中;
所述内存管理单元对所述业务处理程序所在的内核管理的虚拟内存和机器内存之间的映射关系表进行更新。
6.一种内存管理方法,其特征在于,包括:
虚拟机接收到本虚拟机上的业务处理程序发送的虚拟内存的分配请求,所述虚拟机给所述业务处理程序分配所述虚拟内存对应的物理内存;
所述虚拟机将所述虚拟内存的分配请求、所述物理内存、所述虚拟机的标识发送给所述内存管理单元,在所述内存管理单元根据所述虚拟机的标识、所述物理内存查询其管理的针对所有虚拟机的物理内存和机器内存之间的映射关系表,给所述业务处理程序分配机器内存后,所述虚拟机将所述虚拟内存发送给所述业务处理程序。
7.根据权利要求6所述的内存管理方法,其特征在于,所述的方法还包括:
所述虚拟机将所述业务处理程序所在的内核的标识发送给所述内存管理单元。
8.根据权利要求6所述的内存管理方法,其特征在于,所述的虚拟机给所述业务处理程序分配所述虚拟内存对应的物理内存,包括:
所述的虚拟机在所述内存管理单元分配给所述虚拟机的物理内存中,给所述业务处理程序分配和所述虚拟内存同样大小的物理内存;
在所述的虚拟机中建立所述业务处理程序的虚拟内存和物理内存之间的映射关系表。
9.根据权利要求6或7或8所述的内存管理方法,其特征在于,所述的方法还包括:
在所述业务处理程序停止或者退出后,所述虚拟机接收所述业务处理程序所在的内核发送的所述业务处理程序释放的虚拟内存;
所述虚拟机将分配给所述业务处理程序的所述虚拟内存对应的物理内存回收,将所述物理内存的信息发送给所述内存管理单元。
10.一种内存管理单元,其特征在于,包括:
信息接收模块,用于接收虚拟机发送的虚拟内存的分配请求、物理内存和虚拟机的标识,所述虚拟内存的分配请求为虚拟机上的业务处理程序发送给所述虚拟机的,所述物理内存为所述虚拟机给所述业务处理程序分配的所述虚拟内存对应的物理内存;
机器内存分配模块,用于根据所述信息接收模块所接收到的所述虚拟机的标识、所述物理内存查询其管理的针对所有虚拟机的物理内存和机器内存之间的映射关系表,给所述业务处理程序分配机器内存,以使得所述虚拟机将所述虚拟内存发送给所述业务处理程序。
11.根据权利要求10所述的内存管理单元,其特征在于:
所述的信息接收模块,还用于接收所述虚拟机发送的所述业务处理程序所在的内核的标识;
所述的机器内存分配模块,还用于根据所述内核的标识查找到所述业务处理程序所在的内核,将分配给所述业务处理程序的虚拟内存和机器内存填入到所述业务处理程序所在的内核管理的虚拟内存和机器内存之间的映射关系表中。
12.根据权利要求10所述的内存管理单元,其特征在于,还包括:
映射关系表管理模块,用于当重新设置的虚拟机需要物理内存或者已经设置的虚拟机的物理内存不够时,接收所述虚拟机发送的物理内存的分配请求;
根据所述虚拟机请求的物理内存的大小,从内存管理单元的空闲机器内存链表中为所述虚拟机分配机器内存,确定所述机器内存对应的物理内存;
将分配给所述虚拟机的机器内存和物理内存,以及所述虚拟机的标识写入到针对所有虚拟机的物理内存和机器内存之间的映射关系表中,将分配给所述虚拟机的物理内存发送给所述虚拟机。
13.根据权利要求9或10或11或12所述的内存管理单元,其特征在于:
所述的机器内存分配模块,还用于根据所述虚拟机的标识查询所述映射关系表,获取所述虚拟机的机器内存和该机器内存中的空闲机器内存的大小;
当所述空闲机器内存的大小大于或者等于所述物理内存的大小,利用所述虚拟机的空闲机器内存链表给所述业务处理程序分配和所述物理内存同样大小的机器内存,并将分配的机器内存从所述虚拟机的空闲机器内存链中删除;将分配的机器内存与所述物理内存的对应关系写入到所述内存管理单元管理的所述映射关系表中;
当所述空闲机器内存的大小小于所述物理内存的大小,利用其维护的不属于所有虚拟机的空闲机器内存链表给所述业务处理程序分配和所述物理内存同样大小的机器内存,并将分配的机器内存从所述不属于所有虚拟机的空闲机器内存链中删除,将分配的机器内存加入到所述虚拟机的机器内存中;将分配的机器内存与所述物理内存的对应关系写入到所述内存管理单元管理的所述映射关系表中。
14.根据权利要求11所述的内存管理单元,其特征在于:
所述的信息接收模块,还用于在所述业务处理程序停止或者退出后,接收所述虚拟机发送的分配给所述业务处理程序的物理内存;
所述的机器内存分配模块,还用于根据所述物理内存查询所述映射关系表获取机器内存,将所述机器内存回收,并将回收的机器内存插入到在所述虚拟机的空闲机器内存链表中;对所述业务处理程序所在的内核管理的虚拟内存和机器内存之间的映射关系表进行更新。
15.一种虚拟机,其特征在于,包括:
内存分配模块,用于接收本虚拟机上的业务处理程序发送的虚拟内存的分配请求,给所述业务处理程序分配所述虚拟内存对应的物理内存;
信息发送模块,用于将所述虚拟内存的分配请求、所述物理内存、所述虚拟机的标识发送给内存管理单元;
所述的内存分配模块,还用于在所述内存管理单元给所述业务处理程序分配机器内存后,所述虚拟机将所述虚拟内存发送给所述业务处理程序。
16.根据权利要求15所述的虚拟机,其特征在于:
所述的内存分配模块,还用于在内存管理单元分配给所述虚拟机的物理内存中,给所述业务处理程序分配和所述虚拟内存同样大小的物理内存;在所述的虚拟机中建立所述业务处理程序的虚拟内存和物理内存之间的映射关系表。
17.根据权利要求15或16所述的虚拟机,其特征在于:
所述的内存分配模块,还用于在所述业务处理程序停止或者退出后,接收所述业务处理程序所在的内核发送的所述业务处理程序释放的虚拟内存;将分配给所述业务处理程序的所述虚拟内存对应的物理内存回收;
所述的信息发送模块,还用于将所述物理内存的信息发送给所述内存管理单元。
18.一种内存管理系统,其特征在于,包括如权利要求9至14任一项所述的内存管理单元和如权利要求15至17任一项所述的虚拟机。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110246894.9A CN102306126B (zh) | 2011-08-24 | 2011-08-24 | 内存管理方法、装置和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110246894.9A CN102306126B (zh) | 2011-08-24 | 2011-08-24 | 内存管理方法、装置和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102306126A true CN102306126A (zh) | 2012-01-04 |
CN102306126B CN102306126B (zh) | 2014-06-04 |
Family
ID=45379991
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110246894.9A Expired - Fee Related CN102306126B (zh) | 2011-08-24 | 2011-08-24 | 内存管理方法、装置和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102306126B (zh) |
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102662726A (zh) * | 2012-04-01 | 2012-09-12 | 龙芯中科技术有限公司 | 虚拟机的模拟方法和计算机设备 |
CN103152270A (zh) * | 2013-03-11 | 2013-06-12 | 华为技术有限公司 | 转发报文的方法及路由器 |
CN103309698A (zh) * | 2012-03-16 | 2013-09-18 | 鸿富锦精密工业(深圳)有限公司 | 虚拟机内存管理系统及方法 |
CN103870333A (zh) * | 2012-12-17 | 2014-06-18 | 华为技术有限公司 | 一种全局内存共享方法、装置和一种通信系统 |
CN104081349A (zh) * | 2012-01-27 | 2014-10-01 | 大陆汽车有限责任公司 | 用于为专门提供给虚拟机的主操作系统内核提供大容量存储介质的多个限定区域作为独立的大容量存储器的内存控制器 |
CN104468307A (zh) * | 2014-10-27 | 2015-03-25 | 中国运载火箭技术研究院 | 一种基于虚拟机的实时通信系统 |
CN104516830A (zh) * | 2013-09-26 | 2015-04-15 | 凯为公司 | 多阶段地址转换中的转换旁路 |
CN104536905A (zh) * | 2015-01-14 | 2015-04-22 | 浪潮(北京)电子信息产业有限公司 | 一种内存管理方法及系统 |
CN104750557A (zh) * | 2013-12-27 | 2015-07-01 | 华为技术有限公司 | 一种内存管理方法和内存管理装置 |
CN105677485A (zh) * | 2016-01-08 | 2016-06-15 | 中电科华云信息技术有限公司 | 云桌面主机和虚拟机的内存动态调整方法 |
WO2016201589A1 (en) * | 2015-06-17 | 2016-12-22 | Intel Corporation | Computing apparatus and method with persistent memory |
CN106445628A (zh) * | 2015-08-11 | 2017-02-22 | 华为技术有限公司 | 一种虚拟化方法、装置和系统 |
CN106874121A (zh) * | 2017-03-01 | 2017-06-20 | 郑州云海信息技术有限公司 | 一种虚拟机内存回收方法及装置 |
WO2018041075A1 (zh) * | 2016-08-31 | 2018-03-08 | 华为技术有限公司 | 一种应用于计算机的资源访问方法和计算机 |
CN107783812A (zh) * | 2016-08-24 | 2018-03-09 | 阿里巴巴集团控股有限公司 | 虚拟机内存管理方法及装置 |
CN107851067A (zh) * | 2015-08-14 | 2018-03-27 | 高通股份有限公司 | 存储器间隙的有效利用 |
US10042778B2 (en) | 2013-09-26 | 2018-08-07 | Cavium, Inc. | Collapsed address translation with multiple page sizes |
CN108595270A (zh) * | 2018-04-27 | 2018-09-28 | 新华三信息安全技术有限公司 | 一种内存资源的回收方法及装置 |
CN109597677A (zh) * | 2018-12-07 | 2019-04-09 | 北京百度网讯科技有限公司 | 用于处理信息的方法和装置 |
CN109739613A (zh) * | 2018-11-22 | 2019-05-10 | 海光信息技术有限公司 | 嵌套页表的维护方法、访问控制方法及相关装置 |
CN109783220A (zh) * | 2017-11-10 | 2019-05-21 | 上海寒武纪信息科技有限公司 | 内存分配方法、装置、计算机系统及存储介质 |
CN111338796A (zh) * | 2020-02-18 | 2020-06-26 | 广州虎牙科技有限公司 | 应用内存优化方法、装置、终端设备及可读存储介质 |
CN112817756A (zh) * | 2021-01-25 | 2021-05-18 | 上海壁仞智能科技有限公司 | 计算机可读取存储介质、内存管理单元的虚拟化方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1673979A (zh) * | 2004-03-24 | 2005-09-28 | 华为技术有限公司 | 一种内存分配方法 |
US20100274947A1 (en) * | 2009-04-27 | 2010-10-28 | Hitachi, Ltd. | Memory management method, memory management program, and memory management device |
CN102096594A (zh) * | 2009-12-14 | 2011-06-15 | 联想(北京)有限公司 | 使用内存中系统资源的方法、虚拟机管理器及计算机 |
-
2011
- 2011-08-24 CN CN201110246894.9A patent/CN102306126B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1673979A (zh) * | 2004-03-24 | 2005-09-28 | 华为技术有限公司 | 一种内存分配方法 |
US20100274947A1 (en) * | 2009-04-27 | 2010-10-28 | Hitachi, Ltd. | Memory management method, memory management program, and memory management device |
CN102096594A (zh) * | 2009-12-14 | 2011-06-15 | 联想(北京)有限公司 | 使用内存中系统资源的方法、虚拟机管理器及计算机 |
Cited By (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104081349A (zh) * | 2012-01-27 | 2014-10-01 | 大陆汽车有限责任公司 | 用于为专门提供给虚拟机的主操作系统内核提供大容量存储介质的多个限定区域作为独立的大容量存储器的内存控制器 |
US10055361B2 (en) | 2012-01-27 | 2018-08-21 | Continental Automotive Gmbh | Memory controller for providing a plurality of defined areas of a mass storage medium as independent mass memories to a master operating system core for exclusive provision to virtual machines |
CN103309698A (zh) * | 2012-03-16 | 2013-09-18 | 鸿富锦精密工业(深圳)有限公司 | 虚拟机内存管理系统及方法 |
CN102662726B (zh) * | 2012-04-01 | 2015-07-29 | 龙芯中科技术有限公司 | 虚拟机的模拟方法和计算机设备 |
CN102662726A (zh) * | 2012-04-01 | 2012-09-12 | 龙芯中科技术有限公司 | 虚拟机的模拟方法和计算机设备 |
CN103870333A (zh) * | 2012-12-17 | 2014-06-18 | 华为技术有限公司 | 一种全局内存共享方法、装置和一种通信系统 |
CN103870333B (zh) * | 2012-12-17 | 2017-08-29 | 华为技术有限公司 | 一种全局内存共享方法、装置和一种通信系统 |
US9652150B2 (en) | 2012-12-17 | 2017-05-16 | Huawei Technologies Co., Ltd. | Global memory sharing method and apparatus, and communications system |
WO2014094472A1 (zh) * | 2012-12-17 | 2014-06-26 | 华为技术有限公司 | 一种全局内存共享方法、装置和一种通信系统 |
CN103152270B (zh) * | 2013-03-11 | 2016-06-08 | 华为技术有限公司 | 转发报文的方法及路由器 |
CN103152270A (zh) * | 2013-03-11 | 2013-06-12 | 华为技术有限公司 | 转发报文的方法及路由器 |
CN104516830A (zh) * | 2013-09-26 | 2015-04-15 | 凯为公司 | 多阶段地址转换中的转换旁路 |
CN104516830B (zh) * | 2013-09-26 | 2018-06-08 | 凯为公司 | 多阶段地址转换中的转换旁路 |
US10042778B2 (en) | 2013-09-26 | 2018-08-07 | Cavium, Inc. | Collapsed address translation with multiple page sizes |
CN104750557B (zh) * | 2013-12-27 | 2018-07-03 | 华为技术有限公司 | 一种内存管理方法和内存管理装置 |
CN104750557A (zh) * | 2013-12-27 | 2015-07-01 | 华为技术有限公司 | 一种内存管理方法和内存管理装置 |
CN104468307B (zh) * | 2014-10-27 | 2017-08-29 | 中国运载火箭技术研究院 | 一种基于虚拟机的实时通信系统 |
CN104468307A (zh) * | 2014-10-27 | 2015-03-25 | 中国运载火箭技术研究院 | 一种基于虚拟机的实时通信系统 |
CN104536905A (zh) * | 2015-01-14 | 2015-04-22 | 浪潮(北京)电子信息产业有限公司 | 一种内存管理方法及系统 |
CN104536905B (zh) * | 2015-01-14 | 2018-02-02 | 浪潮(北京)电子信息产业有限公司 | 一种内存管理方法及系统 |
WO2016201589A1 (en) * | 2015-06-17 | 2016-12-22 | Intel Corporation | Computing apparatus and method with persistent memory |
US10521354B2 (en) | 2015-06-17 | 2019-12-31 | Intel Corporation | Computing apparatus and method with persistent memory |
CN106445628A (zh) * | 2015-08-11 | 2017-02-22 | 华为技术有限公司 | 一种虚拟化方法、装置和系统 |
CN107851067A (zh) * | 2015-08-14 | 2018-03-27 | 高通股份有限公司 | 存储器间隙的有效利用 |
CN105677485B (zh) * | 2016-01-08 | 2018-12-18 | 中电科华云信息技术有限公司 | 云桌面主机和虚拟机的内存动态调整方法 |
CN105677485A (zh) * | 2016-01-08 | 2016-06-15 | 中电科华云信息技术有限公司 | 云桌面主机和虚拟机的内存动态调整方法 |
CN107783812A (zh) * | 2016-08-24 | 2018-03-09 | 阿里巴巴集团控股有限公司 | 虚拟机内存管理方法及装置 |
CN107783812B (zh) * | 2016-08-24 | 2022-03-08 | 阿里巴巴集团控股有限公司 | 虚拟机内存管理方法及装置 |
WO2018041075A1 (zh) * | 2016-08-31 | 2018-03-08 | 华为技术有限公司 | 一种应用于计算机的资源访问方法和计算机 |
US10970104B2 (en) | 2016-08-31 | 2021-04-06 | Huawei Technologies Co., Ltd. | Resource access method applied to computer and computer |
CN106874121A (zh) * | 2017-03-01 | 2017-06-20 | 郑州云海信息技术有限公司 | 一种虚拟机内存回收方法及装置 |
CN109783220A (zh) * | 2017-11-10 | 2019-05-21 | 上海寒武纪信息科技有限公司 | 内存分配方法、装置、计算机系统及存储介质 |
CN109783220B (zh) * | 2017-11-10 | 2020-12-11 | 安徽寒武纪信息科技有限公司 | 内存分配方法、装置、计算机系统及存储介质 |
CN108595270A (zh) * | 2018-04-27 | 2018-09-28 | 新华三信息安全技术有限公司 | 一种内存资源的回收方法及装置 |
CN109739613A (zh) * | 2018-11-22 | 2019-05-10 | 海光信息技术有限公司 | 嵌套页表的维护方法、访问控制方法及相关装置 |
CN109739613B (zh) * | 2018-11-22 | 2021-08-13 | 海光信息技术股份有限公司 | 嵌套页表的维护方法、访问控制方法及相关装置 |
CN109597677A (zh) * | 2018-12-07 | 2019-04-09 | 北京百度网讯科技有限公司 | 用于处理信息的方法和装置 |
CN109597677B (zh) * | 2018-12-07 | 2020-05-22 | 北京百度网讯科技有限公司 | 用于处理信息的方法和装置 |
CN111338796A (zh) * | 2020-02-18 | 2020-06-26 | 广州虎牙科技有限公司 | 应用内存优化方法、装置、终端设备及可读存储介质 |
CN112817756A (zh) * | 2021-01-25 | 2021-05-18 | 上海壁仞智能科技有限公司 | 计算机可读取存储介质、内存管理单元的虚拟化方法和装置 |
CN112817756B (zh) * | 2021-01-25 | 2022-05-27 | 上海壁仞智能科技有限公司 | 计算机可读取存储介质、内存管理单元的虚拟化方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN102306126B (zh) | 2014-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102306126B (zh) | 内存管理方法、装置和系统 | |
US9183036B2 (en) | Virtual machine migration with swap pages | |
US20110246742A1 (en) | Memory pooling in segmented memory architecture | |
CN101221536B (zh) | 嵌入式系统的内存管理方法及装置 | |
CN100578456C (zh) | 信息处理装置、进程控制方法 | |
US7356655B2 (en) | Methods, systems, and media for managing dynamic storage | |
KR101401523B1 (ko) | 복수의 가상 머신들 간 조립 공유 gpu 스케줄링 방법 및 장치 | |
CN106445628A (zh) | 一种虚拟化方法、装置和系统 | |
CN105095094A (zh) | 内存管理方法和设备 | |
US10310974B2 (en) | Systems and methods for input/output computing resource control | |
CA2566681A1 (en) | Dynamic memory management of unallocated memory in a legal partitioned data processing system | |
CN102521054B (zh) | 一种sun4v架构下的虚拟机DMA资源分配方法 | |
KR102077149B1 (ko) | 메모리 관리 방법 및 장치 | |
US20120317390A1 (en) | Firmware management of storage class memory | |
CN101859279A (zh) | 一种内存分配、释放方法及装置 | |
CN107924289A (zh) | 计算机系统和访问控制方法 | |
US20140129797A1 (en) | Configurable i/o address translation data structure | |
US11675615B2 (en) | Zero copy message reception for applications | |
US20110125812A1 (en) | Managing Memory | |
US20170123735A1 (en) | Reducing page invalidation broadcasts | |
US20150220452A1 (en) | System, Method and Computer-Readable Medium for Dynamically Mapping a Non-Volatile Memory Store | |
CN104317734A (zh) | 一种适用于slab的内存分配方法及装置 | |
US7797508B2 (en) | Fair memory resource control for mapped memory | |
CN107003880A (zh) | 内核更新方法和装置、计算机设备 | |
US20220229774A1 (en) | Just-in-time virtual per-vm swap space |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140604 Termination date: 20190824 |