基础概念
相关提炼内容见 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
- 段的共享和保护
- 段页式管理方式
- 段号
- 页号
- 页内偏移量
- 在一个进程中,段表只有一个,而页表可能有多个
- 段页式管理的地址空间是二维的