Image
Image

shjuturt

+ 关注

粉丝 0     |     主题 30     |     回帖 155

一文搞定Linux内存管理原理(转)
2023-1-20 13:54
  • ST MCU
  • 42
  • 1230
  每个zone区都有一个自己的失活净页面队列,与此对应的是两个跨zone的全局队列,失活脏页队列 和 活跃队列。 ...  
  防止碎片的方法就是把这三类page放在不同的链表上,避免不同类型页面相互干扰。考虑这样的情形,一个不可移 ...  
  可移动页面 movable:可以随意的移动。属于用户空间应用程序的页属于此类页面,它们是通过页表映射的,因此 ...  
  可回收页面 reclaimable:不能直接移动,但是可以回收,因为还可以从某些源重建页面,比如映射文件的数据属 ...  
  在了解反碎片的基本原理前,先对内存页面做个归类: 不可移动页面 unmoveable:在内存中位置必须固定,无 ...  
  buddy避免内部碎片的努力 物理内存的碎片化一直是Linux操作系统的弱点之一,尽管已经有人提出了很多解决 ...  
  ......  
  11、我们进入另外一个级别,order(3)。它的位索引为0,它的值同样为0。这意味着对应的伙伴不是全部空闲 ...  
  9、现在我们合并成了4页面大小(从页面8开始)的空闲块,从而进入另外的级别。在order(2)中找到伙伴位图 ...  
  6、新的空闲页面是从页面10开始的,于是我们在order(1)的伙伴位图中找到它的索引,看是否有空闲的伙伴, ...  
  3、现在我们重新设置该bit的值为0,因为此时两个伙伴(页面10和页面11)完全空闲。 4、我们将页面10,从 ...  
  1、找到在order(0)伙伴位图中代表页面11的位,计算使用下面公示: index = page_idx >> (order + 1) = 11 ...  
  回收过程 当我们回收页面11(order 0)时,则执行以下步骤:  
  4、若在order(1)上没有空闲页面块,那么我们就到更高的级别(order)上找,order(2)。 5、此时(order ...  
  分配过程 当我们需要order(1)的空闲页面块时,则执行以下步骤: 1、初始空闲链表为: order(0): 5, 1 ...  
  order(0)bimap有8个bit位(页面最多16个页面,所以16/2) order(1)bimap有4个bit位(order(0)bimap有 ...  
  ......  
  ......  
  具体buddy管理基于位图,其分配回收页面的算法描述如下, buddy算法举例描述: 假设我们的系统内存只有1 ...  
  ......  
2
3
近期访客