博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux缺页异常处理--内核空间
阅读量:5038 次
发布时间:2019-06-12

本文共 527 字,大约阅读时间需要 1 分钟。

缺页异常被触发通常有两种情况——

  1. 程序设计的不当导致访问了非法的地址
  2. 访问的地址是合法的,但是该地址还未分配物理页框.

下面解释一下第二种情况,这是虚拟内存管理的一个特性。尽管每个进程独立拥有3GB的可访问地址空间,但是这些资源都是内核开出的空头支票,也就是说进程手握着和自己相关的一个个虚拟内存区域(vma),但是这些虚拟内存区域并不会在创建的时候就和物理页框挂钩,由于程序的局部性原理,程序在一定时间内所访问的内存往往是有限的,因此内核只会在进程确确实实需要访问物理内存时才会将相应的虚拟内存区域与物理内存进行关联(为相应的地址分配页表项,并将页表项映射到物理内存),也就是说这种缺页异常是正常的,而第一种缺页异常是不正常的,内核要采取各种可行的手段将这种异常带来的破坏减到最小。

缺页异常的处理函数为do_page_fault(),该函数是和体系结构相关的一个函数,缺页异常的来源可分为两种,一种是内核空间(访问了线性地址空间的第4个GB),一种是用户空间(访问了线性地址空间的0~3GB),以X86架构为例,先来看内核空间异常的处理。

811006-20190203143717366-2047523959.png

转载于:https://www.cnblogs.com/linhaostudy/p/10350351.html

你可能感兴趣的文章
Mysql之执行计划
查看>>
propertychange事件导致的IE浏览器堆栈溢出
查看>>
硬链接与软链接
查看>>
Sigar使用
查看>>
cognos安装 win7+Sqlserver08SP1
查看>>
selenium+python自动化测试--数据驱动
查看>>
Struts2 表单标签
查看>>
chrome扩展程序开发
查看>>
图片滚动懒加载用jquery-lazyload 与手动Jquery 写
查看>>
如何用crontab运行一个图形化界面的程序
查看>>
PHP高级面试题
查看>>
java基础之常用类的方法
查看>>
Linux服务之nginx服务篇三(反向代理、负载均衡)
查看>>
tcp协议四次握手
查看>>
割点-模板
查看>>
洛谷P2577 [ZJOI2005]午餐 打饭时间作为容量DP
查看>>
mac air上archlinux的安装及优化
查看>>
力扣——单值二叉树
查看>>
MyBatis 对数据库进行CRUD操作
查看>>
HttpRuntime.Cache被清空的DataTable
查看>>