动态分区试图克服由固定分区造成的问题。 在这种技术中,分区大小最初并未声明。 它在进程加载时声明。
第一个分区是为操作系统保留的。 剩余空间分成几部分。 每个分区的大小将等于进程的大小。 分区大小根据进程的需要而变化,以避免内部碎片。
1. 没有内部碎片
考虑到动态分区中的分区是根据进程的需要创建的,很明显,不会有任何内部碎片,因为分区中不会有任何未使用的剩余空间。
2. 对过程的大小没有限制
在固定分区中,由于缺少足够的连续内存,因此大于最大分区大小的进程无法执行。 这里,在动态分区中,由于分区大小是根据进程大小决定的,因此进程大小不能受到限制。
3. 多程序的程度是动态的
由于没有内部碎片,分区中不会有任何未使用的空间,因此可以同时将更多的进程加载到内存中。
外部碎片
没有内部碎片并不意味着不会有外部碎片。
让我们考虑三个进程P1(1 MB)和P2(3 MB)和P3(1 MB)正在加载到主内存的各个分区中。
一段时间后,P1和P3完成并释放指定的空间。 现在,在主内存中有两个未使用的分区(1 MB和1 MB),但它们不能用于在内存中加载2 MB进程,因为它们不是连续定位的。
该规则表示,该进程必须连续存在于主内存中才能执行。需要更改此规则以避免外部碎片。
在固定分区中,分区列表只会生成一次,并且永远不会改变,但在动态分区中,分配和释放非常复杂,因为每次分配给新进程时分区大小都会发生变化。 操作系统必须跟踪所有的分区。
由于在动态内存分配中分配和取消分配的操作非常频繁,而且分区大小每次都会改变,所以操作系统很难管理所有内容。