一、存储管理
1. 存储管理考点
- 重点内容:虚拟存储管理和页面置换算法是核心考点,分页/分段/段页式存储管理考查较少且题目简单
2. 基本概念
1)存储器层次结构
- 层次关系:寄存器 → L1高速缓存 → L2高速缓存 → 主存 → 磁盘存储器 → 磁带/光盘存储器
- 特性对比:从上到下存取速度递减(寄存器最快)、存储容量递增、价格递减
2)逻辑地址
- 定义:程序员使用的符号命名地址(如a13),又称虚拟地址/相对地址
- 特点:非主存真实地址,仅作为编程时的虚拟标识
3)物理地址
- 定义:主存中真实存在的绝对地址(如0000H)
- 编址方式:按字节编制,每个存储单元有唯一地址
4)地址重定位
- 转换过程:将程序的逻辑地址转换为物理地址
- 静态重定位:
- 时机:程序装入主存时一次性完成转换
- 特点:运行期间地址不再变化
- 动态重定位:
- 时机:程序运行期间动态转换
- 特点:更灵活但需要硬件支持
3. 分区存储管理
1)基本概念
- 核心思想:将主存划分为若干区域,每个区域分配给一个作业使用
- 固定分区
- 分配方式:系统初始化时预先划分好存储区域
- 缺点:
- 分区大小固定(如10KB/区)
- 作业大小与分区不匹配时产生内部碎片(如8KB作业占用10KB分区)
- 可变分区
- 分配方式:作业装入时动态划分存储空间
- 特点:
- 分区大小等于作业实际需求
- 需要配合分配算法(最佳适应/最差适应等)
- 问题:长期运行会产生外部碎片
- 可重定位分区
- 核心机制:允许已分配分区在内存中移动
- 优势:通过碎片整理(类似"靠拢"操作)合并小碎片为大可用空间
应用场景:解决外部碎片问题,提高内存利用率
- 注:本笔记严格依据课程内容整理,未包含后续未讲解的存储管理方案(如分页/分段存储),所有时间戳与幻灯片内容均保持对应关系。重点突出了存储器层次特性、地址转换机制以及三种分区方式的对比特征。
4. 分页存储管理
1)分页存储管理原理
- 空间划分:
- 进程地址空间被划分为大小相等的区域称为页
- 主存空间被划分为与页大小相同的物理块(页框)
- 例如:1MB内存划分为1024个1KB的块
- 分配方式:
- 进程的页可以离散地装入不相邻的物理块中
- 如:第0页放入第2块,第1页放入第4块,第2页放入第5块等
- 页表作用:
- 记录页号与物理块号的映射关系
- 系统为每个进程建立页表,确保能快速找到页面对应的物理块
- 地址结构:
- 逻辑地址由页号和页内地址组成
- 类比书本:页号相当于书页号,页内地址相当于页内行号
- 不同进程的页大小可以不同(如进程A每页1KB,进程B每页2KB)
2)页式存储管理的地址映射
- 转换步骤:
- 通过页表始址寄存器找到页表起始位置
- 用页表长度寄存器检查页号是否越界(页号<页表长度)
- 通过页号在页表中查找对应的物理块号
- 将物理块号与页内地址拼接形成物理地址
- 示例说明:
- 逻辑地址4(页号)256(页内地址)
- 查页表得页号4对应块号15
- 最终物理地址为15(块号)256(页内地址)
- 实际系统中地址通常用二进制或十六进制表示
- 关键寄存器:
- 页表始址寄存器:存储页表在主存中的起始地址
- 页表长度寄存器:存储页表长度,用于地址越界检查
5. 分段存储管理
1)段式存储管理的地址变换
- 基本概念:将用户程序或作业的地址空间按内容划分为段,如主程序段、子程序段、数据段等,每个段的长度不等但占用连续分区。
- 存储分配:进程中的各个段可以离散地分配到主存的不同分区中,系统为每个进程建立段映射表(段表)。
- 段表结构:包含段号、段长L和基址三个字段,其中基址表示该段在主存中的起始地址。
- 地址转换步骤:
- 段号验证:比较逻辑地址中的段号s与段表长度L,若s≥L则发生地址越界
- 段表查询:通过段表起始地址找到对应段表项,获取段长和基址
- 段内地址验证:比较段内地址d与段长L,若d≥L则发生地址越界
- 物理地址计算:物理地址=基址+段内地址d
- 关键区别:
- 与分页的区别1:分段按内容划分,段长不等;分页按固定大小划分
- 与分页的区别2:地址转换时采用相加而非拼接方式
- 段表特殊性:需要同时存储段长和基址信息
- 转换示例:
- 逻辑地址(2,98)转换过程:
- 验证段号2有效
- 查询段表得段长100、基址90
- 验证段内地址98<100有效
- 计算物理地址90+98=188
- 逻辑地址(2,98)转换过程:
- 错误检测:
- 逻辑地址(4,100)错误原因:段内地址100>段长96
- 逻辑地址(3,300)转换结果:1327+300=1627
- 存储特点:
- 每段必须连续存放,但不同段可离散分配
- 段内地址不能跨段存储(如不能将一段分成两部分存放)
6. 段页式存储管理
1)段页式存储管理概念
- 存储划分方式:先将整个主存划分成大小相等的存储块(页框),然后将用户程序按逻辑关系分为若干个段,再将每个段划分成页。
- 实现过程:先分段再分页,例如主存空间被划分为12个页框,用户程序分为0段、1段、2段等,每段再划分为若干页(如0段有1页、2段有2页等)。
- 综合优势:结合了页式存储和段式存储的优点,既保持了段式管理的逻辑性,又具备页式管理的物理存储效率。
- 数据结构:需要同时维护段表和页表,其中段表记录段号、页表始址和页表长度,页表记录页号和物理块号的对应关系。
2)段页式存储管理的地址变换机构
- 逻辑地址结构:包含段号、段内页号和页内地址三部分。
- 地址转换过程:
- 通过段号在段表中查找对应的页表始址和页表长度
- 根据页表始址找到页表,再通过页号在页表中查找物理块号
- 将物理块号与页内地址拼接形成物理地址
- 特点:需要进行两次查表操作(段表和页表),但最终物理地址的页内地址部分直接取自逻辑地址。
7. 虚拟存储管理
1)程序局部性原理
- 基本概念:程序执行时呈现的局部性规律,即在一段时间内程序的执行和访问都局限于某个区域。
- 时间局限性:
- 某条指令执行后,不久很可能再次被执行
- 某个存储单元被访问后,不久很可能再次被访问
- 空间局限性:程序访问某个存储单元后,其附近的存储单元也最有可能被访问
- 应用意义:为虚拟存储技术提供了理论基础,使得部分装入成为可能。
2)虚拟存储器
- 实现原理:
- 允许作业部分装入主存即可运行
- 其余部分暂存磁盘,需要时再装入
- 效果:小容量主存可运行大作业,从用户角度看系统具有比实际更大的主存容量
- 工作示例:程序可分为多个部分,先装入当前执行部分,其余保留在外存,根据局部性原理预测并预装入可能需要的部分。
8. 请求分页系统的实现
- 核心功能:在纯分页基础上增加请求调页和页面置换功能,实现动态页面加载与替换
- 中断机制:当访问的页面不在主存时触发缺页中断,每缺失一页产生一次中断
- 动态特性:内存物理块与用户空间页的对应关系可动态变化,不常用的页可被置换出去
1)例题:缺页中断次数判断
- 题目解析
- 审题要点:COPY指令跨2页,源地址A和目标地址B各跨2页,共涉及6个页面
- 第一问解析:当A、B操作数均不在内存时,访问每个缺失页面都会触发中断,共4次(指令页已在内存)
- 第二问解析:总页面数6减去缺页中断次数3,得到3个页面已在内存
- 记忆技巧:缺页中断次数=缺失页面数,内存页面数=总页面数-缺页次数
9. 页面置换算法
1)最佳置换算法
- 原理:选择未来最长时间不被访问或永不使用的页面置换
- 特点:理论最优但实际不可实现,需要预知未来访问序列
- 局限性:实践中无法准确判断哪些页面将来不再使用
2)先进先出置换算法
- 置换规则:优先淘汰最早进入内存的页面(停留时间最长)
- 实现方式:维护页面进入队列,置换队首页面
- 优缺点:实现简单但可能淘汰常用页面,存在Belady异常现象
3)最近最少未使用算法
- 置换策略:淘汰最近一段时间使用频率最低的页面
- 实现机制:为每个页面设置访问时间字段T,选择T最大的页面置换
- 硬件需求:需要额外硬件支持记录访问时间,开销较大
4)最近未用置换算法
- 访问位机制:每个页面设置1位标志,1表示访问过,0表示未访问
- 置换原则:优先选择访问位为0的页面置换
- 近似LRU:通过访问位模拟使用频率,比精确LRU实现成本更低
- 性能特点:未访问页面未来被访问概率较低,置换风险较小
二、知识小结
知识点 | 核心内容 | 考试重点/易混淆点 | 难度系数 |
存储器层次结构 | 寄存器→高速缓存→主存→磁盘→磁带/光盘,速度递减容量递增 | 寄存器最快容量最小 vs 外存最慢容量最大 | ★★☆☆☆ |
地址重定位 | 逻辑地址(虚拟)→物理地址转换,分静态重定位(装入前完成)和动态重定位(运行时转换) | 静态不可变 vs 动态可调整 | ★★★☆☆ |
分区存储管理 | 固定分区(预分配)、可变分区(动态分配)、可重定位分区(碎片整理) | 可变分区产生外部碎片 vs 固定分区内部碎片 | ★★★☆☆ |
分页存储管理 | 进程分等长页→内存分等长块,通过页表映射,地址=页号+页内偏移 | 页表寄存器作用、快表(TLB)加速查询 | ★★★★☆ |
分段存储管理 | 按逻辑模块分段(长度不等),段表含基址+段长,地址=段号+段内偏移 | 段内地址需校验≤段长 | ★★★★☆ |
段页式存储 | 先分段再分页,需段表+页表两次查询,地址=段号+段内页号+页内偏移 | 综合分段分页优缺点 | ★★★★★ |
虚拟存储原理 | 局部性原理(时间/空间局部性),部分装入+缺页中断机制 | 缺页中断次数=缺失页面数 | ★★★★☆ |
页面置换算法 | OPT(理想)/FIFO/LRU(时间戳)/Clock(访问位) | LRU需硬件支持 vs FIFO可能Belady异常 | ★★★★☆ |
缺页中断计算 | 跨页指令+操作数涉及页面数=最大中断次数,例题:copy指令产生4次中断 | 操作数不在内存即触发中断 | ★★★★★ |