系統根據作業所需內存大小來動態分配內存,這也就是可變分區或動態分區。
因為動態分區數量是不固定的,所以用分區說明表來記錄分區信息不太合適。所以,就采用了鏈表形式來組織並記錄分區的信息。如下圖:
通過鏈表的形式,將這些空閑且不連續的分區串聯起來。因此,在給作業分配分區時,會遍歷這條鏈表上的空閑分區,找出大小合適的分區。
結合不同的場景,有三種分配合適分區的算法。
1、首次適應算法:遍歷鏈表,挑選最開始滿足大小要求的分區。
2、最佳適應算法:根據分區的大小升序排序 + 首次適應
3、最差適應算法:根據分區的大小降序排序 + 首次適應
雖然可變分區解決固定分區的內部碎片問題,但這樣又引發了外部碎片的問題。如下圖: