#memory #manager #micro-controller #no-std

nightly no-std defrag

微控制器安全且低开销的碎片整理内存管理器

5个版本

使用旧Rust 2015

0.1.4 2017年5月31日
0.1.3 2016年9月16日
0.1.2 2016年9月16日
0.1.1 2016年9月4日
0.1.0 2016年9月4日

#1705嵌入式开发

每月 36次下载

MIT 许可证

86KB
1.5K SLoC

Build Status

defrag: 微控制器安全且高效的内存管理器

此库处于Beta阶段,可能会发生变化

此库旨在将安全的堆内存管理带到微控制器。结合Rust出色的类型系统和借用检查器,在资源有限的情况下创建复杂应用程序比以往任何时候都更容易。

文档

请参阅库文档:https://docs.rs/defrag

问题

如果您发现任何错误或功能请求,请提交到

https://github.com/vitiral/defrag-rs/issues


lib.rs:

defrag: 微控制器安全且高效的内存管理器

此库处于Beta发布阶段,可能会发生变化

此库旨在将安全的堆内存管理带到微控制器。结合Rust出色的类型系统和借用检查器,在资源有限的情况下创建复杂应用程序比以往任何时候都更容易。

碎片化的可能性是微控制器上不使用动态内存分配的主要原因。正如其名所示,defrag能够整理内存,从而解决潜在的碎片化问题。每个分配块的额外开销仅为8字节,因此分配非常经济。

工作原理

内存的主要管理器是Pool,用户可以从其中调用Pool.alloc::<T>()Pool.alloc_slice::<T>(len)。从这些中,他们将获得一个类似rust's stdlib MutexMutex对象。

当数据未锁定时,底层池允许将其移动以解决潜在的碎片化问题。pool.clean()组合连续的空闲块,而pool.defrag()整理内存。此外,还有各种利用空闲内存块的策略。

注意:此库仅适用于(单线程)微控制器,因此它的 Mutex 没有实现 SendSync(它不能在线程之间共享)。根据微控制器Rust代码中出现的不同架构或操作系统,这可能会有所变化。

依赖项