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

【Linux 内核 内存管理】伙伴分配器 ① ( 伙伴分配器引入 | 页块、阶 | 伙伴 )

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

文章目录

一、伙伴分配器引入


Linux 内核 初始化 完成之后 , 就会 丢弃 引导内存分配器 , 如 : bootmem 分配器 , memblock 分配器 ;

此时 , 使用 " 页分配器 “ 管理 ” 物理页 " ,

" 伙伴分配器 “ 就是 ” 页分配器 " , 其特点是 算法简单 , 性能高效 ;

二、页块、阶


伙伴分配器 有如下概念 :

页块 ( Page Block ) : 英文名称 Page Block , 指的是 连续的 " 物理页 " ;

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

n

阶页块 指的是

2^n

个 连续的 " 物理页 " ;

如 :

0

阶页块是

2^0 = 1

个 连续的 " 物理页 " ;

1

阶页块是

2^1 = 2

个 连续的 " 物理页 " ;

2

阶页块是

2^2 = 4

个 连续的 " 物理页 " ;

\vdots
n

阶页块是

2^n

个 连续的 " 物理页 " ;

三、伙伴


2

n

阶 " 页块 ( Page Block ) " 在满足 如下

3

个条件的前提下 , 可以 称为 " 伙伴 " :

① 页块相邻 :

2

个 页块 ( Page Block ) 必须相邻 , 其物理地址是连续的 ;

② 页块页号 :

1

个物理页 页号 是

2^n

的整数倍 ;

③ 合并页块 : 如果需要合并这两个

n

阶页块为

n + 1

阶页块 , 则第

1

页的 物理页 页号必须是

2^{n + 1}

整数倍 ;

0

页 与

1

页是伙伴 ;

2

页 与

3

页是伙伴 ;

1

页 与

2

页不是伙伴 , 这两页如果合并成页块 , 其第一页的页号不是

2^{n + 1}

整数倍 ;

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、伙伴分配器引入
  • 二、页块、阶
  • 三、伙伴
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档