分享好友 最新动态首页 最新动态分类 切换频道
【计算机操作系统-内存管理】-内存的缺页异常是什么?现在有逻辑地址,但是物理地址没有加载到内存会怎么样?
2024-12-26 07:05
  • VA:Virtual Address 虚拟地址
  • PA:Physical Address 物理地址
  • MMU:Memory Manage Unit 内存管理单元
  • TLB:Translation Lookaside Buffer 旁路快表缓存/地址变换高速缓存
  • PTE:Page Table Entry 分页表项

以32位的Linux系统为例,每个进程独立拥有4GB的虚拟地址空间,根据局部性原理没有必要也不可能为每个进程分配4GB的物理地址空间。

64位系统也是一样的道理,只不过空间寻址范围大了很多很多倍,进程的虚拟地址空间会分为几个部分

实际上只有程序运行时用到了才去内存中寻找虚拟地址对应的页帧,找不到才可能进行分配,这就是内存的惰性(延时)分配机制。

对于一个运行中的进程来说,不是所有的虚拟地址在物理内存中都有对应的页,如图展示了部分虚拟地址存在对应物理页的情况

虚拟地址空间根据固定大小一般是4KB进行划分,物理内存可以设置不同的页面大小,通常物理页大小和虚拟页大小是一样的,本文按照物理页4KB大小展开。

经过前面的分析,我们将面临一个问题如何将虚拟地址准确快速地映射到物理页呢

>>>高能预警 敲黑板 本段小结<<<
1. Linux的虚拟地址空间就是空头支票,看着很大但是实际对应的物理空间只有很少的一部分。

2.内存的惰性分配是个有效的机制,可以保证内存利用率和服务器利用率,是资源合理配置的方法。

3.大量的虚拟地址到物理地址的快速准确地查询转换是一个难题。

CPU并不直接和物理内存打交道,而是把地址转换的活外包给了MMU,MMU是一种硬件电路,其速度很快,主要工作是进行内存管理,地址转换只是它承接的业务之一。

一起看看MMU是如何搞定地址转换的。

a.MMU和Page Table

每个进程都会有自己的页表Page Table,页表存储了进程中虚拟地址到物理地址的映射关系,所以就相当于一张地图,MMU收到CPU的虚拟地址之后开始查询页表,确定是否存在映射以及读写权限是否正常,如图

对于4GB的虚拟地址且大小为4KB页,一级页表将有2^20个表项,页表占有连续内存并且存储空间大,多级页表可以有效降低页表的存储空间以及内存连续性要求,但是多级页表同时也带来了查询效率问题。

我们以2级页表为例,MMU要先进行两次页表查询确定物理地址,在确认了权限等问题后,MMU再将这个物理地址发送到总线,内存收到之后开始读取对应地址的数据并返回。

MMU在2级页表的情况下进行了2次检索和1次读写,那么当页表变为N级时,就变成了N次检索+1次读写。

可见,页表级数越多查询的步骤越多,对于CPU来说等待时间越长,效率越低,这个问题还需要优化才行。

>> 本段小结 敲黑板 划重点 <<
1.页表存在于进程的内存之中,MMU收到虚拟地址之后查询Page Table来获取物理地址。

2.单级页表对连续内存要求高,于是引入了多级页表,但是多级页表也是一把双刃剑,在减少连续存储要求且减少存储空间的同时降低了查询效率。

b.MMU和TLB的故事

MMU和TLB的故事就这样开始了…

CPU觉得MMU干活虽然卖力气,但是效率有点低,不太想继续外包给它了,这一下子把MMU急坏了。

MMU于是找来了一些精通统计的朋友,经过一番研究之后发现CPU用的数据经常是一小搓,但是每次MMU都还要重复之前的步骤来检索,害,就知道埋头干活了,也得讲究方式方法呀

找到瓶颈之后,MMU引入了新武器,江湖人称快表的TLB,别看TLB容量小,但是正式上岗之后干活还真是不含糊。

当CPU给MMU传新虚拟地址之后,MMU先去问TLB那边有没有,如果有就直接拿到物理地址发到总线给内存,齐活。

TLB容量比较小,难免发生Cache Miss,这时候MMU还有保底的老武器页表 Page Table,在页表中找到之后MMU除了把地址发到总线传给内存,还把这条映射关系给到TLB,让它记录一下刷新缓存。

TLB容量不满的时候就直接把新记录存储了,当满了的时候就开启了淘汰大法把旧记录清除掉,来保存新记录,彷佛完美解决了问题。

在TLB和Page Table加持之下,CPU感觉最近MMU比较给力了,就问MMU怎么做到的?MMU就一五一十告诉了CPU。

CPU说是个不错的路子,随后说出了自己的建议:TLB还是有点小,缓存不命中也是经常发生的,要不要搞个大的,这样存储更多访问更快

MMU一脸苦笑说道大哥TLB很贵的,要不你给涨点外包费?话音未落,CPU就说涨工资是不可能了,这辈子都不可能了。

>>>高能预警 敲黑板 本段小结<<<
1. CPU要根据用户进程提供的虚拟地址来获取真实数据,但是它并不自己做而是交给了MMU**。**

2. MMU也是个聪明的家伙,集成了TLB来存储CPU最近常用的页表项来加速寻址,TLB找不到再去全量页表寻址,可以认为TLB是MMU的缓存。

3. TLB的容量毕竟有限,为此必须依靠Page Table一起完成TLB Miss情况的查询,并且更新到TLB建立新映射关系。

设想CPU给MMU的虚拟地址在TLB和Page Table都没有找到对应的物理页帧或者权限不对,该怎么办呢

没错,这就是缺页异常Page Fault它是一个由硬件中断触发的可以由软件逻辑纠正的错误

a.PageFault

假如目标内存页在物理内存中没有对应的页帧或者存在但无对应权限CPU 就无法获取数据,这种情况下CPU就会报告一个缺页错误

由于CPU没有数据就无法进行计算,CPU罢工了用户进程也就出现了缺页中断,进程会从用户态切换到内核态,并将缺页中断交给内核的 Page Fault Handler 处理。

缺页异常并不可怕,只要CPU要的虚拟地址经过MMU的一番寻址之后没有找到或者找到后无权限,就会出现缺页异常,因此触发异常后的处理流程将是重点内容。

b.缺页错误的分类处理

缺页中断会交给PageFaultHandler处理,其根据缺页中断的不同类型会进行不同的处理

Hard Page Fault

也被称为Major Page Fault,翻译为硬缺页错误/主要缺页错误这时物理内存中没有对应的页帧,需要CPU打开磁盘设备读取到物理内存中,再让MMU建立VA和PA的映射。

Soft Page Fault

也被称为Minor Page Fault,翻译为软缺页错误/次要缺页错误,这时物理内存中是存在对应页帧的,只不过可能是其他进程调入的,发出缺页异常的进程不知道而已,此时MMU只需要建立映射即可,无需从磁盘读取写入内存,一般出现在多进程共享内存区域。

Invalid Page Fault

翻译为无效缺页错误,比如进程访问的内存地址越界访问,又比如对空指针解引用内核就会报segment fault错误中断进程直接挂掉。

c.缺页错误出现的原因

不同类型的Page Fault出现的原因也不一样,常见的几种原因包括

非法操作访问越界

这种情况产生的影响也是最大的,也是Coredump的重要来源,比如空指针解引用或者权限问题等都会出现缺页错误。

使用malloc新申请内存

malloc机制是延时分配内存,当使用malloc申请内存时并未真实分配物理内存,等到真正开始使用malloc申请的物理内存时发现没有才会启动申请,期间就会出现Page Fault。

访问数据被swap换出

物理内存是有限资源,当运行很多进程时并不是每个进程都活跃,对此OS会启动内存页面置换将长时间未使用的物理内存页帧放到swap分区来腾空资源给其他进程,当存在于swap分区的页面被访问时就会触发Page Fault从而再置换回物理内存。

>>> 敲黑板 划重点 本段小结:<<<
触发Page Fault的原因可能有很多,归根到底也只有几种大类

1. 如使用共享内存区域,没有存储VA->PA的映射但是存在物理页帧的软缺页错误,在Page Table/TLB中建立映射关系即可。

2. 访问的地址在物理内存中确实不存在,需要从磁盘/swap分区读入才能使用,这种性能影响会比较大,因为磁盘太慢了,尽量使用高性能的SSD来降低延时。

最新文章
驻马店2020高考查分网站入口
河南省2020年高考成绩查询时间7月25日0时   河南省2020年高招各批次最低录取控制分数线7月25日0时公布,考生即可通过多种方式查询高考成绩,全省考生“一分一段表”也将同时发布。  高考查分渠道有:河南省教育厅网站、河南省招生办公
高清美女写真生成!用AI一键打造你的虚拟女友!
第二步:选择生成类型 进入页面后,你将看到多个选项,选择“生成美女写真”,系统会引导你进入相应的界面。第三步:上传或选择图片 你可以选择上传自己的照片,或者系统提供的样板图,随后根据指引进行基础设置,如选择风格或特效等。第四
为什么AI目前搞不定UI界面设计?
在人工智能(AI)技术飞速发展的今天,其在各个领域的应用不断拓展,从自动驾驶到智能助手,AI的身影无处不在。然而,在UI界面设计这一领域,尽管AI技术被寄予厚望,但其实际应用效果却远
蜘蛛池增加百度蜘蛛,提升网站权重与流量的高效策略,蜘蛛池效果
蜘蛛池是一种通过集中多个网站资源,吸引搜索引擎蜘蛛(如百度蜘蛛)频繁访问,从而提升单个或多个网站权重与流量的策略。通过合理设置蜘蛛池,可以吸引更多百度蜘蛛访问,提高网站收录和排名,进而增加流量。蜘蛛池还可以实现资源互补,提
钢研纳克涨0.39%,中期趋势方面,下方累积一定获利筹码。近期该股有吸筹现象,但吸筹力度不强
4、2019年12月4日公司在互动平台称:中实国金作为全国分析测试人员能力培训委员会秘书处和授权培训中心,为全国分析检测人员提供技术能力培训。中实国金是公司全资子公司。5、公司在大飞机用钢铁材料检测占据重要位置,成为大型客机用钢铁
黄南藏族自治州路基回填土下沉注浆2024年排行榜推荐
黄南藏族自治州路基回填土下沉注浆2024年排行榜推荐标题:黄南藏族自治州路基回填土下沉注浆2024年排行榜推荐随着我国基础设施建设的不断推进,路基回填土下沉注浆技术在公路建设中发挥着越来越重要的作用。黄南藏族自治州地处青藏高原,地
美国研究生申请的几大潜规则!留学生必看!
美国研究生留学申请的相关问题,有很多打算申请留学的同学咨询,今天高途留学小编就收集了关于美国研究生申请的几大潜规则的信息,供申请的同学参考,帮助同学们留学申请做好准备。3.5是GPA的分水岭美国研究生院设有明确规定,仅当学生的GP
泉港网站排名优化费用是如何计算的?
在泉港找你们做网站推广有哪些优势排名效果持久最快15天上词 排名效果快准狠;正规白帽手段正规优化技术,更符合百度算法 节省企业成本排名效果长期稳定 节约推广费用:按效果付费不上首页不扣费 推广收益最大化:指定任意关键词客户自选关
简易版飞机大战游戏设计与实现
简介:本教程将指导你如何设计和实现一个简易版的飞机大战小游戏,该游戏具有基本的图形界面和简单的交互机制。我们将重点讲解如何通过编程实现飞行器的控制、射击动作以及简单的敌机AI。为了降低复杂度和上手难度,游戏
相关文章
推荐文章
发表评论
0评