+ -
当前位置:首页 → 问答吧 → 很小的一个问题 关于linux buddy系统

很小的一个问题 关于linux buddy系统

时间:2010-09-23

来源:互联网

buddy_idx = page_idx ^ (1 << order)

在求buddy块时,为什么只单考虑一边的buddy
即第order位为0 则buddy_idx = page_idx +order_size
第order位为1 则buddy_idx = page_idx - order_size
为什么不探测两边是否都有空闲块?

作者: 317316abcd   发布时间: 2010-09-23

没能明白你想要表达的意思... 根据最后一句话猜测...  为何不探测两边是否都有空闲块。
  伙伴系统分配器是每两个连续块互为兄弟块..如果随便两个相邻的块都互称为兄弟块的...
   会不好操作...至少在合并以及定位兄弟块的层次上来说...
   
    比如划分好的任意order的第一个页面基址的低order个位一定是0。但是如果只要是相邻.且都空闲...
    就合并...那么合并之后就可能不会满足这个规则...
  
    在说定位兄弟块...两个页面块只用一个比特位来表示其状态... 得知一个兄弟块的状态之后.根据表示这个块的比特是1还是0就可以推测其兄弟块的状态... 那么即使是与它相邻. 但不是它的兄弟块的页面块. 我们无法得知其状态... 所以无法探测...

作者: PCliangtao   发布时间: 2010-09-24

热门下载

更多