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





一、伙伴分配器引入



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

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

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





二、页块、阶



伙伴分配器 有如下概念 :

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

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

如 :

0 0 0 阶页块是 2 0 = 1 2^0 = 1 20=1连续的 " 物理页 " ;

1 1 1 阶页块是 2 1 = 2 2^1 = 2 21=2连续的 " 物理页 " ;

2 2 2 阶页块是 2 2 = 4 2^2 = 4 22=4连续的 " 物理页 " ;

⋮ \vdots

n n n 阶页块是 2 n 2^n 2n连续的 " 物理页 " ;





三、伙伴



2 2 2 n n n 阶 " 页块 ( Page Block ) " 在满足 如下 3 3 3 个条件的前提下 , 可以 称为 " 伙伴 " :

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

② 页块页号 : 1 1 1 个物理页 页号 2 n 2^n 2n 的整数倍 ;

③ 合并页块 : 如果需要合并这两个 n n n 阶页块为 n + 1 n + 1 n+1 阶页块 , 则第 1 1 1 页的 物理页 页号必须是 2 n + 1 2^{n + 1} 2n+1 整数倍 ;


0 0 0 页 与 1 1 1 页是伙伴 ;

2 2 2 页 与 3 3 3 页是伙伴 ;


1 1 1 页 与 2 2 2 页不是伙伴 , 这两页如果合并成页块 , 其第一页的页号不是 2 n + 1 2^{n + 1} 2n+1 整数倍 ;

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux虚拟内存管理cd是内核中的一个子系统,用于管理和控制系统中的虚拟内存。下面将从几个关键方面对Linux虚拟内存管理cd进行深入理解。 首先是面置换算法。Linux使用的主要面置换算法是LRU(最近最久未使用)算法。Linux将内存分为面,使用LRU算法根据面访问的时间顺序进行面置换,将最久未使用的面换出,以便给新进程分配内存空间。 其次是虚拟内存与物理内存的映射。Linux通过表将虚拟地址映射到物理内存。每个进程拥有自己的表,表中的每个条目将虚拟面映射到物理面。这样,每个进程在使用内存时都感觉自己拥有整个内存空间,而不受实际物理内存的限制。 另外,还有内存分配与回收机制。Linux使用分机制进行内存分配,将内存划分为固定大小的面,并按需分配给进程使用。当进程不再使用某个面时,Linux将该面回收,使其可供其他进程使用。 此外,还有面错误处理。当进程访问未被映射的虚拟面时,会触发面错误。Linux通过引入异常异常处理机制,通过在表中找到合适的物理面进行映射,从而解决面错误。 最后是一些优化技术。为了提高性能,Linux采用了多级表、TLB(转换后备缓冲)等技术。多级表将大的表划分为多个较小的表,减少了表查询的时间。TLB是一个高速缓存,用于存储最近访问的虚拟的物理号。 综上所述,深入理解Linux虚拟内存管理cd有助于我们更好地了解操作系统内存管理的原理和机制,为系统性能优化和应用程序开发提供参考和指导。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值