操作系统-连续分配管理方式

连续分配方式是指为一个用户程序分配一个连续的内存空间。

1、单一连续分配

内存在此方式下分为系统区和用户区,系统区仅在操作系统使用,通常在低地址部分;用户区是为用户提供的、出系统区之外的内存空间。这种方式无需进行内存保护。因为内存中永远只有一道程序,因此肯定不会越界和干酪其他程序。

  • 优点:简单、无外部碎片,可以采用覆盖技术,不需要额外的技术支持。
  • 缺点:只能用于单用户、单任务的操作系统中,有内部碎片,内存利用率极低。

2、固定分区分配

固定分区分配是最简单的一种多道程序存储管理方式,它将用户内存空间划分为若干固定大小的区域,每个区域只装入一道作业。当有空闲分区时,便可以从外存的后备作业队列中选择适当大小的作业装入该分区,如此循环。
固定分区分配的划分分区的时候有两种不同方法:分区大小相等和分区大小不等(如下图所示)。
操作系统-连续分配管理方式

  • 优点:是用于多道程序设计的最简单存储分配,无外部碎片。
  • 缺点:有内部碎片,无法实现多进程共享一个主存区,所以会造成存储空间上的浪费。

3、动态分区分配

动态分区分配又称为可变分区分配,是一种动态划分内存的分区方法。这种分区方法不预先划分内存,而是在进程装入内存时,根据进程的大小动态的建立分区,并使分区的大小正好合适进程的需要。因此系统中分区的大小和数目是可变的。有新的作业需要调入,但是没有足够的内存空间时,就会换出内存内的一些进程到外存,换入新的作业。具体过程如下图所示。
操作系统-连续分配管理方式

  • 优点:实现了多道程序设计的存储分配,无内部碎片
  • 缺点:由上图可知,随着时间推移,内存中会产生越来越多的外部碎片,我们可以通过紧凑技术解决,但是该技术相当耗费时间。

在进程装入或者换入主存时,若内存中有多个足够大的空闲块,则操作系统必须确定分配哪个内存块给进程使用,这就是动态分区的分配策略。考虑以下集中算法:

  • 首次适应(First Fit)算法:空闲分区以地址递增的次序链接。分配内存时顺序查找,找到大小满足要求的第一个空闲分区。
  • 最佳适应(Best Fit)算法:空闲分区按容量递增的方式形成分区链,找到一个满足要求的空闲分区。
  • 最坏适应(Worst Fit)算法:又称最大适应(Largest Fit)算法,与最佳适应相反,空闲分区按容量递减的方式形成分区链,找到一个满足要求的空闲分区,其实就是第一个分区。
  • 临近适应(Next Fit)算法:又称循环首次适应算法,由首次适应算法演变而成。不同之处在于分配内存时从上一次查找结束的位置开始查找将空闲分区用循环队列链接

以下是这几种算法的性能分析,直接截图。
操作系统-连续分配管理方式