Fragmentation
Basic Concept
用 contiguous memory allocation 的方式會造成記憶體上會有很多 hole 空著,這些 hole 大小太小沒辦法塞進一個 process 結果就浪費了
Type
External Fragmentation
指明明記憶體夠用,但因為那些空閒空間都是零散分布的小 hole,沒有任何一塊連續空間大到能容納新的 process
Internal Fragmentation
是指分配給某個 process 的空間比它實際需要的稍大,那多出來的部分雖然在 process 的範圍內,但沒被利用
Resolution: Compaction
把所有活著的 process 往一端擠,讓所有空閒空間合併成一大塊
但有兩個問題:
- 需要 OS 支援 execution time binding,因為 process 移動後所有記憶體位址都會改變
- process 進行 I/O 時不能動它不然 I/O 會寫到錯誤的記憶體位置