一种扩展进程中内存地址控制的方法_3

文档序号:8257833阅读:来源:国知局
2]2.业务逻辑将{ 1,50K, 50K}这个读取请求发送给“主分配器模块”。({内存ID,偏移值,读取大小})
3.“主分配器模块”在“内存-进程映射表”中搜索ID=I的内存。得到扩展进程ID=I这样一个结果。
[0063]4.“主分配器模块”通过管道将{1,50K,50K}发送给ID=I的扩展进程的次分配器。
[0064]5.扩展进程中的“次分配器模块”在“内存区域映射模块”中查找内存ID=I的内存的具体区域信息。得到{500,100Κ}这么一个信息。(即内存存储在扩展进程中地址=500大小=10K的位置中) 6.将读取扩展进程中以500+50K为地址。50K为大小的这么一个区块。(即读取扩展进程中实际地址为“地址+偏移值”大小为“读取大小”的内存块)
7.“次分配器模块”将读取到的内容,通过管道主进程的“主分配器模块”。
[0065]8.“主分配器模块”将传回的内容传给业务逻辑。完成读取。
[0066]内存释放的过程如下(可参考图5所示):
1.当业务逻辑不再需要使用ID=I的这块内存时,其可以触发内存释放过程。
[0067]2.将所需要释放的内存ID=I发送给“主分配器模块”。
[0068]3.“主分配器模块”在“内存-进程映射表”中查找ID=I的内存块对应的扩展进程ID。得到扩展进程ID=I。
[0069]4.“主分配器模块”将内存ID=I发送给ID=I的扩展进程的“次分配器模块”。
[0070]5.扩展进程中的“次分配器模块”在“内存区域映射模块”中查找内存ID=I的内存的具体区域信息。得到{500,100K}这么一个信息。
[0071]6.“次分配器模块”释放地址=500,大小=100K的这个内存块。
[0072]7.“次分配器模块”删除“内存-区域映射模块”内存ID=I对应的信息。
[0073]8.“主分配器模块”删除“内存-进程映射模块”内存ID=I对应的信息。
[0074]以上所述,只是本发明的较佳实施例而已,本发明并不局限于上述实施方式,只要其以相同的手段达到本发明的技术效果,都应属于本发明的保护范围。
【主权项】
1.一种扩展进程中内存地址控制的方法,其特征在于:包括主进程和由主进程创建的一个或以上的扩展进程,所述主进程包括原程序业务组件和第一扩展内存地址空间组件,所述第一扩展内存地址空间组件包括内存-进程映射模块和主分配器模块,所述扩展进程包括第二扩展内存地址空间组件和所扩展的内存地址空间,所述第二扩展内存地址空间组件包括内存-区块映射模块和次分配器模块,所述扩展进程通过扩展进程ID号唯一进行识另U,内存地址空间内的内存通过内存ID号进行识别,每一段独立的内存对应一个独立的内存ID号,所述主分配器模块根据内存-进程映射模块维护内存ID与扩展进程ID的关系,所述次分配器模块通过内存-区块映射模块维护内存ID及其对应的内存区块的关系。
2.根据权利要求1所述的一种扩展进程中内存地址控制的方法,其特征在于:主进程中的内存-进程映射模块中维护了一个内存ID到扩展进程ID的映射表,其输入为内存ID,其输出为扩展进程的ID。
3.根据权利要求2所述的一种扩展进程中内存地址控制的方法,其特征在于:扩展进程中的内存-区块映射模块中维护了一个内存ID到区块的映射表,其输入为内存ID,其输出为区块信息,一个区块信息由地址、大小这样一个二元组组成,所述区块为内存ID对应的内存在本进程中地址空间的位置。
4.根据权利要求3所述的一种扩展进程中内存地址控制的方法,其特征在于:主进程中的主分配器模块以管道方式与扩展进程中的次分配器模块通讯,主分配器模块和次分配器模块配合完成内存分配、内存释放、内存读取、内存写入4个不同功能的操作。
5.根据权利要求4所述的一种扩展进程中内存地址控制的方法,其特征在于:内存分配的步骤为,主分配器模块接受业务逻辑发送过来的内存分配请求,并将请求的内存大小逐一发给各个扩展进程中的次分配器模块,若扩展进程可以分配出内存,则主分配器模块将内存ID,扩展进程ID的对应关系记录到内存-进程映射表中,若所有扩展进程都无法分配出内存,则主分配器模块将启动一个全新的扩展进程,并将分配请求传给这个全新的扩展进程的次分配器;接到主分配器发送过来的内存分配请求后:扩展进程中的次分配器模块如果可以分配出足量的内存,则会给这个内存块分配一个系统中的全局ID值,同时将内存ID、地址、大小记录到本扩展进程的内存-区块映射模块中,最后将内存ID传回给主分配器模块,若扩展进程中的次分配器模块无法分配出足量的内存,则会返回一个分配失败的返回值给主分配器模块。
6.根据权利要求4所述的一种扩展进程中内存地址控制的方法,其特征在于:内存释放的步骤为:业务逻辑将需要释放的内存ID发给主分配器模块,主分配器模块在内存-进程映射表中查找得到内存ID对应的扩展进程,主分配器模块将内存ID发送给扩展进程ID所对应的次分配器模块,次分配器模块在内存-区块映射模块中查找内存ID所对应的具体区块,即地址、大小这个二元组,删除地址所对应的扩展内存地址空间的内存块,并在内存-区域映射模块中删除内存ID及其所对应的区块信息。
7.根据权利要求4所述的一种扩展进程中内存地址控制的方法,其特征在于:内存读取的步骤为:业务逻辑将需要读取的内存、偏移值、读取大小发给主分配器模块,主分配器模块在内存-进程映射表中查找得到内存ID对应的扩展进程ID,主分配器模块将内存ID、偏移值、读取大小发送给扩展进程ID所对应的次分配器模块,次分配器模块在内存-区块映射模块中查找内存ID所对应的具体区块,即地址、大小这个二元组,次分配器模块将读取扩展进程中实际地址为地址+偏移值大小为读取大小的内存块返回给主分配器模块,主分配器模块将所读取的内存传回给业务逻辑,完成读取。
8.根据权利要求4所述的一种扩展进程中内存地址控制的方法,其特征在于:内存写入的步骤为:业务逻辑将需要写入的内存ID、偏移值、写入数据发给主分配器模块,主分配器模块在内存-进程映射表中查找得到内存ID对应的扩展进程ID,主分配器模块将内存ID、偏移值、写入数据发送给扩展进程ID所对应的次分配器模块,次分配器模块在内存-区块映射模块中查找内存ID所对应的具体区块,即地址、大小这个二元组,次分配器模块将写入数据写入到扩展进程中实际地址为地址+偏移值的内存,完成写入。
【专利摘要】本发明公开了一种扩展进程中内存地址控制的方法,主进程通过主分配器模块创建多个扩展进程,并由扩展进程中的次分配器模块分配实际的内存。所有内存不通过内存地址标识,而是通过一个全局唯一的内存ID标识。本发明在无需升级机器硬件和系统的前提下,仅通过改进软件即可充分的利用电脑的物理内存。且本方法通过扩展进程方式实现,使得单个进程所使用的物理内存总量没有上限。即便是在64位系统中,运用此方法的系统仍然可以正常运行。即通过此方法扩展内存不会产生兼容性问题。同时此方法的系统也能扩展64位系统的内存最大使用量。
【IPC分类】G06F3-06, G06F12-08
【公开号】CN104571953
【申请号】CN201410830319
【发明人】李翔威, 刘畅, 谭贤亮, 梁波
【申请人】珠海金山网络游戏科技有限公司, 成都西山居互动娱乐科技有限公司
【公开日】2015年4月29日
【申请日】2014年12月25日
当前第3页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1