1、页、页面、页框这三个要先搞清楚

这个图里面的小框框

虚拟地址的叫页,页面

物理地址的叫做框 页框 块。

linux内核之伙伴算法

虚拟地址(页面)             --------------------                      页表                -------------------                物理地址(页框)

页和页面是一个东西(一般是4K)

一个4G的虚拟地址空间,每个页大小4K,1M个页,也就是10^6个页,10^3*10^3,1024*1024

2、伙伴算法解决的是频繁的请求和释放不同大小的一组连续页框,就会导致连续的页框中间分散了许多空闲页框。导致我们无法分配连续的页框。

伙伴算法:把所有空闲的页框分为11个块链表,每块链表中包含特定的连续页框地址空间。

第0个块链表包含大小为2^0个连续的页框        2^0*4K   = 4K

第1个块链表包含大小为2^1个连续的页框       2^1*4K   =  8K

第2个块链表包含大小为2^2个连续的页框

第10个块链表包含大小为2^10个连续的页框     2^10*4k  =   4M    伙伴算法最多一次能够分配4M的内存空间

3、两个连续的内存块 01   12算是一个伙伴,12不算,(伙伴算法的缺点,slab分配器解决这个问题)

4、伙伴位图

用一位描述伙伴块的状态位码,称为状态位码,bit0代表第0块和第1块的伙伴为嘛,bit0 = 1代表伙伴不是全部空闲,bit0 = 1代表全部空闲。

linux2.6为每个管理区使用不同的伙伴系统,内核空间分为三种区,DMA,NORMAL,HIGHMEM,对于每一种区,都有对应的伙伴算法。

 

 

 

 

 

相关文章:

  • 2021-04-01
  • 2021-10-16
  • 2022-12-23
  • 2021-04-09
  • 2022-12-23
  • 2021-06-29
  • 2022-01-21
猜你喜欢
  • 2022-12-23
  • 2021-10-25
  • 2021-09-29
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-09-12
相关资源
相似解决方案