什么是缺页错误 Page Fault?

本文介绍了缺页异常Page Fault,解释了Linux系统中内存的惰性分配机制,以及CPU如何通过MMU、页表和TLB进行地址转换。讨论了多级页表和TLB在提高效率上的作用,并详细阐述了Page Fault的分类及处理,包括硬缺页错误、软缺页错误和无效缺页错误,最后分析了触发Page Fault的各种原因。
摘要由CSDN通过智能技术生成

谈谈对缺页异常Page Fault的理解。

话不多说,集合上车。

术语约定

  • 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
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值