例如上图,如果要释放第 1 页的页面,则将其与已经空闲的第 0 页页面框架组合在一起,并作为大小为 2页的空闲块排队到 free_area 的元素 1 中
内存映射内核有两种类型的内存映射:共享型(shared) 和私有型(private) 。私有型是当进程为了只读文件,而不写文件时使用,这时,私有映射更加高效 。但是,任何对私有映射页的写操作都会导致内核停止映射该文件中的页 。所以,写操作既不会改变磁盘上的文件,对访问该文件的其它进程也是不可见的 。
按需分页一旦可执行映像被内存映射到虚拟内存后,它就可以被执行了 。因为只将映像的开头部分物理的拉入到内存中,因此它将很快访问物理内存尚未存在的虚拟内存区域 。当进程访问没有有效页表的虚拟地址时,操作系统会报告这项错误 。
页面错误描述页面出错的虚拟地址和引起的内存访问(RAM)类型 。
Linux 必须找到代表发生页面错误的内存区域的 vm_area_struct 结构 。由于搜索 vm_area_struct 数据结构对于有效处理页面错误至关重要,因此它们以 AVL(Adelson-Velskii和Landis)树结构链接在一起 。如果引起故障的虚拟地址没有 vm_area_struct 结构,则此进程已经访问了非法地址,Linux 会向进程发出 SIGSEGV 信号,如果进程没有用于该信号的处理程序,那么进程将会终止 。
然后,Linux 会针对此虚拟内存区域所允许的访问类型,检查发生的页面错误类型 。如果该进程以非法方式访问内存,例如写入仅允许读的区域,则还会发出内存访问错误信号 。
现在,Linux 已确定页面错误是合法的,因此必须对其进行处理 。
【Linux 原来是这么管理内存的】
推荐阅读
- 中国十大名茶最新排名是怎样的?
- 中国第一个乒乓球大满贯是谁?
- 数据分析-pandas库快速了解
- VMware环境部署vFW虚拟防火墙
- Linux必备知识之文件系统
- linux服务器内存异常,究竟在哪消耗了2.5G?
- CDN的本质只是加速器?其实它才是互联网的核心精神的集大成者
- 云南大蟒蛇事件 云南挖出大蛇是真的吗
- 南极冰盖储存的水资源在地球淡水资源的 南极冰盖储存的水资源是
- 家里窗户全是瓢虫怎么办 窗户上很多瓢虫
