Linux中有关请页机制的思维导图,包括请页机制概念、页故障的产生原因、页错误的定位、缺页异常处理
树图思维导图提供 请页机制思维导图 在线思维导图免费制作,点击“编辑”按钮,可对 请页机制思维导图 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:0b99c50edb66fcb09f10cab6e7c45f93
请页机制思维导图思维导图模板大纲
采用请页机制来节约内存,它仅仅把当前正在执行的程序要使用的虚拟页(少量一部分)装入内存
程序出现错误
向随机物理内存中写入数据
页错误发生在 TASK_SIZE(3G)的范围外
虚拟地址无效,Linux 将向进程发送 SIGSEGV 信号并终止进程的运行
虚拟地址有效
所对应的页当前不在物理内存中,即缺页错误
必须从磁盘映像或交换文件(此页被换出)中将其装入物理内存
要访问的虚地址被写保护
用户进程正在写当前进程的地址空间,则发 SIGSEGV 信号并终止进程的运行
错误发生在一旧的共享页上时,则处理方法有所不同
错误码 error_code判别
bit 0 == 0 means no page found, 1 means protection fault
bit 1 == 0 means read, 1 means write
bit 2 == 0 means kernel, 1 means user-mode
如果第 0 位为 1,则错误是由无效的访问权所引起的
如果第 1位为 0,则错误是由读访问或执行访问所引起
如果为 1,则错误是由写访问所引起的
如果第 2 位为 0,则错误发生在处理器处于内核态时
错误发生在处理器处于用户态时
如果是缺页错误,Linux 必须区分页所在的位置
判断页是在交换文件中,还是在可执行映像中
Linux 通过页表项中的信息区分页所在的位置
如果这个虚拟区的访问权限与引起错误的访问类型相匹配,则调用 handle_mm_fault( )
如果 handle_mm_fault( )函数成功地给进程分配一个页面,则返回 1
适 当 的 错 误 码 , 以 便 do_page_fault( ) 函 数 可 以 给 进 程 发 送 SIGBUS 信 号