基础概念

相关提炼内容见 memory-management

  • 内存管理的功能
    • 内存空间的分配与回收
    • 地址转换
    • 内存空间的扩充
    • 存储保护

3.1.1 内存管理的基本原理和要求

  • 程序装入和链接
    • 步骤
      • 编译
      • 链接
      • 装入
    • 程序的链接方式
      • 静态链接
      • 装入时动态链接
      • 运行时动态链接
    • 内存的装入
      • 绝对装入
      • 可重定位装入
      • 动态运行时装入 或 动态重定位
  • 逻辑地址空间与物理地址空间
    • 相对地址(逻辑地址)
    • 地址重定位
  • 内存保护
    • 设置一对上、下限寄存器

3.1.2 覆盖与交换(不要求)

3.1.3 连续分配管理方式

  • 单一连续分配
    • 有内部碎片
  • 固定分区分配
    • 分区大小相等
    • 分区大小不等
    • 存在两个问题
      • 程序过大放不进任何一个分区中
      • 主存利用率低,称为内部碎片
  • 动态分区分配(可变区分配)
    • 外部碎片
    • 紧凑(compaction)技术来解决外部碎片问题
    • 首次适应算法 First Fit
    • 最佳适应算法 Best Fit
    • 最坏适应算法 Worst Fit
    • 邻近适应算法 Next Fit

3.1.4 非连续分配管理方式

基本分页存储管理方式

  • 分页存储的几个基本概念
    • 页面和页面大小
      • 进程中的块称为页(Page)
      • 内存中的块称为页框(Page Frame,或页帧)
      • 外存直接称为块(Block)
    • 地址结构
    • 页表
      • 实现从页号到物理块号的地址映射
  • 基本地址变换机构
    • 页表寄存器(PTR)
    • 过程
      • 设页面大小为 L,逻辑地址为 A,物理地址为 E
      • 页号 P = L/A;页内偏移量 W = A%L
      • 比较页号 P 与页面长度 M,若 P≥M 则产生越界中断
      • 页表中页号 P 对应的页表项地址 = 页表始址 F + 页号 P × 页表项长度,取出该页表项内容 b,即物理块号
      • 计算 物理地址 E = b × L + W
  • 具有快表的地址变换机构
    • 高速缓冲存储器——快表(相联存储器 TLB),主存中的页表常称为慢表
    • 基于局部性原理
  • 两级页表
    • 顶级页表最多只能有一个页面
    • 10 位一级页号 + 10 位二级页号 + 12 位页内偏移
  • 基本分段存储管理方式
    • 分段
    • 段表
    • 地址变换机构
      • 逻辑地址 A = 前面部分的段号 S + 后面部分的段内偏移 W
      • 段表中段号 S 对应的段表项地址 = 段表始址 F + 段号 S × 段表项长度
      • 去除段表项中该段的始址 b,物理地址 E = b + W
    • 段的共享和保护
  • 段页式管理方式
    • 段号
    • 页号
    • 页内偏移量
    • 在一个进程中,段表只有一个,而页表可能有多个
    • 段页式管理的地址空间是二维的