内存管理,是指软件运行时对计算机内存资源的分配和使用的技术。其最主要的目的是如何高效,快速的分配,并且在适当的时候释放和回收内存资源。前面我们有介绍过如何使用FSMC外扩SRAM,实现内存容量的扩展。通过扩展后,我们可使用的内存(外扩SRAM容量是1MB,STM32F103ZET6内部SRAM有64KB)就比较多了。
尽管有这么多可使用的内存,但我们还是得使用某种方式来有效管理这些内存,这种方式和我们学习C语言时,使用malloc和free函数来申请内存和内存释放类似,malloc用于申请内存,free用于释放内存。本文我们就来介绍一种简单的内存管理方式:分块内存管理。该方法的实现原理如图44.1.1所示:
从上图我们可以看出,内存管理由内存池和内存管理表两部分组成,内存池被分成n个内存块,然后对应内存管理表,内存管理表就是用来标识相应的内存块是否使用,我们可以对它进行设置。当相应的内存管理表设置为0的时候,表示该内存块没有被使用;而当内存管理表设置为非零的时候,表示该内存已被使用,而内存管理表里面的数字表示当前申请内存块的数量,且申请的内存块是连续的。
从上图中我们还可以看出内存分配的方向是从底到顶的分配方向,即首先从最末端开始找空内存。通常当内存管理刚初始化的时候,内存表全部清零,表示没有任何内存块被占用。
(1)内存分配原理
当指针p调用malloc申请内存的时候,先判断p要分配的内存块数(m),然后从第n项开始,向下查找,直到找到m块连续的空内存块(即对应内存管理表项为0),然后将这m个内存管理表项的值都设置为m(标记被占用),最后,把最后的这个空内存块的地址返回指针p,完成一次分配。注意,如果当内存不够的时候(找到最后也没找到连续的m块空闲内存),则返回NULL给p,表示分配失败。
(2)内存释放原理
当p申请的内存用完,需要释放的时候,调用free函数实现。free函数先判断p指向的内存地址所对应的内存块,然后找到对应的内存管理表项目,得到p所占用的内存块数目m(内存管理表项目的值就是所分配内存块的数目),将这m个内存管理表项目的值都清零,标记释放,完成一次内存释放。关于分块式内存管理,我们就介绍到这里,想要了解更多内存管理的知识可以百度查找,网上也有很多这样的介绍。
关键字:单片机 内存 管理
引用地址:
单片机如何对内存进行管理
推荐阅读最新更新时间:2024-11-12 20:17
西门子与 IBM 联合推出服务生命周期管理解决方案
西门子和 IBM(纽交所:IBM)近日宣布联合推出新型解决方案,进一步加深双方合作关系。该解决方案能够将实际维护和资产性能与设计决策和现场修改动态结合,从而优化资产的服务生命周期管理(SLM)。该解决方案以西门子数字化工业软件 Xcelerator 解决方案组合和 IBM Maximo® 为基础,在设备制造商和设备所有者/运营商之间建立起端到端的数字线程。 “IBM 和西门子的联手可以帮助企业创建并管理一个闭环的、端到端的数字化双胞胎,以打破传统的孤岛模式,实现服务创新和增收。”行业研究和咨询公司 CIMdata 总裁兼首席执行官 Peter Bilello 表示,“只有在产品设计、开发决策、准确的产品配置和服务运营之间
[网络通信]
单片机上的RS485接口
RS-232虽然应用很广泛,但因为它推出较早,在现代网络通信中已经暴露出明显的缺点。比如以下几点: 1) 数据传输速率慢。RS-232所规定的20KB/s的传输速率虽然能满足异步通信要求,通常异步通信速率限制在19.2KB/s以下对某些同步系统来说,不能满足传送速率要求。 2) 传送距离短。RS-232接口一般装置之间电缆长度为15m,即使有较好的线路器件优良的信号质量,电缆长度也不会超过60m。 3) 没有规定标准的连接器,因而出现了互不兼容的25芯连接器。 4) 接口处各信号间容易产生串扰。 RS-485接口的出现就弥补了RS-232的不足,而出现了一种新的接口标准,并且由于良好的性能,RS-485获得了广泛的应用,其
[单片机]
2018年内存产业DRAM/NAND Flash恐是两样情
2017年,整体内存产业不论DRAM或NAND Flash,都度过了一个黄金好年,那么2018年可否持续荣景呢? 综合目前业界的看法,DRAM热度可望延续,供不应求态势依旧,但NAND部分,恐怕就不会那么乐观了,由于大厂3D NAND良率大跃进,供给过剩问题已经提前在2017年第四季引爆,至少2018年上半年恐怕都不会太理想, 最快2018年第二季供需平衡,第三季再度供给吃紧,届时产业由悲转喜。 DRAM无新增产能 首先就DRAM部分,以大方向来说,2018年在Fab端并无新增产能,顶多就是制程从2X奈米推进到1X奈米或是1Y奈米,带动位的成长。 市调单位集邦科技更直接表示,2018年各DRAM厂资本支出计划都倾向保守,新增投片量
[手机便携]
基于单片机的高性能直流稳压电源
引言 众所周知,许多科学实验都离不开电,并且在这些实验中经常会对通电时间、电压高低、电流大小以及动态指标有着特殊的要求,因此,如果实验电源不仅具有良好的输出质量而且还具有多功能以及一定的智能化,那么就省去了许多不精确的人为操作,取而代之的是精确的微机控制,而我们所要做的就是在实验开始前对一些参数进行预设。这将会给各个领域中的实验研究带来不同程度的便捷与高效。因此,直流电源今后的发展目标之一就是不仅要在性能上做到效率高、噪声低、高次谐波低、既节能又不干扰环境,还要在功能上力求实现数控化、多功能化与智能化。本文所介绍的就是一个将开关电源和线性电源有机地结合起来,兼具二者优点的高性能直流稳压电源。由于在该电源中引入了单片机控制,故该电源
[单片机]
设备管理系统:智能工厂设备管理系统的优势
一、智能工厂设备管理系统的崛起 1.重要性 在现代工业领域,设备管理系统的重要性日益凸显。设备是工厂生产的核心,企业对设备的依赖程度不断提高。智能工厂设备管理系统采用信息化手段,协同处理和共享设备管理的各个环节,提高设备管理的效率和准确性,实现智能制造的目标。它为企业信息化管理改革提供强有力的技术支持,提升企业竞争力,带来可观的经济效益和管理效率的提升。例如,通过设备管理系统的维修保养计划调度自动化和智能化,工作效率可以提高约 40%。维修保养计划任务可以自动以多种通信方式通知到维修保养人员和相关设备部门领导。 2.发展趋势 智能工厂设备管理系统呈现出多种发展趋势。首先,融合云计算、大数据、物联网等先进技术,提高系
[嵌入式]
在轻度混合动力汽车中如何利用功率模块和宽禁带实现双电池管理
为了应对气候变化,降低出行压力,国家出台了一系列的政策,包括实施了”国六“的排放标准,外界把”国六“排放称作” 史上最严“排放标准。事实上,自从“国六”标准推行以来,很多车主表示,尾气排放是减少了一半,但汽车动力也明显比以前减少了,甚至油耗都增加了。汽车减排降油耗势在必行。为实现这一目标,其中一种方式就是采用混合动力,即在汽油或柴油车辆的传动链中添加一个由第二个电池驱动的电动机。 传统的电子化采用一个高压电池,电压通常在 300~400 V 之间的,耦合至高性能电动机。这些“全混合动力”汽车可显著提高燃油效率,但也会大大增加成本和车身重量。而“插电式”混合动力汽车,即电池通过交流电源插座充电,也具有类似的缺点。
[汽车电子]
51单片机 漩涡流水点阵
#include reg52.h typedef unsigned char uchar; typedef unsigned int uint; typedef unsigned long ulong; sbit ADDR0 = P1^0; sbit ADDR1 = P1^1; sbit ADDR2 = P1^2; sbit ADDR3 = P1^3; sbit ENLED = P1^4; uchar image = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }; uchar T0RH, T0RL;
[单片机]
采用S3C2410和Linux系统的指纹识别管理系统
指纹识别技术在金融、交通、安全等领域以及日常工作和生活中被越来越广泛地应用。指纹识别的算法中通常有大量的矩阵运算,域变换,三角函数运算等等,属于典型的运算密集型的应用,因此通常采用DSP来实现嵌入式应用。不过近期情况有了很大改观,MCU的性能突飞猛进,使得指纹识别这样的运算密集型的应用也可以采用MCU来实现。例如,三星公司推出的基于ARM920内核的嵌入式处理器S3C2410,速度高达200MIPS,完全可以满足指纹识别应用对运算速度的要求。S3C2410具有的丰富外设,并且可以运行Linux操作系统,这样的特性则是传统的DSP所无法比拟的。 进行指纹识别,首先要设法获取指纹。之前用得最多的是光学采集器,特点是价格相对便宜($1
[单片机]