bitmap_allocator

发布时间 2023-08-23 15:42:35作者: stu--wy
  • 相关数据结构:blocks,super-blocks,bitmap,mini-vector
  • block:分配单元,super-block:管理单元
  • super_block_size = usecount + bitmap + blocks * block_size
  • mini-vector 是控制单元,mini-vector中每两个元素(两根指针)指向某个super-block中的blocks的start和end。随着内存分配需求的增加,mini-vecotr会扩容,同时衍生出新的super_block,新的super_block中的blocks ,和 bitmap 都会增加。blocks的递增示例:64,128,256...
  • 当一个super-block全回收时,这个super-block会由另一个free_mini_vector管理。free_mini_vector每个元素指向一个全回收的super-block。free_mini_vector最多64个entries,超过便归还一个最大者entry给操作系统。一个super-block全回收,登记到free_mini_vector,同时修改mini_vector,下次分配规模减半。
  • 若有新的分配需求,先检查free_mini_vector中的未释放super-block。