操作系统笔记(九)内存管理

  • 进程管理回顾
  1. 本质:操作系统内核对物理CPU的虚拟,让每个进程以为自己独占了CPU。
  2. 类似的:内存管理的目的是提供一个虚拟接口,让每个进程以为自己独占了RAM。
  • 基本方法:
  1. 单用户,单任务:MS-DOS
    • 用户进程最大内存640K。
    • 问题:内存过小,如果应用程序需要更多内存怎么办
    • 解决方案:overlay。仅加载当前必须的代码和数据。
  2. 多任务
    • 问题:P1, P2都在运行,P1需要申请更多内存,但内存已经用完
    • 解决方案:swap(将P2临时交换到外存)。缺点:磁盘传输导致swap成本极高。
  • 重定位问题
  1. 源程序变成进程:源码 -> 目标文件 -> 可执行文件 -> 进程
  2. 概念:可执行文件(链接器实现地址绑定)使用地址为相对地址(逻辑地址),而进程需要绝对地址(物理地址)。
  3. 实现:内存管理单元(MMU)负责将逻辑地址和加载地址结合成物理地址。
  • 内存保护问题
  1. 概念:保护进程内存不被其他进程访问或破坏。
  2. 实现:MMU实现,在重定位之前检查limit register是否大于逻辑地址。
  • 内存分配问题
  1. 概念:管理内存的分配和回收。即动态内存分配问题。
  2. 可分配的内存空间:hole。分配内存则分配hole,回收内存则回收hole,涉及hole的合并。
  3. 外部碎片:分配回收导致较小的内存碎片 -> 解决方案:分配hole的策略(首次适应,最佳适应,最坏适应)
  4. 内部碎片:内存分块分配,导致分配给进程的内存大于进程所需,导致的碎片。

相关推荐