#redox #pool #allocator #free #allocations #range #buffer-pool

nightly no-std redox-buffer-pool

Redox的缓冲池库,具有通用32位分配器功能

8个版本 (4个重大更新)

0.5.2 2021年6月22日
0.5.1 2020年10月29日
0.4.0 2020年9月20日
0.3.0 2020年9月19日
0.1.0 2020年8月4日

内存管理中排名491

每月下载次数23

使用MIT许可证

79KB
1.5K SLoC

redox-buffer-pool

这是一个小型库,提供了一个通用的O(log n)内存分配器,适用于小型(目前为32位)和可能短暂的生命周期分配。它还包含一个“保护”机制,可以防止池在使用中被其他进程回收。

虽然这个crate的名称以Redox开头,但它也可以在其他操作系统上使用;redox_syscall crate仅用于启用redox功能时,并且它所做的只是添加一些错误代码转换。


lib.rs:

redox-buffer-pool

这个crate提供了一般用途的缓冲池,支持在池内分配切片,以及通过非相邻的更大的底层内存分配(如mmap(2)或其他更大的可能的页大小分配)来扩展池。

当前的分配器使用一个B树将空间划分为标记为已占用或空闲的区域。B树使用的键有一个自定义的比较器,确保已用范围的键在空闲范围的键之后。这,加上有一个空闲空间树,使得在O(log n)内获取缓冲区切片成为可能,前提是已经有一个对齐的范围(否则,它将简单地以O(n)的速度进行线性搜索,直到找到足够大的范围以解决不匹配)。

依赖项

~79–445KB