Linux 内核 内存管理伙伴分配器 ② ( 伙伴分配器分配内存流程 )

知是行的主意,行是知的功夫。这篇文章主要讲述Linux 内核 内存管理伙伴分配器 ② ( 伙伴分配器分配内存流程 )相关的知识,希望能为你提供帮助。




文章目录

  • ??一、伙伴分配器分配内存流程??
  • ??1、查询 n 阶页块??
  • ??2、查询 n + 1 阶页块??
  • ??3、查询 n + 2 阶页块??
一、伙伴分配器分配内存流程

伙伴分配器 以 " 阶 " 为单位 , 分配 / 释放 物理页 ;


阶 ( Order ) : 物理页 的 数量单位 , 阶页块 指的是 个 连续的 " 物理页 " ;


页 / 阶 概念参考 【Linux 内核 内存管理】伙伴分配器 ① ( 伙伴分配器引入 | 页块、阶 | 伙伴 ) 博客 ;
" 伙伴分配器 " 分配内存流程 : 假设要 分配 阶页块 ;
1、查询 n 阶页块查询当前是否有 空闲的 阶页块 ,
  • 如果有则 直接分配 ,
  • 如果没有 , 则进入下一步 , 查询阶页块 ;
2、查询 n + 1 阶页块查询当前是否有 空闲的 阶页块 ,
  • 如果有 , 将 阶页块 分成 阶页块 ,
  • 一块插入 空闲阶页块链表 ;
  • 一块 直接分配 ,
  • 如果没有 , 则进入下一步 , 查询 阶页块 ;
3、查询 n + 2 阶页块【Linux 内核 内存管理伙伴分配器 ② ( 伙伴分配器分配内存流程 )】查询当前是否有 空闲的

    推荐阅读