您当前的位置: 首页 >  linux

韩曙亮

暂无认证

  • 0浏览

    0关注

    1068博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

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

韩曙亮 发布时间:2022-04-21 11:56:37 ,浏览量:0

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

一、伙伴分配器分配内存流程

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

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

页 / 阶 概念参考 【Linux 内核 内存管理】伙伴分配器 ① ( 伙伴分配器引入 | 页块、阶 | 伙伴 ) 博客 ;

" 伙伴分配器 " 分配内存流程 : 假设要 分配 n n n 阶页块 ;

1、查询 n 阶页块

查询当前是否有 空闲的 n n n 阶页块 ,

  • 如果有则 直接分配 ,
  • 如果没有 , 则进入下一步 , 查询 n + 1 n + 1 n+1 阶页块 ;
2、查询 n + 1 阶页块

查询当前是否有 空闲的 n + 1 n + 1 n+1 阶页块 ,

  • 如果有 , 将 n + 1 n + 1 n+1 阶页块 分成 2 2 2 个 n n n 阶页块 ,

    • 一块插入 空闲 n n n 阶页块链表 ;
    • 一块 直接分配 ,
  • 如果没有 , 则进入下一步 , 查询 n + 2 n + 2 n+2 阶页块 ;

3、查询 n + 2 阶页块

查询当前是否有 空闲的 n + 2 n + 2 n+2 阶页块 ,

  • 如果有 , 将 n + 2 n + 2 n+2 阶页块 分成 2 2 2 个 n + 1 n + 1 n+1 阶页块 ,

    • 一块插入 空闲 n + 1 n + 1 n+1 阶页块链表 ;
    • 一块将 n + 1 n + 1 n+1 阶页块 分成 2 2 2 个 n n n 阶页块 ,
      • 一块插入 空闲 n n n 阶页块链表 ;
      • 一块 直接分配 ,
  • 如果没有 , 则进入下一步 , 查询 n + 3 n + 3 n+3 阶页块 ;

关注
打赏
1663594092
查看更多评论
立即登录/注册

微信扫码登录

0.0444s