您当前的位置:首页 > 电脑百科 > 软件技术 > 软件技术

虚拟内存 和 page fault 的解释

时间:2020-08-17 13:20:31  来源:  作者:
虚拟内存 和 page fault 的解释

 

linux 内核给每个进程都提供了一个独立的虚拟地址空间,并且这个地址空间是连续的。这样进程就可以很方便地访问内存,更确切地说是访问虚拟内存。

1、什么是虚拟内存

假设某个进程需要100MB的空间,而内存假设是16MB的,如果进程直接使用物理地址,就会因为内存不足而无法运行。

既然进程不是直接访问物理内存,那么进程中涉及的内存地址当然也不是物理内存地址。而是虚拟的内存地址,虚拟的内存地址和物理的内存地址之间保持一种映射关系,这种关系由内存管理单元(MMU)进行管理。

虚拟内存 和 page fault 的解释

 

内存管理单元(Memory Management Unit,MMU),将物理内存分割成多个pages,MMU管理进程的虚拟地址空间中的page和物理内存中的page之间的映射关系。、

因为是映射,所以随时都可能发生变化,例如某个进程虚拟内存空间中的page1,在不同的时间点,可能出现在物理内存中的不同位置(当发生了页交换时)。

虚拟内存 和 page fault 的解释

 

2、什么是 page fault

虚拟地址空间的内部又被分为内核空间和用户空间两部分。并不是所有的虚拟内存都会分配物理内存,只有那些实际使用的虚拟内存才分配物理内存,并且分配后的物理内存,是通过内存映射来管理的。

当进程访问它的虚拟地址空间中的page时,如果这个page目前还不在物理内存中,此时CPU是不能工作的,Linux会产生一个hard page fault中断。系统需要从慢速设备(如磁盘)将对应的数据page读入物理内存,并建立物理内存地址与虚拟地址空间page的映射关系。然后进程才能访问这部分虚拟地址空间的内存。

page fault 又分为三种:minor page faultmajor page faultinvalid(segment fault)

2.1、minor page fault

也称为 soft page fault,指需要访问的内存不在虚拟地址空间,但是在物理内存中,需要MMU建立物理内存和虚拟地址空间的映射关系。

当一个进程在调用 malloc 获取虚拟空间地址后,首次访问该地址会发生一次soft page fault。

通常是多个进程访问同一个共享内存中的数据,当某些进程还没有建立起映射关系,访问时也会出现soft page fault。

虚拟内存 和 page fault 的解释

 

2.2、major page fault

也称为 hard page fault,指需要访问的内存不在虚拟地址空间,也不在物理内存中,需要从慢速设备载入。

从磁盘 swap in 回到物理内存就是 hard page fault。

  • swap out:当物理内存不够时,把一些物理内存 page 中的内容写入到磁盘,以腾出一些空闲的 page;
  • swap in:当CPU要执行的指令被发现已经 swap out 到了磁盘中, 这时就需要从磁盘把这些指令再 swap in 到物理内存中。

注意:swap in 和 swap out 的操作都是比较耗时的。

2.3、invalid(segment fault)

也称为 segment fault,指进程需要访问的内存地址不在它的虚拟地址空间范围内,属于越界访问,内核就会报 segment fault 错误。

造成 segment fault 的原因可能有以下几种:

  • 堆栈溢出;
  • 内存访问越界,如数组下表错误访问越界;使用strcpy/strcat/sprintf/strcmp 等字符串操作函数导致的读写越界,应尽量使用strncpy/strncat/snprintf/strncmp 等函数;
  • 非法指针:野指针,错误的指针转换等;
  • 多线程读写的数据未加锁保护,或使用了线程不安全的函数。


Tags:虚拟内存   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
程序经过编译后,变成了可执行的文件,可执行文件主要包括代码和数据两部分,代码是只读的,数据则是可读可写的。可执行文件由操作系统加载到内存中,交由CPU去执行,现在问题来了,CPU怎...【详细内容】
2021-04-25  Tags: 虚拟内存  点击:(294)  评论:(0)  加入收藏
前面讲到过写时复制缺页异常(COW),一般用于父子进程之间共享页,而我们会常见一种缺页异常是匿名映射缺页异常,今天我们就来讨论下这种缺页异常,让大家彻底理解它。注:本文使用linux-5.0内核源代码。文章分为以下几节内容:...【详细内容】
2020-09-10  Tags: 虚拟内存  点击:(90)  评论:(0)  加入收藏
Linux 内核给每个进程都提供了一个独立的虚拟地址空间,并且这个地址空间是连续的。这样进程就可以很方便地访问内存,更确切地说是访问虚拟内存。1、什么是虚拟内存假设某个进...【详细内容】
2020-08-17  Tags: 虚拟内存  点击:(221)  评论:(0)  加入收藏
大家好,我是良许。熟悉计算机的小伙伴都知道,我们常说的主机三大件分别是主板,CPU,内存,可见内存在计算机主机中的角色也非同一般,喜欢 DIY 主机的小伙伴对这三大件的了解更是精益...【详细内容】
2020-08-11  Tags: 虚拟内存  点击:(79)  评论:(0)  加入收藏
在20世纪60年代及70年代早期,计算机内存十分昂贵,而随着计算机的发展,计算机应用程序越来越大,系统内存无法满足应用程序的需求,虚拟内存技术应运而生,它可使内存耗量大的软件运行...【详细内容】
2020-03-17  Tags: 虚拟内存  点击:(143)  评论:(0)  加入收藏
虚拟内存:第一层理解1. 每个进程都有自己独立的4G内存空间,各个进程的内存空间具有类似的结构2. 一个新进程建立的时候,将会建立起自己的内存空间,此进程的数据,代码等从磁盘拷贝...【详细内容】
2019-12-26  Tags: 虚拟内存  点击:(94)  评论:(0)  加入收藏
一、 虚拟地址的由来在早期的计算机中,要运行一个程序,会把这个程序全部都加载到内存,程序是直接运行到物理内存上的。也就是说,程序运行时直接访问的就是实际的物理内存地址。...【详细内容】
2019-12-02  Tags: 虚拟内存  点击:(130)  评论:(0)  加入收藏
最近在进行服务器内存优化的时候,发现一个非常奇妙的问题,我们的认证服务器(AuthServer)负责跟第三方渠道SDK打交道,由于采用了curl阻塞的方式,所以这里开了128个线程,奇怪的是每次...【详细内容】
2019-10-30  Tags: 虚拟内存  点击:(163)  评论:(0)  加入收藏
内存是什么?内存对于用户来说就是一个字节数组,我们可以根据地址来访问到某个字节或者某些字节:很久之前的内存很久很久之前,一台机器上只放置一个程序,操作系统仅仅作为一个函...【详细内容】
2019-09-20  Tags: 虚拟内存  点击:(207)  评论:(0)  加入收藏
▌简易百科推荐
今天教大家通过windows的CMD终端查看WIFI密码 使用管理权限打开CMD 查看本机连接过WIFI名称netsh wlan show profiles 查询某一个WIFI的密码比如这里我想查询猪猪侠的...【详细内容】
2021-12-27  吉祥同学学安全    Tags:wifi密码   点击:(1)  评论:(0)  加入收藏
从本质上来讲,PE系统最广泛的用途只是用来安装系统。通过其内置的Ghost软件来调用第三方的GHO系统镜像来完成系统的安装。从表面来看,最终的系统是否纯净、是否安全,与Gho镜像...【详细内容】
2021-12-27  u盘装系统    Tags:pe工具   点击:(2)  评论:(0)  加入收藏
Safari是苹果在iPhone和iPad上的默认网络浏览器。虽然我们天天都在使用,但是,你是否深入研究了Safari的所有功能和设置?"无痕浏览"、"阅读器"视图和下载文件等标准选项只是其...【详细内容】
2021-12-16  趣玩公社    Tags:Safari   点击:(20)  评论:(0)  加入收藏
《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的是一个开源的 HTML5 视频播放器插件——MuiP...【详细内容】
2021-12-16  GitHub精选    Tags:插件   点击:(22)  评论:(0)  加入收藏
给电脑安装软件,最让人担心的就是安装到“拖家带口”的,而这样的手法正是国产软件惯用的!全家桶自动安装、软文弹窗等等,这些让我们讨厌的却是软件的直接收入来源。 那么在你安...【详细内容】
2021-12-15  老毛桃winpe    Tags:软件   点击:(18)  评论:(0)  加入收藏
不知道你是否遇到过这么一种情况:在一个A4大小的图框画一个接近满框的图形,在打印的时候却发现图形很小根本不符合模型空间的实际情况。看似明显是比例问题,但又不知道究竟是什...【详细内容】
2021-12-14  设计师小仁君    Tags:CAD   点击:(20)  评论:(0)  加入收藏
哈喽大家好! 前几天一个朋友向我疯狂吐槽。 快到年底了,公司要统计年度数据。 需要把一月到十二月份,十二张表格的数据,全部汇总到一个表格内。 这样的数据汇报每年都会有,每到年...【详细内容】
2021-12-14  秋叶Excel    Tags:Excel   点击:(23)  评论:(0)  加入收藏
我发现最近不少小叶子的留言都和 Excel 相关,我寻思是时候出一期解决 Excel 疑难杂症的小合集了。于是毛毛在众多问题中,挑了三个被问次数最多的有关 Excel 的问题,今天就来给...【详细内容】
2021-12-14  叶PPT    Tags:Excel   点击:(28)  评论:(0)  加入收藏
大家好,我是Stark-C。油猴简介【油猴】一款免费的浏览器扩展和最为流行的用户脚本管理器,它是一个附加组件(扩展程序),让用户安装一些脚本使大部分HTML为主的网页改变得更方便易...【详细内容】
2021-12-13  什么值得买    Tags:油猴   点击:(43)  评论:(0)  加入收藏
年末,又到了各大厂商盘点年度最佳的时候了。不过让世超感到意外的是 Google 竟然给自己 Chrome 的插件,做了一个 2021 年精选集锦,挑选出了 13 款今年最热门的 Chrome 插件。...【详细内容】
2021-12-13  科技知迅    Tags:Chrome   点击:(19)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条