考点频率★★★★★选择题必考也是理解页面置换算法的基础难度⭐⭐⭐建议理解局部性原理是虚拟存储的理论基础掌握缺页中断的完整处理流程1️⃣ 为什么需要虚拟存储之前讨论的页式/段式存储管理有一个共同前提程序的全部代码和数据必须一次性装入内存才能运行。这带来了两个问题程序大小受限于物理内存如果程序大于物理内存就无法运行内存利用率低程序运行时往往只有部分代码和数据被频繁使用如错误处理代码、初始化代码在运行后不再需要虚拟存储的解决思路程序不需要全部装入内存只需要将当前运行需要的部分装入内存其余部分存放在磁盘上需要时再调入。类比读一本很厚的书不需要把整本书一次性全背下来只需要把当前要读的几页放在桌上读完了再换下一页。虚拟存储管理可以基于页式虚拟页式或段式虚拟段式来实现软考中主要考查虚拟页式存储。2️⃣ 局部性原理——虚拟存储的理论基础局部性原理是虚拟存储能够高效工作的理论依据。程序在运行过程中其访问行为表现出两种局部性时间局部性如果一个内存位置被访问那么它在不久的将来很可能再次被访问。典型例子循环体中的代码、被反复调用的函数、被频繁访问的计数器变量空间局部性如果一个内存位置被访问那么它附近的位置也很可能被访问。典型例子数组的顺序遍历、顺序执行的指令序列、结构体中的成员变量正是因为局部性原理虚拟存储系统只需要把当前需要的少量页面放入内存就能获得较高的命中率页面在内存中的比例高。3️⃣ 虚拟页式存储的核心机制3.1 页表项新增字段虚拟页式存储的页表在普通页表的基础上增加了以下关键字段字段作用存在位有效位标记该页当前是否在物理内存中1在内存0在外存访问位引用位记录该页最近是否被访问过用于页面置换算法修改位脏位记录该页是否被修改过换出时判断是否需要写回磁盘外存地址该页在磁盘上的存放位置换入时使用3.2 地址转换流程带缺页处理程序给出逻辑地址 ↓ 提取页号和偏移量 ↓ 查页表 → 检查存在位 ↓ 存在位1 → 页框号 偏移 → 物理地址正常访问 ↓ 存在位0 → 触发缺页中断 → 操作系统处理缺页4️⃣ 缺页中断Page Fault缺页中断是指当CPU访问的页面不在物理内存中时由硬件触发的中断。操作系统在中断处理程序中负责从磁盘将缺失的页面调入内存。4.1 缺页中断的完整处理流程触发缺页CPU访问的逻辑页不存在于物理内存中硬件触发缺页中断保存现场操作系统保存当前进程的CPU上下文寄存器、程序计数器等查找空闲页框在物理内存中查找空闲页框页面置换如果内存已满选择一页换出到磁盘根据页面置换算法磁盘I/O从磁盘中读取缺失的页面到分配的页框中更新页表修改页表项将存在位设为1记录页框号恢复现场恢复被中断进程的CPU上下文重新执行进程重新执行引发缺页的那条指令此时页面已在内存中一次缺页中断会触发一次磁盘I/O而磁盘I/O的速度比内存访问慢几个数量级因此缺页中断的代价非常高——这也是页面置换算法和TLB能极大提升系统性能的根本原因。4.2 缺页中断与普通中断的区别对比项普通中断缺页中断触发原因I/O完成、时钟中断等外部或内部事件访问的页面不在内存中发生时间指令执行完成后指令执行过程中地址转换时处理完成后返回原指令下一条执行重新执行原指令因为页面已调入是否涉及磁盘I/O通常不涉及通常涉及从磁盘读页处理时间微秒级毫秒级磁盘I/O主导5️⃣ 经典例题例题1以下关于局部性原理的叙述中正确的是 。A. 时间局部性是指程序访问了某个数据后不久后会访问它附近的数据B. 空间局部性是虚拟存储管理的唯一理论依据C. 循环结构体现了时间局部性D. 数组的随机访问体现了空间局部性解析A描述的是空间局部性B错误虚拟存储的依据是时间局部性和空间局部性两者D错误随机访问不体现空间局部性顺序访问才体现。C正确循环中的代码反复执行体现了时间局部性。选C。例题2缺页中断处理完成后操作系统应该 。A. 从下一条指令开始继续执行B. 重新执行引发缺页的那条指令C. 终止当前进程D. 调度下一个进程解析缺页中断处理完成后操作系统恢复现场并重新执行引发缺页的那条指令此时页面已在内存中可以正常完成。选B。例题3判断发生缺页中断时系统一定存在空闲页框。 解析错误。缺页中断发生时物理内存可能已经满了此时需要通过页面置换算法换出一页腾出空闲页框。6️⃣ 记忆口诀虚拟存储靠局部时间空间两局部。缺页中断代价高磁盘I/O最耗时。处理完恢复现场重新执行原指令。7️⃣ 小测验评论区对答案某虚拟页式存储系统中CPU访问某逻辑页时发现该页不在内存中此时会触发 。操作系统处理完成后应该 。A. 缺页中断从下一条指令继续执行B. 缺页中断重新执行该指令C. 越界中断从下一条指令继续执行D. 越界中断重新执行该指令本专栏日更2篇点击头像 → 专栏《软考中级高频考点》订阅第一时间接收新内容#软考中级 #软件设计师 #虚拟存储 #局部性原理 #缺页中断 #操作系统