初始状态:虚拟页未映射到物理内存
- 虚拟页和页表项的索引是对应的,比如下面虚拟页5,查找的就是页表项5,页表项5里面包含PFN(物理页框号)和一些标志位。
步骤 1:触发页缺失异常
- 进程访问虚拟页 X(VPN=5),CPU 通过页表查询发现有效位 = 0,触发页缺失中断,暂停进程执行,切换到内核态。
[中断触发] → 操作系统内核接管处理
步骤 2:查找虚拟页在磁盘中的位置
- 操作系统读取页表项 5 的 “磁盘位置” 字段(0x1234),定位到虚拟页 X 在磁盘中的存储块。
页表项5 → 提取磁盘地址0x1234 → 定位磁盘块0x1234
步骤 3:分配空闲物理页框
- 操作系统从物理内存中找到一个空闲的物理页框(如 PFN=3),标记为 “已占用”。
步骤 4:从磁盘加载数据到物理页框
- 通过 DMA(直接内存访问)将磁盘块 0x1234 的数据传输到物理页框 3 中。
步骤 5:更新页表项
- 操作系统修改页表项 5 的信息:
- PFN设为 3(绑定到物理页框 3);
- 有效位设为 1(标记已在内存);
- 重置修改位 = 0、访问位 = 1(标记被访问)。
步骤 6:刷新 TLB 并恢复进程执行
- 操作系统刷新快表(TLB)中 VPN=5 的旧缓存(若有),将新的映射关系加载到 TLB。
- 中断处理结束,切换回用户态,进程从断点处继续执行,此时访问虚拟页 X 会直接命中物理页框 3。