tlsf, 两级隔离内存分配器实现

分享于 

3分钟阅读

GitHub

  繁體 雙語
Two-Level Segregated Fit memory allocator implementation.
  • 源代码名称:tlsf
  • 源代码网址:http://www.github.com/mattconte/tlsf
  • tlsf源代码文档
  • tlsf源代码下载
  • Git URL:
    git://www.github.com/mattconte/tlsf.git
    Git Clone代码到本地:
    git clone http://www.github.com/mattconte/tlsf
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/mattconte/tlsf
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    tlsf

    两级隔离内存分配器实现。 由Matthew内容( matt@baisoku.org ) 编写。 在BSD许可证下发布。

    特性

    • O(1),自由,重新分配,memalign的开销
    • 每个分配开销极低( 4 字节)
    • 每个TLSF管理池的开销低( ~3kB )
    • 低碎片
    • 只编译少量的代码和数据
    • 支持在飞行时添加和删除内存池区域

    警告

    • 当前,假定架构可以使 4-byte 对齐访问
    • 没有设计为线程安全的,用户必须提供这里

    注释

    这里代码基于 TLSF 1.4规范和在以下位置找到的文档:

    
    http://www.gii.upv.es/tlsf/main/docs
    
    
    
    

    它还利用 TLSF 2.0改进来减少从 8到 4字节的每块开销。

    历史

    2016/04/10 v3.1

    • 移动到github的代码
    • tlsfbits.h 滚动到 tlsf.c
    • 许可证已经更改为 BSD

    2014/02/08 v3.0

    • 这里版本基于 3DInteractive 股份有限公司的改进
    • 接口更改为允许多个内存池
    • 从控制结构( 添加,删除,调试) 分离的池处理
    • 控制结构和池仍然可以在相同的内存块中构造
    • 控制结构和池的内存块的对齐方式
    • 添加了检索控制结构大小。对齐大小。最小和最大块大小。池结构开销和开销的函数。
    • 最小池大小为 tlsf_block_size_min() + tlsf_pool_overhead ( )
    • 删除时,池必须是空的,以允许 O(1) 删除

    2011/10/20 v2.0

    • 支持 64位
    • ffs/fls的更多编译器内部函数
    • TLSF/fls在调试生成中创建过程中的验证

    2008/04/04 v1.9

    • 添加 tlsf_heap_check,堆完整性检查
    • 支持预定义的tlsf_assert宏
    • 修复块应收缩的重新分配情况;如果相邻块正在使用,则执行将降低缓慢路径。

    2007/02/08 v1.8

    • 修复tlsf_realloc中不必要的重新分配

    2007/02/03 v1.7

    • tlsf_heap_walk接受回调
    • tlsf_realloc在失败时返回 NULL
    • 4-byte 对齐的tlsf_memalign优化
    • 在适当的地方使用 size_t

    2006/11/21 v1.6

    • ffs/fls分解为 tlsfbits.h
    • 每个池开销的tlsf_overhead查询

    2006/11/07 v1.5

    • 智能重新分配实现
    • 智能memalign实现

    2006/10/11 v1.4

    • 添加一些 ffs/fls实现
    • 次要代码减少

    2006/09/14 v1.3

    • 分析表明大量使用块大小 1 -128,因此实现小块处理
    • 将池开销减少约 1 kb
    • 将最小块大小从 32字节减小到 12字节
    • 重新分配 Bug 修复

    2006/09/09 v1.2

    • 添加 tlsf_block_size
    • 不变量的static 断言机制
    • 次要错误修正

    2006/09/01 v1.1

    • 添加 tlsf_realloc
    • 添加 tlsf_walk_heap

    2006/08/25 v1.0

    • 第一个版本

    IMP  Implementation  Level  MEMO  内存  Alloc  
    相关文章