分配器是有打字机的猴子

主要观点:作者因 mimalloc 未提供预分配内存功能,决定自己写一个内存分配器,该实现约 163 行代码且很简单。介绍了内存分配器的作用、内存碎片化问题及 buddy 系统分配技术,包括分配、释放和调整大小的过程,最后表示自己实现的代码可在 tgmatos/imalloc 找到,未来可能会深入研究内存分配器内部。
关键信息

  • mimalloc 相关 issue 及作者想法。
  • 内存分配器负责程序执行时的内存分配与释放。
  • 内存碎片化有内部和外部两种,分配器有多种减少碎片化的方法。
  • buddy 系统通过将连续内存块分成二的幂次方的小块来工作。
  • 分配时不断分割内存块直到满足请求大小,释放时标记为未使用并合并伙伴块。
    重要细节
  • C 标准库提供malloc/free/resize等函数,自定义分配器需提供类似接口。
  • buddy 系统在 Linux 内核中用于处理页面分配(虽为修改版本)。
  • 示例中请求 16KB 内存块,从 256KB 开始不断分割。
  • 释放 16KB 内存块时会合并伙伴块。调整大小部分留作练习。
阅读 13
0 条评论