操作系统学习笔记(八):连续内存分配——碎片整理

系统运行过程中,碎片越来越多,很可能无法获取需要的较大的内存空间。我们需要解决这个问题,这就是碎片整理的意义,可以通过碎片整理获得更大的连续内存空间,以便于满足进程的应用空间需求。碎片整理是通过调整进程占用的分区位置来减少或避免分区碎片的。碎片整理有很多种方式,比如碎片紧凑、分区对换。

碎片紧凑:

  • 实现方式:通过移动分配给进程的内存分区,以合并外部碎片。
  • 条件:所有的应用程序可以动态重定位。这是因为程序中可能有很多地址引用,如果引用了绝对地址,移动分配的内存位置可能就会出错。因此需要动态重定位,执行到命令的时候才生成内存地址。
  • 时机:进程处于等待状态时搬动。
  • 开销:移动已分配的内存分区是有开销的,因此不会为了一小块碎片就进行紧凑。具体开销暂且按下不讲。

分区对换:

分区对换是通过抢占并回收处于等待状态进程的分区,以增大可用内存空间。即将等待状态进程的数据存储到外存中,也就是对换到对换区。可以结合下面的图示理解:假设系统运行到某个时刻处于如下第一张图片的状态,图中下侧为内存与外存状态,上侧为操作系统维护的进程状态数据结构示意图,即有三个进程P1、P2、P3占满了内存区,而P1处于等待状态,P2处于运行状态,P3处于就绪状态。此时又有第四个进程要运行,而内存是不够的。则进行分区对换,对换后如第二张图所示,将处于等待状态的进程P1移动到外存,此时就有足够的内存空间。通过这种方式,我们可以让更多的进程在系统中交替进行。

操作系统学习笔记(八):连续内存分配——碎片整理_第1张图片

操作系统学习笔记(八):连续内存分配——碎片整理_第2张图片

由于对换是在内存与外存之间,对换速度是非常慢的,开销很大,因此需要解决一个问题,就是到底要交换哪些进程。

你可能感兴趣的:(操作系统学习:清华大学学堂在线)