[发明专利]面向实时系统的内存算法有效
申请号: | 201210263549.0 | 申请日: | 2012-07-28 |
公开(公告)号: | CN102880555A | 公开(公告)日: | 2013-01-16 |
发明(设计)人: | 吴英杰;王一蕾;夏李波;唐文斌;许孝盛 | 申请(专利权)人: | 福州大学 |
主分类号: | G06F12/06 | 分类号: | G06F12/06 |
代理公司: | 福州元创专利商标代理有限公司 35100 | 代理人: | 蔡学俊 |
地址: | 350108 福建省福州市*** | 国省代码: | 福建;35 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 面向 实时 系统 内存 算法 | ||
1.一种面向实时系统的内存算法,其特征在于:采用红黑树数据结构用于快速查找所需的内存块;该算法定义以下四类红黑树:
占用红黑树 :用于存放被占用的内存块信息,同时将该内存块的内存ID作为比较规则,当程序释放内存时迅速根据内存ID定位到该内存块,释放内存;
空闲红黑树数组:定义到共18棵红黑树,分别对应内存大小标记为1,2,3,4,6,…,,,…,512单位的内存块,每组红黑树以地址为比较规则,存放大小大于等于该组标记但小于下一组标记的内存块信息;
向后合并红黑树:用于在内存回收过程中快速查找到能与释放内存块向后合并的内存块;当有内存释放时,将与释放内存块相邻的下一内存块的首地址作为比较规则,迅速查找出可合并块,并定位到空闲红黑树数组的相应位置进行相关内存合并操作;
向前合并红黑树:用于在内存回收过程中快速查找到能与释放内存块向前合并的内存块;当有内存释放时,将与释放内存块相邻的上一内存块的尾地址作为比较规则,迅速查找出可合并块,并定位到空闲红黑树数组的相应位置进行相关内存合并操作;
当有一个大小为d的内存申请时,按如下方法进行内存分配:
步骤1.1:通过查询的大小域,定位到第一个满足需求d的组,即;从k链表开始,为后面的每一个链表的统计值加1,表明从k链表开始的所有后续链表里的内存块都有能力提供需求为d的内存;由于及后面各组红黑树内的任意一个内存块均大于等于d,可选取该列表中的第一块内存;如果的链表为空,则该内存区间不存在空闲的内存块,继续向后面的红黑树寻找直至找到存在空闲块的组,获取该组的第一块;如果后续组别中均不存在空闲块,返回第一个满足需求d的组的前一个组,该组里的内存块大小在区间内,可能存在满足需求的块;
步骤1.2:获取满足需求的空闲内存块,如果的大小刚好满足需求d,即,该块将被完全占用;如果的大小超出需求d,则判断是否需要分割,如果被分割,将产生大小为的剩余块,判断剩余块大小是否小于限定值,是则将直接完全分配而不做分割,否则将分割,插入相应的空闲组中;
步骤1.3:维护相关红黑树:将满足需求的空闲内存块从、、中删除,并加入;如果有剩余块产生,根据剩余块的大小,加入相应的组内,同时以的首尾地址为比较规则,分别加入和;
当有一个ID为id、大小为d的内存块需要释放时,按如下方法进行内存释放:
步骤2.1:在中查询ID为id的内存块,根据该块的首地址和末尾地址查询和,判断是否存在可与合并的向前合并块、向后合并块或其中之一,如果存在,将合并为新的大内存块,然后插入相关红黑树,如果不存在,则直接将插入相关红黑树;
步骤2.2:更新红黑树:将从中删除;如果存在和或其中之一,将、或其中之一从相应、、中删除,并将合并后的新的大内存块加入相应的、、,如果不存在,则直接将加入相应的、、。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于福州大学,未经福州大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210263549.0/1.html,转载请声明来源钻瓜专利网。
- 上一篇:大环内酯合成方法
- 下一篇:一种茚烯类化合物及其制备方法