清华操作系统课程(向勇、陈渝)笔记——第三章(三)(连续内存分配)

连续内存分配

1. 内存碎片问题

碎片:给一个程序分配内存空间之后,会出现一部分无法被利用的内存空间。

  • 外部碎片:在分配单元间的未使用内存
  • 内部碎片:在分配单元中的未使用内存

2. 分区的动态分配

2. 1 什么时候需要给程序分配内存

  • 当一个程序准许运行在内存中时,需要给其分配一个连续的区间。

  • 当一个运行的程序需要访问数据时,需要给其分配一个连续的内存空间来存放数据

2. 2 分配策略

2. 2. 1 首次适配

  • 为了分配n字节,使用第一个可用空闲块,以致块的尺寸比n大。
  • 重分配需要搜索及合并于相邻的空闲分区,若有。
  • 优势:简单;易于产生更大的空闲块(找到第一个可用的空闲块即返回,不易破坏地址空间后面的空闲块)。
  • 劣势:容易产生外部碎片(两个空闲块之间的地址空间较小,不易被使用到)。

2. 2. 2 最优适配算法

  • 为了分配n字节,使用最小的可用空闲块,以致块的尺寸比n大。
  • 重分配需要搜索及合并于相邻的空闲分区,若有。
  • 优势:简单;当大部分分配是小尺寸时非常有效;可以避免分割大空闲块;可以最小化外部碎片产生的尺寸。
  • 劣势:易产生很多没用的微小碎片;重分配慢。

2. 2. 3 最差适配算法

  • 为了分配n字节,使用最大的可用空闲块,以致块的尺寸比n大。
  • 重分配需要搜索及合并于相邻的空闲分区,若有。
  • 优势:当大部分分配是中等尺寸时效果最好;避免有太多微笑的碎片。
  • 劣势:易于破碎大的空闲块以致大分区无法被分配;重分配慢。

3. 处理碎片问题

3. 1 压缩式碎片整理

  • 重置程序以合并孔洞
  • 要求所有程序是动态可重置的
  • 何时重置:程序停止的时候/等待的时候(没有占用CPU的时候)。
  • 重置开销:内存拷贝的开销很大。

3. 2 交换式碎片整理

  • 当运行程序需要更多的内存,将正在等待的程序从主存移到硬盘(虚拟内存)中,即抢占等待的程序的主存。
  • 哪些程序来交换?

你可能感兴趣的:(操作系统,操作系统)