架构设计

axalloc 采用了两级分配器的架构:

  • 小内存:使用字节分配器管理
  • 大内存:使用页分配器管理

支持通过 feature 控制字节分配器算法的选择,包括:

  • slab
  • buddy
  • tlsf

这三种内存分配算法的实现直接由 allocator crate 提供。

初始化逻辑

  1. 判断总内存大小是否大于最小的堆内存大小
  2. 将整个内存区域分配给页分配器
  3. 从页分配器中取出 MIN_HEAP_SIZE 大小的内存交给字节分配器管理

核心实现

  • alloc_pages() 等函数是对上游页分配器对应函数的封装
  • 实现 GlobalAlloc Traits,将其注册为全局内存分配器