动态分区

17 Mar 2025 | 阅读 2 分钟

动态分区试图克服固定分区的弊端。在此技术中,分区大小不是在开始时声明的。它在进程加载时声明。

第一个分区保留给操作系统。剩余空间被分成几个部分。每个分区的大小等于进程的大小。分区大小根据进程的需要而变化,以便可以避免内部碎片。


os Dynamic Partitioning

动态分区相对于固定分区的优点


1. 无内部碎片

鉴于动态分区中的分区是根据进程的需要创建的,因此可以清楚地知道不会有内部碎片,因为分区中不会有未使用的剩余空间。

2. 进程大小无限制

在固定分区中,由于缺乏足够的连续内存,大小大于最大分区大小的进程无法执行。在这里,在动态分区中,进程大小不受限制,因为分区大小是根据进程大小决定的。

3. 多道程序度是动态的

由于没有内部碎片,分区中不会有未使用的空间,因此可以同时将更多进程加载到内存中。

动态分区的缺点


外部碎片化

没有内部碎片并不意味着不会有外部碎片。

让我们考虑三个进程 P1(1 MB)和 P2(3 MB)和 P3(1 MB)被加载到主内存的相应分区中。

过了一会儿,P1 和 P3 完成,它们分配的空间被释放。现在主内存中有两个可用的未使用分区(1 MB 和 1 MB),但由于它们不连续,因此无法用于加载 2 MB 的进程。

规则规定,进程必须连续地存在于主内存中才能执行。我们需要改变这个规则来避免外部碎片。


os Dynamic Partitioning External Fragmentation

复杂的内存分配

在固定分区中,分区列表只创建一次,永不更改,但在动态分区中,分配和 deallocation 非常复杂,因为每次分配给新进程时分区大小都会变化。操作系统必须跟踪所有分区。

由于动态内存分配中分配和 deallocation 的频率很高,并且每次分区大小都会改变,因此 OS 管理所有内容将非常困难。


下一个主题内存紧缩