免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1784 | 回复: 3

很小的一个问题 关于linux buddy系统 [复制链接]

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2015-08-03 06:20:00
发表于 2010-09-23 15:34 |显示全部楼层
buddy_idx = page_idx ^ (1 << order)

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

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

论坛徽章:
0
发表于 2010-09-25 15:54 |显示全部楼层
顶楼上,解释很清楚。这样不管从理论上还是实现上都要方便得多。
再说,一个块只能有一个buddy,难不成你想脚踏两条船?

论坛徽章:
0
发表于 2010-09-25 16:28 |显示全部楼层
你很幽默... 呵呵...
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP