一、什么情况下会引起缺页异常

很简单,PTE的P=0时,就会引发缺页异常。

缺页异常有4种情形,见下图:

不常使用的线性地址可能是没有挂物理页的,当我们访问这个地址,由于PTE P=0,会触发缺页异常,程序跳转到异常处理函数执行,处理函数判断PTE无效的原因,做相应的处理。

二、测试缺页异常

下面编写一个简单的程序,来演示缺页异常。

// MessageBoxA_PDE_PTE.cpp : 定义控制台应用程序的入口点。
//#include "stdafx.h"
#include <Windows.h>int _tmain(int argc, _TCHAR* argv[])
{   printf("MessageBoxA: %p\n", MessageBoxA); // 注意,这里并没有访问 MessageBoxA 这个地址,所以它没挂物理页,PTE=0getchar(); // windbg查pte,一定是0BYTE b1 = *(PBYTE)MessageBoxA; // 访问了 MessageBoxA ,操作系统帮我们挂了物理页,此时,PTE就不是0了    getchar(); // windbg查pte,一定不是0return 0;
}

大家可以运行程序,在两个getchar处分别去windbg里用 !vtop 拆解 MessageBoxA 的线性地址,你会发现第一次PTE=0,而第二次,由于MessageBoxA这个地址被访问了,挂上了物理页,PTE就不等于0了。

(41)缺页异常简介相关推荐

  1. 4-1 ADO.NET简介

    第四章 ADO.NET数据库访问技术 本章内容 4-1  ADO.NET 简介 4-2 ADO.NET-插入.删除.修改.检索数据 4-3 DataGridView 控件 - 显示和操作数据 4-4 ...

  2. 模拟请求分页管理中地址转换和缺页中断处理_Linux内存管理:缺页异常(一)

    缺页异常: 缺页异常(Page Faults)属于ARM V8处理器的异常类型中的同步异常.当MMU走表时可能会产生若干种类型的MMU faults(有同步的也有异步的),其中的同步异常,即这里将要讨 ...

  3. Java异常(一) Java异常简介及其架构

    概要 本章对Java中的异常进行介绍.内容包括: Java异常简介 Java异常框架 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3544168.htm ...

  4. Windows内存管理学习笔记(三)—— 无处不在的缺页异常

    Windows内存管理学习笔记(三)-- 无处不在的缺页异常 缺页异常 实验一:设置虚拟内存 无处不在的缺页 位于页面文件 保留与提交的误区 实验二:理解缺页异常 EXECUTE_WRITECOPY ...

  5. mmap文件映射与缺页异常 | 图

    缺页异常

  6. linux内存管理(九)-缺页异常分析

    缺页异常被触发通常有两种情况 a.程序设计的不当导致访问了非法的地址 b.访问的地址是合法的,但是该地址还未分配物理页框 下面解释一下第二种情况,这是虚拟内存管理的一个特性.尽管每个进程独立拥有3GB ...

  7. linux缺页异常,操作系统缺页异常

    缺页异常,页缺失 Page fault,指的是硬错误.硬中断.分页错误.寻页缺失.缺页中断.页故障等)指的是当软件试图访问已映射在虚拟地址空间中,但是目前并未被加载在物理内存中的一个分页时,由中央处理 ...

  8. 6.S081-6缺页异常 - lazy allocation - Page Fault

    6.S081-6缺页异常Page Fault 这一节课,可以帮我们完成2个实验: 题目要求链接:Lab: xv6 lazy page allocation 对应做法链接:6.S081 Lab4 Laz ...

  9. 1.异常简介:什么是异常???常见异常有哪些???

    1.异常简介:什么是异常???常见异常有哪些??? 学习:第7遍 1. 什么是异常??? 程序在运行过程中发生的意外情况,称为异常,如:除数为0.访问下标不存在的数组元素等 异常是一种信号,用于向调用 ...

最新文章

  1. 毒霸duba劫持首页的解决方案(实测有效)
  2. 【Android基础】点击Back键退出应用程序
  3. 【Android 安全】DEX 加密 ( Application 替换 | Android 应用启动原理 )
  4. EasyUI-datagrid-自动合并单元格(转)
  5. 2.3.NLTK工具包安装、分词、Text对象、停用词、过滤掉停用词、词性标注、分块、命名实体识别、数据清洗实例、参考文章
  6. 2.myql数据导入到solr,并建立solr索引(学习笔记)
  7. 如何通俗理解计算机视觉、计算机图形、图像处理之间的区别与联系
  8. opencv java水平投影_使用OpenCv中Mat进行水平投影与垂直投影并实现字符切分
  9. windows server 2003双网卡的问题
  10. Mint-UI组件 MessageBox为prompt 添加判断条件
  11. LeetCode 16最接近的三数之和
  12. 我的CSDN资源下载怎么被自动设置了积分
  13. Maple 教程(一)---初认识
  14. 计算机变异指标可以,变异系数公式_在EXCEL中怎样计算样本标准差和变异系数
  15. 怎么在windows文件资源管理器中打开ftp
  16. 2018:平凡而不平庸的一年
  17. PostgreSQL年龄的处理
  18. kaggle操作入门
  19. 新一代iPhone后盖或将采用超级合金
  20. openGL,glut库安装(vs2013)

热门文章

  1. 成功解决WARNING:tensorflow:From :read_data_sets (from tensorflow.contrib.learn.python.learn.
  2. ML之Validation:机器学习中模型验证方法的简介、代码实现、案例应用之详细攻略
  3. 成功解决TypeError: ‘float’ object cannot be interpreted as an index
  4. ML与math:机器学习与高等数学基础概念、代码实现、案例应用之详细攻略——基础篇
  5. 成功解决attrs = config.__dict__['__flags'] KeyError: '__flags
  6. DL框架之Keras:深度学习框架Keras框架的简介、安装(Python库)、相关概念、Keras模型使用、使用方法之详细攻略
  7. urllib2.HTTPError: HTTP Error 403: Forbidden的解决方案
  8. ASP.NET查询页面设置form的action属性只弹出一个页面,并且每次将页面设置到最前...
  9. 五分钟搞定 Linux 文档全部知识,就看这篇文章
  10. Xcode自带工具symbolicatecrash解析Crash文件