首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为Eneas OSE使用不同的malloc实现?

为Eneas OSE使用不同的malloc实现?
EN

Stack Overflow用户
提问于 2013-12-20 16:06:12
回答 1查看 99关注 0票数 1

我听说Enea的OSE的malloc实现并不是很有效--有人知道他们是否使用了像ptmalloc2这样的标准malloc吗?

如果有人通过将其他malloc移植到Enea的OSE来获得更好的结果,我会很感兴趣。

EN

回答 1

Stack Overflow用户

发布于 2013-12-21 19:23:33

在任何实时多线程系统中,malloc()的基本问题是非确定性行为和线程安全。

可以想象,OSE实现至少是线程安全的。非确定性分配时间可以通过不在实时关键代码中分配来处理(例如在初始化期间,或者仅在非关键后台线程中)。

由于线程安全的原因,许多RTOS库提供了malloc实现,但同样有许多用于嵌入式系统的标准库实现提供了互斥锁存根,因此标准库实现也可以是线程安全的。检查你的库中关于线程安全的文档。

要解决实时关键代码中的不确定性问题,可以使用固定块分配器。OSE可以直接提供这一点,但通过预先分配(动态或静态)内存块并在队列中放置指向每个块的指针,可以轻松地实现它。要分配一个块,只需从队列中取出一个指针,然后将指针放回队列中释放它。如果队列为空,则表示内存不足。多个队列,每个队列包含不同大小的块,将在一定程度上提高内存使用率并避免“浪费”。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20698926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档