動態分割區試圖克服由固定分割區造成的問題。 在這種技術中,分割區大小最初並未宣告。 它在進程載入時宣告。
第一個分割區是為作業系統保留的。 剩餘空間分成幾部分。 每個分割區的大小將等於進程的大小。 分割區大小根據進程的需要而變化,以避免內部碎片。
1. 沒有內部碎片
考慮到動態分割區中的分割區是根據進程的需要建立的,很明顯,不會有任何內部碎片,因為分割區中不會有任何未使用的剩餘空間。
2. 對過程的大小沒有限制
在固定分割區中,由於缺少足夠的連續記憶體,因此大於最大分割區大小的進程無法執行。 這裡,在動態分割區中,由於分割區大小是根據進程大小決定的,因此進程大小不能受到限制。
3. 多程式的程度是動態的
由於沒有內部碎片,分割區中不會有任何未使用的空間,因此可以同時將更多的進程載入到記憶體中。
外部碎片
沒有內部碎片並不意味著不會有外部碎片。
讓我們考慮三個進程P1(1 MB)和P2(3 MB)和P3(1 MB)正在載入到主記憶體的各個分割區中。
一段時間後,P1和P3完成並釋放指定的空間。 現在,在主記憶體中有兩個未使用的分割區(1 MB和1 MB),但它們不能用於在記憶體中載入2 MB進程,因為它們不是連續定位的。
該規則表示,該進程必須連續存在於主記憶體中才能執行。需要更改此規則以避免外部碎片。
在固定分割區中,分割區列表只會生成一次,並且永遠不會改變,但在動態分割區中,分配和釋放非常複雜,因為每次分配給新進程時分割區大小都會發生變化。 作業系統必須跟蹤所有的分割區。
由於在動態記憶體分配中分配和取消分配的操作非常頻繁,而且分割區大小每次都會改變,所以作業系統很難管理所有內容。