当前位置: 首页 > news >正文

虚拟内存管理--请求分页管理方式

1. 核心思想

        请求分页是虚拟内存的典型实现,基于基本分页管理,增加请求调页(按需调入页面)和页面置换(内存不足时换出页面)功能,仅将当前需用页面装入内存,实现“部分装入、动态调度”。


2. 页表机制(扩展页表项)

在基本分页页表项基础上,新增4个字段支持虚拟内存:

字段

作用

状态位(P)

标记页面是否在内存(1=在内存,0=在外存)。

访问字段(A)

记录页面近期访问次数或未访问时间(供置换算法选择淘汰页)。

修改位(M)

标记页面是否被修改(1=修改过,换出时需写回外存;0=未修改,直接丢弃)。

外存地址

页面在外存(如磁盘)的存放地址(供请求调页时读取)。


3. 缺页中断机构

当访问的页面不在内存(状态位P=0)时,触发缺页中断,处理流程如下:

1、中断处理:保护CPU环境 → 转入缺页中断处理程序 → 阻塞当前进程(放

2、内存检查

  1. 有空闲页框:分配页框,从外存调入页面 → 更新页表(P=1,物理块号,A=1)。
  2. 无空闲页框:启动页面置换算法选择淘汰页 → 若淘汰页M=1,写回外存 → 调入新页面,更新页表。

 3、恢复执行:唤醒进程(放回就绪队列),重新执行被中断指令。

缺页中断的特殊性

  • 内部异常:在指令执行期间产生(而非指令执行后)。
  • 多次中断:一条指令可能触发多次缺页(如访问数组的多个页面)。

4. 地址变换机构 

在基本分页地址变换基础上,增加缺页中断处理和页面置换逻辑,步骤如下:

  1. 先检索快表,若命中,则从相应表项中取出该页的物理块号,并修改页表项中的访问位,以供置换算法换出页面时参考。对于写指令,还需要将修改位置为1。
  2. 若快表未命中,则要到页表中查找,若找到,则从相应表项中取出物理块号,并将该页表项写入快表,若快表已满,则需采用某种算法替换。
  3. 若在页表中未找到,则需要进行缺页中断处理,请求系统将该页从外存换入内存,页面被调入内存后,由操作系统负责更新页表和快表,并获得物理块号。
  4. 利用得到的物理块号和页内地址拼接形成物理地址,用该地址去访存。

访存次数

  • 快表命中:1次访存。
  • 快表未命中但页面在内存:2次访存(查页表+访存)。
  • 缺页:多次访存(外存读页+更新页表+快表+访存)。

5. 请求分页 vs 基本分页

对比项

基本分页

请求分页

内存装入

全部页面装入内存

仅需装入当前需用页面(部分装入)

页表字段

仅物理块号

新增状态位、访问位、修改位、外存地址

核心功能

地址映射(逻辑→物理)

地址映射+请求调页+页面置换

适用场景

物理内存管理

虚拟内存管理(逻辑扩充内存)


核心考点 📌

  1. 页表扩展字段:状态位(P)判断是否缺页,修改位(M)决定是否写回外存。
  2. 缺页中断处理流程:中断→检查空闲页框→调页/置换→更新页表→恢复执行。
  3. 地址变换步骤:快表→页表→缺页中断→物理地址,注意快表未命中和缺页的不同处理。
  4. 缺页中断的特殊性:指令执行中产生,可能多次触发。

总结

        请求分页通过“按需调页”和“页面置换”,结合局部性原理,实现了内存的逻辑扩充,是虚拟内存最核心的实现方式。其关键在于扩展页表项记录页面状态、通过缺页中断动态调度页面,以及高效的地址变换机制(快表+页表)。

一句话记忆:请求分页按需调,缺页中断动态补,页表扩展状态位,地址变换快表助! ✨

http://www.dtcms.com/a/282117.html

相关文章:

  • 15.dispatcherRunner启动
  • 图机器学习(10)——监督学习中的图神经网络
  • LLM大语言模型不适合统计算数,可以让大模型根据数据自己建表、插入数据、编写查询sql统计
  • ether.js的calldata
  • 探索阿里云DMS:解锁高效数据管理新姿势
  • 【WRFDA数据教程第一期】LITTLE_R 格式详细介绍
  • 常用 Benchmark 总结-GPT 4.1、GPT 4.5、DeepSeek模型
  • 【游戏引擎之路】登神长阶(十七):Humanoid动画——长风破浪会有时,直挂云帆济沧海
  • 联网工人安全解决方案:技术赋能下的安全新范式
  • Django REST Framework 入门指南:从 0 到 1 实现 RESTful API
  • 【LLM】OpenRouter调用Anthropic Claude上下文缓存处理
  • cudaOccupancyMaxActiveBlocksPerMultiprocessor配置内核的线程块大小
  • Linux运维新手的修炼手扎之第18天
  • 二刷 黑马点评 分布式锁-redission
  • 【芯片设计中的WDT IP:守护系统安全的电子警犬】
  • HDFS基本操作训练(创建、上传、下载、删除)
  • CSS面试题及详细答案140道之(21-40)
  • 智租换电与中国电信达成战略合作!共筑数字能源新基建
  • LeetCode|Day15|125. 验证回文串|Python刷题笔记
  • GaussDB 预写日志回收参数设置
  • Uniapp中双弹窗为什么无法显示?
  • Java虚拟机——JVM
  • uniapp各端通过webview实现互相通信
  • UniApp 多端人脸认证图片上传实现
  • AI Agent:重构智能边界的终极形态——从技术内核到未来图景全景解析
  • uniapp写好的弹窗组件
  • 【uni-ui】hbuilderx的uniapp 配置 -小程序左滑出现删除等功能
  • kafka3.6下载安装(传统架构/KRaft模式)+实例测试
  • uniapp小程序实现地图多个标记点
  • 《设计模式之禅》笔记摘录 - 7.中介者模式