内存管理之7:情景分析之越界访问

date: 2014-09-24 19:09函数

注:本文展现的代码来自2.4.0版本的内核,入口函数do_page_fault定义在<arch/mm/fault.c>中。指针

整体处理流程:blog

越界访问

备注:进程

  1. 读取CR2寄存器获取出错地址? CPU在发出页面异常时,会将对应的地址存到CR2寄存器中,在页面异常的处理程序中就能够从CR2中读取到出错地址。由于要读取CR2寄存器,C语言没法作到,只能经过嵌入式汇编实现。it

  2. 当前进程的用户空间还没有创建? 前面讲过,每一个进程都对应一个mm_struct结构,该结构是对进程整个用户空间的抽象。在每一个进程的进程控制块即task_struct结构体中,有一个指针(mm)指向该进程的mm_struct结构。若是该指针为NULL,即表示当前进程的用户空间还没有创建(在后面讲进程调度与切换时,咱们还会看到另外一个状况:内核进程的mm指针也为NULL)。date

相关文章
相关标签/搜索