当前位置:网站首页>page fault-页异常流程
page fault-页异常流程
2022-08-03 05:23:00 【SEVENTHD7】
缺页异常(Page Faults) 和 Kernel Oops打印调用流程_痒痒挠963的博客-CSDN博客
阶段1:判断缺页异常是否发生在内核线程或原子上下文中(中断也属于一种原子上下文),是的话执行do_kernel_fault尝试修复或报段错误。
阶段2:判断是否是内核态访问用户地址空间的情况,是的话判断是否是指定的三种情况,是则报段错误。
阶段3:进入_do_page_fault, 查找异常地址所在的vm_area_struct域,并走表(page table walk)查找address对应PGD PUD PMD,最终找到PTE。
阶段4:进入handle_pte_fault(),判断PTE为空的话,说明用户空间申请了虚拟地址后第一次访问,尚未映射物理页面。在根据页面类型分别执行do_anonymous_page或do_fault。
阶段5:PTE非空表示已经建立过映射。判断PTE的present位是否为真,非真说明页面被swapping到磁盘上,随即执行do_swap_page。
阶段6:判断PTE_PROT_NONE是否为真,若为真执行do_numa_page产生页面迁移。
阶段7:判断错误类型,若是写类型的错误,再判断PTE的读写权限。只读的话说明页面是写保护的,调用do_wp_page。
阶段8: 为了兼容ARM32,ARM32体系架构的Hardware PTE中不支持DIRTY YOUNG等bit位,所以通过软件上配合缺页异常进行模拟。
------------------------------------------------------------------其他文章的扩展-------------------------------------------------------------------
由于造成内核空间和用户空间的page fault的原因不尽相同,因此其处理流程也有所区别。
对于用户空间,需要区分多种情况,page fault的处理显得更为复杂。
首先,访问的内存地址必须是合法的,所谓「合法」,就是该地址一定是落在进程的某个VMA区间内。
假设现在一个进程的地址空间分布如下,那么address B是合法的(good area),address A就是非法的(bad area)
边栏推荐
- Kettle 从资源库中载入新的转换出错(Invalid byte 1 of 1-byte UTF-8 sequence)
- 中国水产养殖行业市场投资分析及未来风险预测报告2022~2028年
- 【源码解读】火爆的二舅币真的跑路了吗?
- 自监督论文阅读笔记 TASK-RELATED SELF-SUPERVISED LEARNING FOR REMOTE SENSING IMAGE CHANGE DETECTION
- Leetcode刷题——一些用层次遍历解决的问题(111. 二叉树的最小深度、104. 二叉树的最大深度、226. 翻转二叉树、剑指 Offer 27. 二叉树的镜像)
- HoloLens联合发明人:打造理想的全天AR需要解决这些问题
- 梯度下降、反向传播
- 嵌入式实验四
- arm64麒麟安装paddlehub(国产化)注意事项
- IPC通信 - 管道
猜你喜欢
随机推荐
MySQL 排序
中国食品产业园区行业前景规划建议及投融资模式分析报告2022~2028年
Apache2-XXE漏洞渗透
【源码解读】火爆的二舅币真的跑路了吗?
取某一区间中素数的个数--洛谷P1865 A % B Problem
中国生物降解塑料行业市场运营态势及发展趋势研究报告2022~2028年
嵌入式实验二注意点
Browser multi-threaded off-screen rendering, compression and packaging scheme
Makefile
自监督论文阅读笔记 DenseCL:Dense Contrastive Learning for Self-Supervised Visual Pre-Training
关于梯度下降法的一些优化方法
ansible的安装和部署详细过程,配置清单基本操作
西塞罗 论老年
自监督论文阅读笔记 Ship Detection in Sentinel 2 Multi-Spectral Images with Self-Supervised Learning
该描述怎么写成SQL语句
自监督论文阅读笔记 Self-supervised Label Augmentation via Input Transformations
Sentinel初次使用Demo测试
opencv目标检测
进程间通信IPC - 信号量
MySQL 下载和安装详解