動態分區

動態分區試圖克服由固定分區造成的問題。 在這種技術中,分區大小最初並未聲明。 它在進程加載時聲明。

第一個分區是為操作系統保留的。 剩餘空間分成幾部分。 每個分區的大小將等於進程的大小。 分區大小根據進程的需要而變化,以避免內部碎片。

動態分區比固定分區的優勢

1. 沒有內部碎片
考慮到動態分區中的分區是根據進程的需要創建的,很明顯,不會有任何內部碎片,因為分區中不會有任何未使用的剩餘空間。

2. 對過程的大小沒有限制
在固定分區中,由於缺少足夠的連續記憶體,因此大於最大分區大小的進程無法執行。 這裏,在動態分區中,由於分區大小是根據進程大小決定的,因此進程大小不能受到限制。

3. 多程式的程度是動態的
由於沒有內部碎片,分區中不會有任何未使用的空間,因此可以同時將更多的進程加載到記憶體中。

動態分區的缺點

外部碎片
沒有內部碎片並不意味著不會有外部碎片。

讓我們考慮三個進程P1(1 MB)和P2(3 MB)和P3(1 MB)正在加載到主記憶體的各個分區中。

一段時間後,P1和P3完成並釋放指定的空間。 現在,在主記憶體中有兩個未使用的分區(1 MB和1 MB),但它們不能用於在內存中加載2 MB進程,因為它們不是連續定位的。

該規則表示,該進程必須連續存在於主記憶體中才能執行。需要更改此規則以避免外部碎片。

複雜的記憶體分配

在固定分區中,分區列表只會生成一次,並且永遠不會改變,但在動態分區中,分配和釋放非常複雜,因為每次分配給新進程時分區大小都會發生變化。 操作系統必須跟蹤所有的分區。

由於在動態記憶體分配中分配和取消分配的操作非常頻繁,而且分區大小每次都會改變,所以操作系統很難管理所有內容。


上一篇: 固定分區 下一篇: 壓縮(碎片整理)