[发明专利]在Linux上模拟实现Windows堆管理的方法有效
| 申请号: | 201310003729.X | 申请日: | 2013-01-06 |
| 公开(公告)号: | CN103077076A | 公开(公告)日: | 2013-05-01 |
| 发明(设计)人: | 李睿;杨南君;吕江花;马世龙 | 申请(专利权)人: | 北京航空航天大学 |
| 主分类号: | G06F9/46 | 分类号: | G06F9/46 |
| 代理公司: | 北京永创新实专利事务所 11121 | 代理人: | 周长琪 |
| 地址: | 100191*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | 本发明为一种在Linux上模拟实现Windows堆管理的方法,应用程序初始化时,使用brk命令从Linux虚拟地址中开辟出一块连续空间用作类Windows虚存管理,然后构建数据结构,将应用程序的Windows操作行为转化为Linux操作的表达形式,在Linux上,不可增长堆和可增长堆通过将内存块以链表连接方式来模拟实现,不可增长堆要保留最大大小的空间。本发明方法在Linux上实现了堆的固定地址再分配功能,在不修改Linux内核的情况下,在Linux上重新构建Windows的内存管理机制,实现虚存管理和堆管理,以便使得Windows应用程序可以无缝迁移至Linux操作系统上运行。 | ||
| 搜索关键词: | linux 模拟 实现 windows 管理 方法 | ||
【主权项】:
一种在Linux上模拟实现Windows堆管理的方法,其特征在于,包括如下步骤:步骤一:应用程序初始化时,使用brk命令从Linux虚拟地址中开辟出一块大小为dwSize的连续空间,用作类Windows虚存管理,并记录该空间的起始地址,设置从起始地址开始每页的状态、每页的访问权限以及锁定状态;步骤二:构建数据结构,将应用程序的Windows操作行为转化为Linux操作的表达形式;步骤三:对于堆操作,判断堆的类型,若为不可增长堆,转入步骤四;若为可增长堆,转入步骤五;Linux上不可增长堆和可增长堆通过将内存块以链表连接方式来模拟实现;步骤四:堆保留最大大小的空间,提交初始大小的空间进行分配,当初始大小的空间消耗完时,转入步骤六;步骤五:堆提交初始大小的空间进行分配,当初始大小的空间消耗完时,转入步骤七;步骤六:堆从保留的空间中继续提交一段页面来满足分配需求,直到所保留的空间不能满足分配需求为止;步骤七:系统通过VirtualAlloc()另辟新的空间来满足分配需求,直到系统内存不能满足分配需求为止;步骤四和步骤五中进行空间按分配时,在Linux上实现了堆的固定地址再分配,步骤是:步骤11:获取指定的内存块的起始地址,标记该内存块为a1;步骤12:判断内存块a1是否满足再分配所需空间的大小,若不满足,转入步骤13;否则,转入步骤15;步骤13:在堆中寻找空闲块,当寻找到一个空闲块时,进行步骤14;步骤14:判断寻找到的所有空闲块与内存块a1的大小之和是否满足再分配所需空间的大小,若不满足,转入步骤13,继续寻找下一个空闲块;若满足,转入步骤15;步骤15:合并内存块a1与所有寻找到的空闲块;步骤16:分割出用于再分配的内存块,所分割的内存块的起始地址为内存块a1的起始地址。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京航空航天大学,未经北京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201310003729.X/,转载请声明来源钻瓜专利网。
- 上一篇:灭菌装置及灭菌方法
- 下一篇:低滑动率渐变压力角齿轮及设计方法





