3.1 计算机体系结构及内存分层体系

image-20200417165432213

操作系统结构

  • CPU:完成基本的对程序或软件的控制

  • 内存:放置程序代码和他处理的数据

    image-20200417170005686

  • 外设

操作系统功能

image-20200417170232005

操作系统管理内存的方法

  • 程序重定位
  • 分段
  • 分页
  • 虚拟内存
  • 按需分页虚拟内存

3.2 地址空间和地址生成

地址空间定义

  • 物理地址空间 — 硬件支持的地址空间(主存和磁盘
  • 逻辑地址空间— 一个运行程序所拥有的内存范围(一维的线性空间)

地址生成

  • 逻辑地址的生成

image-20200417171957066

  • 物理地址的生成

    CPU方面

    1. 计算器需要在逻辑地址的内存内容
    2. 内存管理单元寻找在逻辑地址和物理地址之间的映射
    3. 控制器从总线发送在物理地址的内存内容的请求

    内存方面

    1. 内存发送物理地址内存的内容给CPU

    操作系统方面

    1. 建立逻辑地址和物理地址之间的映射

地址安全检查

3.3 连续内存分配

内存碎片问题

当我们给正在运行的程序分配空间之后,会出现一些空闲的空间(碎片)不能被利用

  • 外部碎片

    在分配单元未使用的内存(程序空间之间的碎片)

  • 内部碎片

    在分配单元的未使用内存(在分配给程序的空间内部出现的碎片)

分区的动态分配

  • 简单的内存管理方法:
    • 当一个程序准许运行在内存中时,分配一个连续的区间
    • 分配一个连续的内存区间给运行的程序以访问数据
第一适配
  • 找到第一个满足需求的空闲块立马返回

image-20200417183628752

  • 优点:
    • 简单
    • 易于产生更大的空闲块,向着地址空间的结尾
  • 缺点
    • 容易产生外部碎片
    • 不确定性
最佳适配
  • 寻找空间中最满足需求的空闲块

image-20200417183554657

  • 优点:
    • 大部分分配是小尺寸时非常有效
    • 比较简单
  • 缺点:
    • 分配时需要先将空闲块按大小排序进行查找,降低效率
    • 易产生很多没怎么用的微小碎片
最差适配
  • 寻找空间中大小最不匹配的空闲块

image-20200417183701187

  • 优点:
    • 分配是中等尺寸时效果最好
  • 缺点:
    • 效率降低
    • 容易破碎大的空闲块导致大分区无法被分配

压缩式碎片整理

  • 重置程序以合并孔洞,要求所有程序是 动态可重置的

image-20200417184612553

  • 何时重置?
  • 开销如何?

交换式碎片整理

  • 运行程序需要更多的内存,抢占等待的程序并回收他们的内存

image-20200417184629751

  • 选择哪些程序进行交换?
  • 何时进行?