一种小型CPU内存管理方法技术

技术编号:36499638 阅读:16 留言:0更新日期:2023-02-01 15:20
本发明专利技术公开了一种小型CPU内存管理方法,其包括以下步骤:S1:设计一种内存池结构类型strupool;S2:在CPU内存空间中定义内存池g_pool变量;S3:对S2中定义的内存池g_pool变量进行初始化操作;S4:定义内存信息管理结构体struinfo;S5:进行内存申请操作;S6:对申请到的内存进行释放操作;S7打开临界区,使系统进入内核状态,关闭中断以及调度等操作,内存空间释放完成。本发明专利技术在内存中开辟了一段空间,通过对这段空间进行管理,内存申请效率高,同时在内存释放时,对这段空间的内存进行重新排布,避免了内存碎片的产生。避免了内存碎片的产生。避免了内存碎片的产生。

【技术实现步骤摘要】
一种小型CPU内存管理方法


[0001]本专利技术属于计算机控制
,涉及一种小型CPU内存管理方法。

技术介绍

[0002]内存管理是计算机系统运行时是计算机内存分配以及使用的技术,内存管理的目的是更高效快速地分配内存,并在内存不再使用时将已分配的内存进行回收以供下次使用。对于可以装载Windows/linux 操作系统的大型CPU,操作系统提供成熟可靠的内存管理方式,如内存连续分配管理方式的站式管理,以及内存非连续管理方式的页式管理机制、段式管理机制以及页段式管理机制。
[0003]对于小型CPU如单片机或者某些特定功能芯片中的处理器在管理内存过程中使用标准库中的动态内存申请函数malloc以及内存释放free进行内存管理时,由于此类处理器硬件上没有任何内存管理机制,频繁地申请释放内存容易使得内存碎片随便急剧增多,导致系统运行崩溃。

技术实现思路

[0004](一)专利技术目的
[0005]本专利技术的目的是:提供一种小型CPU内存管理方法,在内存中开辟了一段空间,通过对这段空间进行管理,内存申请效率高,本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种小型CPU内存管理方法,其特征在于,包括以下步骤:S1:设计一种内存池结构类型strupool;S2:在CPU内存空间中定义内存池g_pool变量;S3:对S2中定义的内存池g_pool变量进行初始化操作;S4:定义内存信息管理结构体struinfo;S5:进行内存申请操作;S6:对申请到的内存进行释放操作;S7打开临界区,使系统进入内核状态,关闭中断以及调度等操作,内存空间释放完成。2.如权利要求1所述的小型CPU内存管理方法,其特征在于,步骤S1中,内存池结构类型strupool包括:

当前可用内存的指针memaddr,类型为无符号字符型指针,该内存空间以堆的方式操作,生长空间向上;

已申请空间的信息管理地址infoaddr,类型为无符号字符型指针,该内存空间以栈的方式操作,生长空间向下;

已经申请内存块的数量cnt,类型为无符号字符型;

可使用内存的长度len,类型为无符号短整形;

内存池空间,此空间以数组mempool进行管理,类型为无符号字符型,长度为SIZE。3.如权利要求2所述的小型CPU内存管理方法,其特征在于,步骤S1中,内存池空间长度SIZE设置为1024。4.如权利要求2所述的小型CPU内存管理方法,其特征在于,步骤S2中,内存池g_pool变量为静态变量,变量类型为S1中定义的内存池结构类型strupool。5.如权利要求4所述的小型CPU内存管理方法,其特征在于,步骤S3中,初始化操作包括:

当前可用内存的指针memaddr设置为S1中数组mempool的地址;

已申请空间的信息管理地址infoaddr设置为S1中数组mempool的最后一个元素的地址;

已经申请内存块的数量cnt设置为0;

可使用内存的长度len设置为S1中数组mempool的长度SIZE;

内存池空间所有值都设置为0,操作方法为使用内存设置函数memset进行操作。6.如权利要求5所述的小型CPU内存管理方法,其特征在于,步骤S4中,结构体struinfo共包括三个成员函数:

要申请内存指针的地址ptr,变量类型为无类型二级指针;

要申请内存的地址addr;

要申请内存的长度length。7.如权利要求6所述的小型CPU内存管理方法,其特征在于,步骤S5中,内存申请操作时,定义二级指针变量mclptr,申请到的内存指针存放到二级指针变量mclptr中,申请的长度为size,类型为无符号短整型,此结构体的长度设置为STRUINFO_LEN,计算方式以sizeof()进行计算。8.如权利要求7所述的小型CPU内存管理方法,其特征在于,步骤S5中,内存申请操作包括以下步骤:S5_1:首先判断size是否大于等于S1中定义的数组mempool的长度SIZE;如果是,则直接返回空指针,表示此次申请失败;如果否则转到S5_2;S5_2:使系统进入临界区,使系统进入内核状态,关闭中断以及调度等操作;S5_3:将g_pool中的已申请空间的信息管理地址infoaddr向下移动STRUINFO_LEN长度,infoaddr更新后的值为infoaddr减去STRUINFO_LEN;S5_4:将g_pool中的已申请空间的信息管理地址infoaddr的类型强制转化为S4中内存信息管理结构体struinfo类型并进行赋值操作,

将此结构体中的ptr的值设置为指针变
量mclptr的地址;

将此结构中的要申请内存的地址addr赋值为g_pool中memaddr的值;

将此结构中要申请内存的长度length赋值为size;此时g_pool中memaddr的值即为要申请的空间,将此值赋值...

【专利技术属性】
技术研发人员:王雨龙
申请(专利权)人:天津津航计算技术研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1