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

操作系统(7)虚拟内存-缓存工具-页命中和缺页(3)

7.1页命中

页命中(Page Hit)是虚拟内存管理中的核心概念,指程序访问的虚拟页已加载到物理内存中,可直接通过内存管理单元(MMU)完成地址映射并访问数据,无需触发缺页异常或硬盘 IO 操作。它是衡量虚拟内存缓存效率的关键指标,直接影响程序运行速度。

页命中的本质是 “虚拟内存缓存的有效利用”,其判定需满足两个条件:

  1. 虚拟页已映射:程序访问的虚拟页,在页表中对应的页表项(PTE)“有效位(Valid)” 为 1,表明该虚拟页已关联物理内存中的物理页;
  2. 无需额外加载:无需从硬盘的交换分区 / 交换文件中加载虚拟页,可直接通过 MMU 将虚拟地址转换为物理地址,访问物理内存中的数据。

7.2 页命中的完整流程

以 “程序访问变量对应的虚拟地址” 为例,页命中的实现需经过 4 个步骤,全程由硬件(CPU、MMU)快速完成,无软件(操作系统)干预:

  1. 虚拟地址拆分CPU 接收程序发起的虚拟地址访问请求,自动将虚拟地址拆分为 “虚拟页号(VPN)” 和 “页内偏移(Offset)”(如 32 位 4KB 页,高 20 位为 VPN,低 12 位为 Offset)。

  2. TLB 查询(优先缓存检查)MMU 先查询内置的 “快表(TLB)”—— 这是存储最近使用的 “VPN - 物理页号(PPN)” 映射的高速缓存。若 TLB 中存在该 VPN 的有效映射(TLB 命中),直接提取对应的 PPN,跳过后续页表查询,加速地址转换。

  3. 页表查询(映射有效性验证)若 TLB 未命中(少见,因 TLB 命中率通常>90%),MMU 再根据 VPN 查询进程的页表:

    • 若页表项 “有效位” 为 1,表明虚拟页已在物理内存中(页命中),提取 PPN,并将该 “VPN-PPN” 映射写入 TLB(供后续访问复用)。
  4. 物理地址访问MMU 将提取的 PPN 与页内偏移拼接,生成物理地址,CPU 通过该地址直接访问物理内存中的数据,完成一次页命中的访问流程。

流程特点:全程无操作系统干预,仅需硬件级操作(纳秒 / 微秒级),访问延迟极低,与直接访问物理内存速度接近。

7.3 页命中总结

页命中是虚拟内存缓存机制 “生效” 的标志,其本质是 “程序访问的虚拟页已在物理内存中,可快速访问”。它受物理内存容量、程序局部性、页大小、置换算法影响,直接决定程序的访问延迟与运行效率。理解页命中的逻辑与优化方向,是排查虚拟内存性能问题(如硬盘 IO 过高、程序卡顿)、优化系统资源利用率的关键。

缺页

7.4 缺页

缺页是虚拟内存管理中的核心场景,指程序访问的虚拟页未加载到物理内存中(页表项有效位为 0),无法直接通过 MMU 完成地址映射,必须触发 “缺页异常”,由操作系统介入将虚拟页从硬盘(交换分区 / 交换文件)加载到物理内存后,才能继续访问。它是虚拟内存突破物理内存限制的关键机制,但会因硬盘 IO 产生访问延迟。

缺页的本质是 “虚拟内存缓存的缺失”,需同时满足两个条件:

  1. 虚拟页未映射物理内存:程序访问的虚拟页,对应的页表项(PTE)“有效位(Valid)” 为 0,表明该虚拟页未关联物理内存中的物理页;
  2. 虚拟页需从后备存储加载:未映射的虚拟页通常有两种情况 —— 一是进程未使用过的虚拟地址(如未分配的内存区域),二是已使用但因物理内存不足被置换到硬盘的虚拟页(需从交换分区 / 文件加载)。只有第二种情况属于 “需处理的缺页”,第一种情况会触发 “地址错误异常”(非法访问),直接终止程序。

7.5缺页的完整处理流程

缺页发生后,需硬件(CPU/MMU)与软件(操作系统)协同处理,全程分为 5 个核心步骤,涉及异常中断、物理内存分配、硬盘 IO 等操作:

1. 触发缺页异常

MMU 查询页表时,发现目标虚拟页的页表项有效位为 0,且该虚拟页属于进程合法地址空间(非非法访问),随即向 CPU 发送 “缺页异常” 信号,暂停当前进程的执行,切换到操作系统内核态(由内核处理异常)。

2. 定位缺页的后备存储地址

操作系统内核通过页表项查询该虚拟页的 “交换信息”:

  • 若虚拟页曾映射物理内存(因内存不足被置换),页表项的 “交换位” 为 1,且记录了该虚拟页在硬盘交换分区 / 交换文件中的存储地址;

  • 若虚拟页是进程首次访问的合法地址(如动态分配的内存),操作系统直接在交换分区为其分配后备存储空间,并记录地址。

3. 分配物理页(若物理内存已满则先置换)

操作系统需为缺页分配物理内存中的空闲物理页,分两种情况处理:

  • 物理内存有空闲:直接从 “物理页空闲池” 中分配一个物理页,记录其物理页号(PPN);

  • 物理内存已满:执行 “页面置换”—— 通过页面置换算法(如 LRU、Clock)选择物理内存中 “最不活跃” 的虚拟页,将其数据写回硬盘(若页表项 “脏位” 为 1,需写入新数据;脏位为 0 则直接丢弃),释放该物理页,再分配给当前缺页。

4. 加载缺页到物理内存(硬盘 IO 操作)

操作系统通过硬盘控制器,将缺页在交换分区 / 文件中的数据读取到刚分配的物理页中。这是整个流程中耗时最长的步骤 —— 硬盘 IO 延迟约为 10 毫秒(物理内存访问仅需 100 纳秒),延迟相差 10 万倍。

5. 更新页表与恢复进程执行

  • 操作系统更新页表项:将物理页号(PPN)写入页表项,设置 “有效位” 为 1,重置 “脏位”“引用位”(脏位设为 0,引用位设为 1),完成虚拟页到物理页的映射;
  • 切换回用户态:恢复被暂停进程的执行上下文(如 CPU 寄存器值),让进程重新发起本次虚拟地址访问 —— 此时虚拟页已在物理内存中,会触发 “页命中”,顺利完成数据访问。

7.6缺页的核心分类

根据缺页的触发原因与处理方式,可分为两类常见类型,其处理成本与系统影响存在显著差异:

类型触发原因处理流程处理成本(延迟)
主要缺页(Major Page Fault)缺页需从硬盘的交换分区 / 交换文件加载数据(虚拟页曾被置换到硬盘)。需执行页面置换 + 硬盘 IO + 页表更新,涉及硬盘操作。高(约 10 毫秒)
次要缺页(Minor Page Fault)缺页的物理页已存在(如进程共享库的代码页已被其他进程加载到物理内存,或物理页已分配但未映射),无需从硬盘加载。仅需更新页表项(关联已存在的物理页),无硬盘 IO。低(约 1 微秒)

示例:多个进程同时运行同一浏览器,浏览器的代码段虚拟页只需加载一次到物理内存,后续进程访问该虚拟页时触发 “次要缺页”,直接复用物理页,无需重复从硬盘加载。

7.7缺页总结

缺页是虚拟内存突破物理内存限制的 “必要代价”—— 它通过 “硬盘作为后备存储” 实现了 “大程序运行在小内存”,但会因硬盘 IO 产生延迟。理解缺页的处理流程、分类与影响因素,是排查虚拟内存性能问题(如内存抖动、IO 过高)、优化系统与程序效率的关键。实际应用中,需通过 “硬件扩容 + 软件优化” 平衡缺页频率,在 “内存成本” 与 “程序性能” 间找到最优解。

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

相关文章:

  • 旧衣回收小程序的技术架构与商业落地:开发者视角的全链路解析
  • 丽水建设网站织梦网站发布的哪些产品和文章放在a文件可以吗
  • 南京网站设计公司济南兴田德润优惠吗泉州定制网站建设
  • 【设计模式笔记10】:简单工厂模式示例
  • wordpress多站批量发布wordpress 图像描述
  • 永宝网站建设招聘信息松江做移动网站
  • 云手机 基于云计算的虚拟手机
  • 广州网站制作哪家专业网站开发分为哪几种类型
  • server 2012 做网站常州市新北区建设与管理局网站
  • 百度的网站网址做网站所用的工具
  • 网站统计功能设计旭泽建站
  • 网站建设心得8000字权威发布图片红字
  • 阿里做网站重庆市住房和城乡建设人才促进网
  • 个人业务网站教程合肥响应式网站建设方案
  • 广州建站业务公司亚马逊 wordpress
  • 北京知名网站建设wordpress二开
  • 做公众号要不要有自己的网站网站开发seo要求
  • 旅游网站ppt应做的内容上海猎头公司名单
  • 网站建设提案天空人体网站怎么做
  • 建设网站一般要多钱建设小说网站小说源
  • 东莞长安网站湖北网站建设的释义
  • 合肥地区建网站公司网站做多个页面
  • 如何查企业做网站是否备案过网站免费建立
  • 大连网站设计报价微信开店哪个平台好
  • 3 建设营销型网站流程西安百度关键词优化排名
  • 学校网站建设意义有哪些免费咨询的英文
  • 网站怎么在微博推广急求一张 网站正在建设中的图片
  • 网站定制文章列表项怎么做站长之家ppt模板
  • 百度网站制作公司学校网站建设情况
  • 哪个做企业网站网站数据报表