论坛风格切换切换到宽版
发帖 回复
返回列表  提醒:不能用迅雷等P2P下载,否则下载失败标(二级)的板块,需二级才能下载,没二级不要购买,下载不了
  • 1468阅读
  • 7回复

[技术文章]单片机是怎么对内存进行管理的? [复制链接]

上一主题 下一主题
离线hsin
 

性别:
人妖
发帖
1585
金币
1480
提示:会员销售的附件,下载积分 = 版块积分 + 销售积分       只看楼主 倒序阅读 使用道具 0楼 发表于: 2019-02-25
内存管理,是指软件运行时对计算机内存资源的分配和使用的技术。其最主要的目的是如何高效,快速的分配,并且在适当的时候释放和回收内存资源。前面我们有介绍过如何使用 FSMC 外扩 SRAM,实现内存容量的扩展。通过扩展后,我们可使用的内存(外扩 SRAM 容量是 1MB,STM32F103ZET6 内部 SRAM 有64KB)就比较多了。 $1myf Z  
尽管有这么多可使用的内存,但我们还是得使用某种方式来有效管理这些内存,这种方式和我们学习 C 语言时,使用 malloc 和 free 函数来申请内存和内存释放类似,malloc 用于申请内存,free 用于释放内存。本文我们就来介绍一种简单的内存管理方式:分块内存管理。该方法的实现原理如图 44.1.1 所示: %|3NCyJ*7  
$c24lJ#/  
从上图我们可以看出,内存管理由内存池和内存管理表两部分组成,内存池被分成 n 个内存块,然后对应内存管理表,内存管理表就是用来标识相应的内存块是否使用,我们可以对它进行设置。当相应的内存管理表设置为 0 的时候,表示该内存块没有被使用;而当内存管理表设置为非零的时候,表示该内存已被使用,而内存管理表里面的数字表示当前申请内存块的数量,且申请的内存块是连续的。 ^4tz*i  
从上图中我们还可以看出内存分配的方向是从底到顶的分配方向,即首先从最末端开始找空内存。通常当内存管理刚初始化的时候,内存表全部清零,表示没有任何内存块被占用。 J,^eq@(  
(1)内存分配原理 lHSu T2)x;  
当指针 p 调用 malloc 申请内存的时候,先判断 p 要分配的内存块数(m),然后从第 n 项开始,向下查找,直到找到 m 块连续的空内存块(即对应内存管理表项为 0),然后将这 m 个内存管理表项的值都设置为 m(标记被占用),最后,把最后的这个空内存块的地址返回指针 p,完成一次分配。注意,如果当内存不够的时候(找到最后也没找到连续的 m 块空闲内存),则返回 NULL 给 p,表示分配失败。 CfjVx   
(2)内存释放原理 @Ke3kLQ_\X  
当 p 申请的内存用完,需要释放的时候,调用 free 函数实现。free 函数先判断 p 指向的内存地址所对应的内存块,然后找到对应的内存管理表项目,得到p 所占用的内存块数目 m(内存管理表项目的值就是所分配内存块的数目),将这 m 个内存管理表项目的值都清零,标记释放,完成一次内存释放。关于分块式内存管理,我们就介绍到这里,想要了解更多内存管理的知识可以百度查找,网上也有很多这样的介绍。 /-1 F9  


评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

一般

差劲
离线sun5304

性别:
帅哥
发帖
6244
金币
8073
提示:会员销售的附件,下载积分 = 版块积分 + 销售积分       只看该作者 1楼 发表于: 2019-03-20
  


离线天涯哥

性别:
帅哥
发帖
2173
金币
2040
提示:会员销售的附件,下载积分 = 版块积分 + 销售积分       只看该作者 2楼 发表于: 2019-05-09
    


离线h09721

性别:
人妖
发帖
8029
金币
7194
提示:会员销售的附件,下载积分 = 版块积分 + 销售积分       只看该作者 3楼 发表于: 2020-04-29


离线逆天pads

性别:
帅哥
发帖
3796
金币
1200
提示:会员销售的附件,下载积分 = 版块积分 + 销售积分       只看该作者 4楼 发表于: 2020-10-04


离线h09721

性别:
人妖
发帖
8029
金币
7194
提示:会员销售的附件,下载积分 = 版块积分 + 销售积分       只看该作者 5楼 发表于: 2020-12-29


离线小人物111

性别:
帅哥
发帖
70
金币
88
提示:会员销售的附件,下载积分 = 版块积分 + 销售积分       只看该作者 6楼 发表于: 2021-01-01
了解,谢谢


离线sen1

性别:
人妖
发帖
1456
金币
1562
提示:会员销售的附件,下载积分 = 版块积分 + 销售积分       只看该作者 7楼 发表于: 2023-03-08


快速回复
限150 字节
 
上一个 下一个