rs485io模块-三相电量采集器-电流电压检测模块-单片机开发-深圳市金贝莱电子科技有限公司

文章详情
所在位置: 首页> 技术文章> 其它>

电子产品开发里的分块式内存管理

日期:2024-09-02 07:45
浏览次数:854
摘要:电子产品开发里的分块式内存管理的是如何高效,快速的分配,并且在适当的时候释放和回收内存资源。使用FSMC外扩SRAM,可实现内存容量的扩展。通过扩展后,我们可使用的内存(外扩SRAM容量是1MB,STM32F103ZET6内部SRAM有64KB)就比较多了。单片机开发里的分块式内存管理 尽管有这么多可使用的内存,但我们还是得使用某种方式来有效管理这些内存,这种方式和我们学习C语言时,使用malloc和free函数来申请内存和内存释放类似,malloc用于申请内存,free用于释放内存。本文...

      电子产品开发里的分块式内存管理,是指软件运行时对计算机内存资源的分配和使用的技术。其主要的目的是如何高效,快速的分配,并且在适当的时候释放和回收内存资源。使用FSMC外扩SRAM,可实现内存容量的扩展。通过扩展后,我们可使用的内存(外扩SRAM容量是1MB,STM32F103ZET6内部SRAM有64KB)就比较多了。单片机开发里的分块式内存管理

       尽管有这么多可使用的内存,但我们还是得使用某种方式来有效管理这些内存,这种方式和我们学习C语言时,使用malloc和free函数来申请内存和内存释放类似,malloc用于申请内存,free用于释放内存。本文我们就来介绍一种简单的内存管理方式:分块内存管理。单片机开发里的分块式内存管理,该方法的实现原理如图:

 

       从上图我们可以看出,单片机开发里的分块式内存管理由内存池和内存管理表两部分组成,内存池被分成n个内存块,然后对应内存管理表,内存管理表就是用来标识相应的内存块是否使用,我们可以对它进行设置。当相应的内存管理表设置为0的时候,表示该内存块没有被使用;而当内存管理表设置为非零的时候,表示该内存已被使用,而内存管理表里面的数字表示当前申请内存块的数量,且申请的内存块是连续的。单片机开发里的分块式内存管理

      从上图中我们还可以看出内存分配的方向是从底到顶的分配方向,即首先从*末端开始找空内存。通常当内存管理刚初始化的时候,内存表全部清零,表示没有任何内存块被占用。

     (1)内存分配原理

      当指针p调用malloc申请内存的时候,先判断p要分配的内存块数(m),然后从第n项开始,向下查找,直到找到m块连续的空内存块(即对应内存管理表项为0),然后将这m个内存管理表项的值都设置为m(标记被占用),*后,把*后的这个空内存块的地址返回指针p,完成一次分配。注意,如果当内存不够的时候(找到*后也没找到连续的m块空闲内存),则返回NULL给p,表示分配失败。

     (2)内存释放原理

      当p申请的内存用完,需要释放的时候,调用free函数实现。free函数先判断p指向的内存地址所对应的内存块,然后找到对应的内存管理表项目,得到p所占用的内存块数目m(内存管理表项目的值就是所分配内存块的数目),将这m个内存管理表项目的值都清零,标记释放,完成一次内存释放。

       关于单片机开发里的分块式内存管理,就介绍到这。

全铝家居| 微波烘烤机| DCS控制器| 活性氢氧化铝| 日东科技| 药品强光照射试验箱| 六价铬在线监测仪| 淄博海恒机械制造厂| 五轴数控刀具磨床| 旋转挤条机| 卡式农药残留快速检测仪| CST污泥毛细吸水时间测试仪| Agilent安捷伦| exfo电信测试| UB型玻璃板液位计| X射线镀层测厚仪| 上海念慈机械设备| 无水硫酸铝| 辐射报警仪| 二级气体标准物质申报| 动态煅烧炉| 麦克电磁流量计| 全氟橡胶制品| 动物精子分析仪| 防爆数显精密压力表| 增压助燃高压漩涡风机| 中药煎药机| 金属测厚仪| 垃圾破碎粉碎线| 耐低温硅胶| 硫化氢泄漏报警器| 高低温试验箱| 减速机| 强磁铁厂| 卫生管| 隧道窑炉厂家| 机械振荡萃取仪| 景区大气负氧离子监测系统| 全自动丝网印刷机| 华雨林品牌优选| 鞋子耐折|