前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Linux 内核 内存管理】伙伴分配器 ② ( 伙伴分配器分配内存流程 )

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

作者头像
韩曙亮
发布2023-03-30 14:58:39
7K0
发布2023-03-30 14:58:39
举报
文章被收录于专栏:韩曙亮的移动开发专栏

文章目录

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


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

阶 ( Order ) : 物理页 的 数量单位 ,

n

阶页块 指的是

2^n

个 连续的 " 物理页 " ;

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

" 伙伴分配器 " 分配内存流程 : 假设要 分配

n

阶页块 ;

1、查询 n 阶页块

查询当前是否有 空闲的

n

阶页块 ,

  • 如果有则 直接分配 ,
  • 如果没有 , 则进入下一步 , 查询
n + 1

阶页块 ;

2、查询 n + 1 阶页块

查询当前是否有 空闲的

n + 1

阶页块 ,

  • 如果有 , 将
n + 1

阶页块 分成

2

n

阶页块 ,

  • 一块插入 空闲
n

阶页块链表 ;

  • 一块 直接分配 ,

  • 如果没有 , 则进入下一步 , 查询
n + 2

阶页块 ;

3、查询 n + 2 阶页块

查询当前是否有 空闲的

n + 2

阶页块 ,

  • 如果有 , 将
n + 2

阶页块 分成

2

n + 1

阶页块 ,

  • 一块插入 空闲
n + 1

阶页块链表 ;

  • 一块将
n + 1

阶页块 分成

2

n

阶页块 ,

  • 一块插入 空闲
n

阶页块链表 ;

  • 一块 直接分配 ,

  • 如果没有 , 则进入下一步 , 查询
n + 3

阶页块 ;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、伙伴分配器分配内存流程
    • 1、查询 n 阶页块
      • 2、查询 n + 1 阶页块
        • 3、查询 n + 2 阶页块
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档