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