[发明专利]堆空间的内存分配管理系统及嵌入式芯片在审
申请号: | 201510903818.9 | 申请日: | 2015-12-09 |
公开(公告)号: | CN106855845A | 公开(公告)日: | 2017-06-16 |
发明(设计)人: | 宋春光 | 申请(专利权)人: | 北京信威通信技术股份有限公司 |
主分类号: | G06F12/02 | 分类号: | G06F12/02 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 100193 北京市海淀区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 空间 内存 分配 管理 系统 嵌入式 芯片 | ||
1.一种堆空间的内存分配管理系统,其特征在于,包括:
堆空间创建单元,用于创建堆空间;
内存池创建单元,用于根据应用配置的至少一个典型长度和各典型长度的数据块数量在所述堆空间内创建内存池,所述内存池中为带有对应数据块数量的所述至少一个典型长度内存空间的节点和各所述典型长度的链表集,所述内存池中各节点的节点头压入所述典型长度对应的链表集;
动静态属性单元,用于根据应用配置的静态或动态属性确定所述节点的静态或动态属性,所述内存池的链表集包括正在使用动态节点链表、正在使用静态节点链表和已经释放动态节点链表。
2.如权利要求1所述的系统,其特征在于,所述堆空间创建单元,具体用于:若应用配置的堆空间信息包括私有堆属性标志,则在核内私有存储区域内创建堆空间;若应用配置的堆空间信息包括共享堆属性标志,则在核内共享存储区域内创建堆空间。
3.如权利要求1所述的系统,其特征在于,还包括:
请求内存单元,用于获得应用向所述堆空间申请内存的请求;
判断单元,用于确定所述申请内存小于等于所述堆空间的最大典型长度,则判断所述堆空间中与申请内存长度匹配的典型长度的已经释放动态节点链表中是否有节点头;
已释放内存占用单元,用于若堆空间中与申请内存长度匹配的典型长度的已经释放动态节点链表中有节点头,则将已经释放动态节点链表中节点头所在节点的内存地址返回给应用,将所述节点头从已经释放动态节点链表压入到正在使用动态节点链表;
开辟节点单元,用于若堆空间中与申请内存长度匹配的典型长度的已经释放动态节点链表中没有节点头,则在堆空间内未使用的内存空间建立带有申请内存长度的内存空间的新节点,将新节点的内存地址返回给应用,将新节点的节点头压入申请内存长度的链表集。
4.如权利要求3所述的系统,其特征在于,还包括第一共享判断单元,与所述请求内存单元、开辟节点单元以及已释放内存占用单元连接,用于在所述请求内存单元获得应用所述堆空间申请内存的请求之后,判断所述堆空间是否在共享区域,若是,则需要加自旋锁,若否,则关中断直至内存申请成功。
5.如权利要求1所述的系统,其特征在于,所述节点由顺序排列的节点头、返回给应用的内存空间和预设长度的节点尾三部分组成,返回给应用的内存空间的长度与所述典型长度相同。
6.如权利要求1所述的系统,其特征在于,还包括:
请求释放单元,用于获取应用对所述堆空间内存的释放请求;
节点释放单元,用于判断内存释放请求中的释放内存地址对应节点是动态节点还是静态节点,若是动态节点,则将节点从所述正在使用动态节点链表中移除,并添加到已经释放的动态节点链表中;若是静态节点,确定内存释放请求中的释放内存地址对应节点是静态节点,则返回错误信息给应用。
7.如权利要求6所述的系统,其特征在于,还包括第二共享判断单元,与所述请求释放单元以及节点释放单元连接,用于所述请求释放单元获取应用释放所述堆空间内存的请求之后,判断所述堆空间是否在共享区域,若是,则加自旋锁,若否,则关中断直至内存释放成功。
8.一种嵌入式芯片,其特征在于,包括如权利要求1-7中任意一项所述的一种堆空间的内存分配管理系统。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京信威通信技术股份有限公司,未经北京信威通信技术股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510903818.9/1.html,转载请声明来源钻瓜专利网。