[发明专利]一种动态堆栈内存管理方法和装置在审
申请号: | 201610995763.3 | 申请日: | 2016-11-11 |
公开(公告)号: | CN106776354A | 公开(公告)日: | 2017-05-31 |
发明(设计)人: | 李小庆 | 申请(专利权)人: | 深圳创维数字技术有限公司 |
主分类号: | G06F12/02 | 分类号: | G06F12/02 |
代理公司: | 北京品源专利代理有限公司11332 | 代理人: | 孟金喆,胡彬 |
地址: | 518057 广东省深*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 动态 堆栈 内存 管理 方法 装置 | ||
技术领域
本发明涉及嵌入式系统技术领域,尤其涉及一种动态堆栈内存管理方法和装置。
背景技术
堆栈是高级编程语言的基础设施,是函数运行的基础。
当今的CPU(Central Processing Unit,中央处理器)设计都提供了对堆栈的支持,比如,intel处理器就是通过sp(stack pointer,堆栈指针)寄存器来实现堆栈功能的。CPU一般可同时支持多个任务进程,每个任务进程各自独立运行,需提供相应的堆栈用于该任务进程存储数据。对于每个任务进程,在执行过程中,通常都会涉及到多个函数的调用关系。例如常见的APP客户端软件,主界面函数首先被启动运行,当用户操作进行某个子功能界面时就由主界面函数调用对应的子功能界面的函数运行。在用户退出子功能界面而返回主界面时,其对应函数也退出。
函数调用过程对堆栈的使用方式如下,如图5所示,以intel平台下,函数a调用函数b,函数b又调用函数c的情形,来说明堆栈的变化过程:函数a运行时堆栈指针sp处在位置a;函数a调用函数b之后,堆栈指针sp向下移动到了位置b;函数b调用函数c之后,堆栈指针sp向下移动到了位置c;函数c退出后,堆栈指针sp向上移动到了位置b;函数b退出后,堆栈指针sp向上移动到了位置a。
由图5可知,随着函数调用层次的加深,堆栈指针sp不断向下移动,即堆栈空间也随着增大;随着函数不断地退出,堆栈指针sp不断向上移动。虽然函数已经不再运行,但曾经分配给该函数的堆栈空间并没有释放。也就是说,堆栈空间只增不减,堆栈空间与堆栈指针并不同步,不能真实地反映程序实际使用的堆栈大小,这就导致在没有交换功能、不能把内存备份到硬盘的嵌入式系统中,堆栈空间中无效的内存被浪费。
发明内容
为解决相关技术问题,本发明提供一种动态堆栈内存管理方法和装置,以及时释放被浪费的内存,提高嵌入式系统内存利用率。
为实现上述目的,本发明实施例采用如下技术方案:
第一方面,本发明实施例提供了一种动态堆栈内存管理方法,所述方法包括:
确定当前任务的堆栈空间的堆栈指针位置至堆栈空间顶部位置之间的空闲内存;
如果所述空闲内存大于预置阈值,则释放所述堆栈指针位置至所述堆栈空间顶部位置之间的内存页;
将所述堆栈指针位置所在内存页的起始位置重置为堆栈空间顶部位置。
第二方面,本发明实施例还对应提供了一种动态堆栈内存管理装置,所述装置包括:
空闲内存确定模块,用于确定当前任务的堆栈空间的堆栈指针位置至堆栈空间顶部位置之间的空闲内存;
内存页释放模块,用于如果所述空闲内存大于预置阈值,则释放所述堆栈指针位置至所述堆栈空间顶部位置之间的内存页;
重置模块,用于将所述堆栈指针位置所在内存页的起始位置重置为堆栈空间顶部位置。
本发明实施例提供的技术方案带来的有益效果:
本技术方案中,确定当前任务的堆栈空间的堆栈指针位置至堆栈空间顶部位置之间的空闲内存;如果空闲内存大于预置阈值,则释放堆栈指针位置至堆栈空间顶部位置之间的内存页;将堆栈指针位置所在内存页的起始位置重置为堆栈空间顶部位置。本技术方案中,通过释放堆栈指针位置至堆栈空间顶部位置之间的内存页,来达到堆栈指针和堆栈空间的同步,可以及时释放浪费的内存,提高嵌入式系统内存的利用率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对本发明实施例描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据本发明实施例的内容和这些附图获得其他的附图。
图1是本发明实施例一提供的一种动态堆栈内存管理方法的流程示意图;
图2A是本发明实施例二提供的一种动态堆栈内存管理方法的流程示意图;
图2B是图2A中S220的可选实施方式的流程示意图;
图3是本发明实施例三提供的一种动态堆栈内存管理装置的架构示意图;
图4A是本发明实施例四提供的一种动态堆栈内存管理装置的架构示意图;
图4B是图4A中空闲内存确定模块420的可选实施方式的架构示意图;
图5是现有技术中系统调用函数时,堆栈的变化示意图。
具体实施方式
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳创维数字技术有限公司,未经深圳创维数字技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610995763.3/2.html,转载请声明来源钻瓜专利网。
- 上一篇:客户端程序的测试错误定位方法及装置
- 下一篇:对存储器的连续页面读取