概念:
把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接手區塊,然後負責做更小的區塊分配。
沒有留言:
張貼留言