RT-Thread内存管理是怎么进行的

本篇文章为大家展示了RT-Thread内存管理是怎么进行的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

在单片机芯片上,如果不考虑出厂固化的ROM空间的话,通常开发者能接触到的存储空间主要分两种:掉电可保存数据的片内FLASH和掉电不可保存数据的片内RAM。
片内RAM(通常理解为内存)的访问速度比较快,可以按照变量地址随机访问,但断电后数据丢失。片内FLASH(通常理解为硬盘)所保存的内容比较固定,主要用来保存程序本身的数据内容,保存的内容断电不丢失。
对于单片机的片内RAM内存,主要有堆和栈之分,本章的内存管理,主要是基于堆内存管理进行开展的,在RT-Thread中,有两种堆内存管理方式:动态内存堆管理和静态内存池管理。
从以下几个方面总结一下RT-Thread内存管理的学习过程
RT-Thread内存管理是怎么进行的  rt-thread 第1张
内存管理相关介绍

在运行操作系统的单片机上面,代码和变量会占用一部分固定的内存开销,操作系统在初始化的时候,会去除掉这部分已经占用的内存,把剩下的闲置内存纳入到系统堆里面进行统一管理,不管是动态堆内存,还是静态内存池,都是使用这部分闲置空间的。
RT-Thread内存管理是怎么进行的  rt-thread 第2张

需要注意的是,这三种内存管理算法,我们只能通过menuconfig来配置系统内核,选择其中一种内存管理方法,对于用户的应用程序接口而言,这三种算法是透明的,也就是说提供给用户的内存管理接口是相同的,只是算法的实现原理不同。
关于动态堆内存管理,操作系统提供了以下API接口函数,如下图所示。
RT-Thread内存管理是怎么进行的  rt-thread 第3张

RT-Thread提供了以下API函数接口,用于静态内存池管理。
RT-Thread内存管理是怎么进行的  rt-thread 第4张
内存管理相关注意事项

在使用RT-Thread内存管理相关接口的时候,为了确保系统稳定性,有以下注意事项:
1.由于系统为了保证内存在多线程的状态下能安全分配,引入了互斥操作,因此不能在中断服务程序里面分配或释放内存块,否则会引起当前线程被挂起。
2.在使用内存堆管理的时候,产生的内存碎片会在系统空闲线程运行的时候进行回收。
3.用户应用程序在申请内存分配的时候,建议判断是否申请成功,并对申请成功的内存空间进行初始化后再使用。
4.动态内存堆管理是一种“用时间换空间”的内存管理方式,这种方式可以节省一定的内存空间,但会损失一点效率。
5.静态内存池管理是一种“用空间换时间”的内存管理方式,这种方式相对来说比较高效,但会造成一定的空间浪费。
6.对于以KB为单位的单片机片内RAM内存,一般采用动态内存堆里面的小内存管理算法即可。

上述内容就是RT-Thread内存管理是怎么进行的,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注蜗牛博客行业资讯频道。

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:niceseo99@gmail.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

评论

有免费节点资源,我们会通知你!加入纸飞机订阅群

×
天气预报查看日历分享网页手机扫码留言评论电报频道链接