操作系统_清华大学(向勇、陈渝)-笔记-第三章-连续内存

计算机体内存分层体系

  • CPU寄存器
  • cache,包括L1,L2
  • 主存
  • 磁盘
    形成了一个金字塔的结构,越靠近CPU速度越快、存储空间越小。

操作系统在内存管理中应该要完成的目标:

  • 抽象:进程应该能够使用一段连续的内存,屏蔽了底层的细节,称之为逻辑地址空间。
  • 保护:每个进程应该拥有自己独立地址空间,不能干扰别人干活。
  • 共享:访问相同内存,进程之间也应该要可以互相传递数据。
  • 虚拟化:暂时不用的数据可以放到disk当中,形成更多的地址空间。

地址空间以及地址生成

  • 物理地址空间:硬盘、内存的地址空间,由硬件管理。
  • 逻辑地址空间:程序能够看见的地址空间,是线性的。
    CPU从逻辑地址取出内容的步骤如下:
  1. CPU内的ALU申请从逻辑地址取出内容。
  2. CPU内的内存管理单元MMU完成逻辑地址和物理地址的映射。
  3. CPU内的控制器向总线发出发送物理地址的请求。
  4. 内存发送物理地址上的内容到总线上。

确保程序的地址空间互补重叠,需要建立:

  • 界限存储器
  • 基地址存储器
    以进行安全检查,将一个程序能够使用的内存限定在一个逻辑范围内

连续内存碎片

内存空间不能被利用:

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

连续内存分区的动态分配:

os需要管理整个空闲与非空间的内存空间。

首次适配算法:


找到第一块能够容下当前分配的空闲地址空间。
实现:按照顺序去排序内存块,分配较慢,重分配需要合并与相邻的空闲分区。
优势:易于产生更大空闲块。
劣势:容易产生外部碎片,不确定性。

最优适配算法:


找到刚好大于当前分配的空闲地址空间。
实现:按照内存大小区排序内存块,分配较慢,重分配需要合并与相邻的空闲分区。
优势:避免了拆散大的分配块。
劣势:存在大量小的外部碎片,重分配慢。

最差适配算法:


找到最大的空闲块进行分配。
实现:按照尺寸排序空闲块,分配很快,重分配需要合并与相邻的空闲分区。
优势:避免产生太多微小的碎片,假如都是中等尺寸效果是最吼的。
劣势:重分配慢,产生外部碎片,易于破坏大的空闲块。

减小碎片的方法

压缩式碎片整理


大家一起挤一挤,把空闲的块整理出来。但是可以想象,有非常大的开销。

交换式碎片整理

内存不够了,大家挤一挤也挤不出足够的空间。
一个在等结果的程序先出去,到disk当中,释放出空间来给程序。
当然后面若程序有结果了,还要再回来的。

posted @ 2020-10-16 12:11  HermioneGranger  阅读(179)  评论(0)    收藏  举报