Liunx 伙伴系统合并位图使用推导

在Linux内存管理中使用到伙伴系统,其中合并只使用到了一位进行标记,设计很妙此处做的记录,如何使用一位标记两伙伴的个状态.

  1. 假设第一次分配获取了一对伙伴(下发简述A和B),那么此时分配状态将从0(默认值为0)修改为1,代表两个伙伴有一个已经使用(A已被使用).
  2. 再次分配获取到B则再次修改状态为0.(到此标记位只用来记录,分配时并不关注此位)
  3. 释放A内存块,先设置位图从0改为1,然后检查释放为0,如果为0则代表两个伙伴均未使用便可以进行合并,否则不做合并
  4. 释放B内存块,现将位图从1改为0,然后检查当前位图位0,则代表当前伙伴并未使用则进行合并.

从而得出结论,首先要注意释放时是先修改位图再进行检查,其次同时使用与同时空闲都由0表示.

你可能感兴趣的:(Liunx 伙伴系统合并位图使用推导)