2009年6月18日 星期四

buddy system

概念:

memory不斷用對半分的概念拆小,拆成同大小的區塊被稱為buddy,所能分成的最小單位為page,在linux中與slab共同配合使用。


理:

1.把可用空間分割為block來管理,每個block大小都為2的次方.

2.最初不切割空間,只構築空間list(小到大),並把完整的大小掛在表尾.

3.在要求空間後去查表,到大小最剛好的空間編號處,若已有空block可用,則取得,不然則往下查表到有空block的編號,把該block不斷對半分並掛到新的適合編號處,直到目標編號有空block能用為止.

4.長時間下來,一個編號處的空block可能有多個,是用link方式串接著

5.釋放掉空間時,則藉由它的大小去查表,掛回到適當的編號


以上課的說法來看,buddy system算是中盤商的話,slab就是小盤商,從buddy system接手區塊,然後負責做更小的區塊分配。

沒有留言:

張貼留言