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

- CPU寄存器
- cache,包括L1,L2
- 主存
- 磁盘
形成了一个金字塔的结构,越靠近CPU速度越快、存储空间越小。
操作系统在内存管理中应该要完成的目标:
- 抽象:进程应该能够使用一段连续的内存,屏蔽了底层的细节,称之为逻辑地址空间。
- 保护:每个进程应该拥有自己独立地址空间,不能干扰别人干活。
- 共享:访问相同内存,进程之间也应该要可以互相传递数据。
- 虚拟化:暂时不用的数据可以放到disk当中,形成更多的地址空间。
地址空间以及地址生成

- 物理地址空间:硬盘、内存的地址空间,由硬件管理。
- 逻辑地址空间:程序能够看见的地址空间,是线性的。
CPU从逻辑地址取出内容的步骤如下:
- CPU内的ALU申请从逻辑地址取出内容。
- CPU内的内存管理单元MMU完成逻辑地址和物理地址的映射。
- CPU内的控制器向总线发出发送物理地址的请求。
- 内存发送物理地址上的内容到总线上。
确保程序的地址空间互补重叠,需要建立:
- 界限存储器
- 基地址存储器
以进行安全检查,将一个程序能够使用的内存限定在一个逻辑范围内
![]()
连续内存碎片
内存空间不能被利用:
- 外部碎片:在分配单元之间的未使用内存。
- 内部碎片:在分配单元内的未使用内存。
连续内存分区的动态分配:
os需要管理整个空闲与非空间的内存空间。
首次适配算法:

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

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

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

大家一起挤一挤,把空闲的块整理出来。但是可以想象,有非常大的开销。
交换式碎片整理
内存不够了,大家挤一挤也挤不出足够的空间。
一个在等结果的程序先出去,到disk当中,释放出空间来给程序。
当然后面若程序有结果了,还要再回来的。



浙公网安备 33010602011771号