搜索
bottom↓
回复: 8

UCOSIII释放内存的时候还要提供分区,用得很累,你们感觉呢?

[复制链接]

出0入0汤圆

发表于 2019-2-25 15:27:39 | 显示全部楼层 |阅读模式
如题,UCOSIII提供的内存管理模块以分区和固定大小的块来管理内存,从某一分区获取一个内存块后在释放的时候必须还给对应的分区,否则会出错,而且系统对这种归还内存的时候使用了错误的分区根本就不检测,错了就错了。比如我有两个分区A和B如下:
A分区:10个内存块,块大小32字节,(总共就是10*32字节)。创建好了之后形成链表:A1->A2->A3......->A10.
B分区:10个内存块,块大小64字节,(总共就是10*64字节)。创建好了之后形成链表:B1->B2->B3......->B10.
某一流程中从A获取了一块(第一次用就是A1),又从B中获取一块(第一次用就是B1),用完之后故意归还错误(把A1还给B分区,把B1还给A分区),结果不会上报错误,归还完之后A和B分区的空闲链表就成了:
B1->A2->A3......->A10.
A1->B2->B3......->B10.
那么,在实际工程用的时候肯定有多重内存分区,每一个分区的内存块长度肯定不一致(如果一样就没有必要搞多个分区了),获取了内存然后填充再作为消息发出去,另外的任务处理完消息再归还内存,怎么去找对应的分区?根据地址段?
如果根据地址段去找对应的分区行得通,那为什么UCOS不把这个做进去,归还内存的时候提供首地址就可以了,对于用户更加友好。
我想问一下各位,第一你们用不用UCOS的内存管理模块?第二如果用的话怎么用?

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入8汤圆

发表于 2019-2-25 15:29:38 | 显示全部楼层
觉得累,就换 RT-Thread 试试吧。

出0入0汤圆

发表于 2019-2-25 16:29:24 | 显示全部楼层
古二真   

出870入263汤圆

发表于 2019-2-25 18:34:22 | 显示全部楼层
可以再封装一层,根据所归还内存的地址自动匹配到对应分区。只需建立一个表格,记录分区的地址范围而已。

出870入263汤圆

发表于 2019-2-25 18:36:22 | 显示全部楼层
这种需求其实已经是具体应用的问题了,完全可以用自己的代码来解决问题的。

出870入263汤圆

发表于 2019-2-25 18:39:47 | 显示全部楼层
本帖最后由 armstrong 于 2019-2-25 18:43 编辑

如果你去分析linux内核源码,当你调用kmalloc和kfree时,它就是从不同的内存段里获取,而后归还到不同内存段去的;你需要做的就是这层封装而已。
ucos为了精简,这种需求的代码让开发者自己实现更灵活,不难的。
如果这个功能要ucos来实现(红黑树,哈希,数组),他们会纠结到底用什么算法更灵活,资源占用哪种更少,性能哪种更好等等问题;还增加了配置的复杂度。

出0入0汤圆

发表于 2019-2-25 18:53:23 | 显示全部楼层
因为ucos的内存分配主要目的还是内核自己使用,这样操作mcu的指令最少,对于追求效率的内核来说这样足够了。

出0入0汤圆

发表于 2019-2-25 19:08:01 | 显示全部楼层
这才是安全使用呀,不像PC机,内存大,无所谓。

出0入0汤圆

 楼主| 发表于 2019-2-26 09:02:20 | 显示全部楼层
armstrong 发表于 2019-2-25 18:39
如果你去分析linux内核源码,当你调用kmalloc和kfree时,它就是从不同的内存段里获取,而后归还到不同内存 ...

多谢大侠耐心解释
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-26 12:26

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表