网站首页 全球最实用的IT互联网站!

人工智能P2P分享Wind搜索发布信息网站地图标签大全

当前位置:诺佳网 > 电子/半导体 > 控制/MCU >

uC/OS-II内存管理方法详解

时间:2023-09-11 15:32

人气:

作者:admin

标签:

导读:ucos内存管理方法十分小巧,实时性好,非常值得借鉴。...

ucos内存管理方法十分小巧,实时性好,非常值得借鉴。大致原理如下:

ucos把内存初始化成相同大小的内存块,使用单向链表的方式连接起来,使用时从链表摘下,释放时重新插入链表。

当然可以存在多条链表,根据用户需求配置,同一个链表内内存块是相同大小的。比如,以100或200字节为内存块的内存链表。

每条内存链表使用一个结构体(OS_MEM)控制,这个结构体描述了这一条链表中的内存属性,比如内存块大小,剩余内存块的数量,内存块总数量等等。

1、

此函数由系统内部调用,用户不必理会,主要是一些初始化动作,前面说了每条链表都有一个结构体OS_MEM控制。

ucos建立了一个OS_MEM结构体数组,这个函数就是把这个结构体数组成员使用单向链表连接起来,并且对结构体进行初始化。

ucos使用一个全局指针指向表头,方便结构体取用。每一个结构体都可以控制一个内存链表。结构体数量用户可以通过宏定义配置。

2、

此函数初始化并创建内存块链表。主要过程是从结构体链表中取下一个空闲结构体。根据参数提供的内存起始地址和内存块大小,把整个内存分为大小一致的内存块,使用单向链表连接起来。

再把内存块链表的属性信息填写到结构体中。此函数返回一个结构体指针。找到这个结构体就找到了这条链表。

3、

根据OS_MEM类型指针找到对应的链表结构体,如果空闲的内存块数量大于0,那么从链表中摘下一个内存块,然后修改OS_MEM结构体信息,返回内存首地址。

4、

这个简单,获得内存块链表的名称。

5、

这个简单,设置内存块链表的名称。

6、

释放内存,把用完的内存块,插入pmem对应的链表中,然后修改pmem结构体信息。

7、

查询指定的内存链表中的内存使用情况,查询结果放在OS_MEM_DATA 结构体中。

优点:

仔细阅读源码就会发现,每次取出内存块的时间是一样的,速度非常快,放入内存块消耗的时间也是一样,运行时间可控,实时性非常好,代码量很小。

缺点:

每条链表中的内存块都是一样大小,使用时会有些浪费。

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信