Chinaunix

标题: 很小的一个问题 关于linux buddy系统 [打印本页]

作者: 317316abcd    时间: 2010-09-23 15:34
标题: 很小的一个问题 关于linux buddy系统
buddy_idx = page_idx ^ (1 << order)

在求buddy块时,为什么只单考虑一边的buddy
即第order位为0 则buddy_idx = page_idx +order_size
第order位为1 则buddy_idx = page_idx - order_size
为什么不探测两边是否都有空闲块?
作者: PCliangtao    时间: 2010-09-24 14:53
没能明白你想要表达的意思... 根据最后一句话猜测...  为何不探测两边是否都有空闲块。
  伙伴系统分配器是每两个连续块互为兄弟块..如果随便两个相邻的块都互称为兄弟块的...
   会不好操作...至少在合并以及定位兄弟块的层次上来说...
   
    比如划分好的任意order的第一个页面基址的低order个位一定是0。但是如果只要是相邻.且都空闲...
    就合并...那么合并之后就可能不会满足这个规则...
  
    在说定位兄弟块...两个页面块只用一个比特位来表示其状态... 得知一个兄弟块的状态之后.根据表示这个块的比特是1还是0就可以推测其兄弟块的状态... 那么即使是与它相邻. 但不是它的兄弟块的页面块. 我们无法得知其状态... 所以无法探测...
作者: peimichael    时间: 2010-09-25 15:54
顶楼上,解释很清楚。这样不管从理论上还是实现上都要方便得多。
再说,一个块只能有一个buddy,难不成你想脚踏两条船?
作者: PCliangtao    时间: 2010-09-25 16:28
你很幽默... 呵呵...




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2