http://blog.sina.com.cn/s/blog_533074eb0101ai5t.html
上图反映了如下信息:
1、 进程的 4G 线性空间 被划分成 三个部分 : 进程空间 (0-3G)、 内核直接映射空间 (3G– high_memory)、 内核动态映射空间 (VMALLOC_START - VMALLOC_END)
2、  三个空间使用同一张页目录表 ,通过  CR3 可找到此页目录表 。但不同的空间在页目录表中页对应不同的项,因此互相不冲突
3、 内核初始化以后,根据实际物理内存的大小,计算出 high_memory、VMALLOC_START、VMALLOC_END 的值。并为“内核直接映射”空间建立好映射关系,所有的物理内存都可以通过此空间进行访问。
4、 “进程空间”和“内核动态映射空间”的映射关系是动态建立的(通过缺页异常)
假设在有三个线性地址 addr1, addr2, addr3 ,分别属于三个线性空间不同部分(0-3G、3G-high_memory、vmalloc_start-vmalloc_end),但是最终都映射到物理页面1:
1、 三个地址对应不同的页表和页表项
2、 但是页表项的高20bit肯定是1,表示物理页面的索引号是1
3、 同时,根据高20bit,可以从 mem_map[]中找到对应的struct page结构, struct page 用于管理实际的物理页面(就是实际物理页面的物理地址了,到这里就不绕弯子了,顺便想到高速缓冲的匹配命中操作是用哈希表,换算出的要访问的实际物理地址拿到哈希表的输入计算一下哈希值,看看有没命中) (红线)
4、 从线性地址最终的,根据页目录表,页表,可以找到物理地址
5、 struct page和物理地址之间很容易互相转换
6、 从物理地址,可以很容易的反推出在内核直接映射空间的线性地址(蓝线)。要想得到在进程空间或者内核动态映射空间的对应的线性地址,则需要遍历相应的“虚存区间”链表。
关于页目录表:
1、 每个进程有一个属于自己的页目录表,可通过 CR3 寄存器找到
2、 而内核也有一个独立于其它进程的页目录表,保存在 swapper_pg_dir[] 数组中
3、  当进程切换的时候,只需要将新进程的页目录把地址加载到 CR3 寄存器中即可
4、 创建一个新进程的时候,需要为它分配一个 page,作为页目录表,并将swapper_pg_dir[] 的高256项拷贝过来,低768项则清0
linux0.11版本,所有进程共享同一个页目录而各自使用不同的页表,该共享的页目录就放在物理地址最前面的4k

页表目录和页表结构 图解相关推荐

  1. 内核知识第八讲,PDE,PTE,页目录表,页表的内存管理

    内核知识第八讲,PDE,PTE,页目录表,页表的内存管理 一丶查看GDT表. 我们通过WinDbg + 虚拟机可以进行双机调试.调试一下看下GDT表 我们知道,GDT表中.存储的是存储段信息. 保存了 ...

  2. 【OS学习笔记】三十一 保护模式九:页目录、页表和页三者的关系详解

    上一篇文章学习了:保护模式九:段页式内存管理机制概述 本篇文章接着学习以下内容: 页目录概念 页表概念 页目录.页表与页之间的关系 虚拟地址(线性地址)到物理地址的具体变换过程. 1.页目录.页表和页 ...

  3. 【操作系统/计组】页面大小 与 页表项 ( 二级页表 、多级页表 )

    [操作系统/计组]页面大小 与 页表项 结论1(一级页表) 结论2(二级.多级页表) 例题 首先,不论一级页表还是多级页表: 页面大小 = 2^(页内地址位数) 页号有多少,页就有多少个 用于存放页的 ...

  4. JavaScript: 原型链继承(原理解析 + 代码实现 + 结构图解)

    文章目录 一 原型搜索机制 1.1 代码实现 1.2 结构图解 1.3 搜索机制 二 原型链代码实现 2.1 代码实现 2.2 结构图解 2.3 链条拓展 三 原型链的缺点 原型链是实现继承的一种方式 ...

  5. windows用 tree命令查看目录文件夹结构

    windows用 tree命令查看目录文件夹结构 ## 查看帮助 tree --helptree --dirsfirst --filelimit 6 -h -t –dirsfirst 目录优先展示 – ...

  6. file类打印目录---树状结构,递归

    package Test; import java.io.File; /** * file类打印目录---树状结构,递归 * @author Administrator * */ public cla ...

  7. linux tree命令源码,[转帖]linux tree命令--显示目录的树形结构

    linux tree命令--显示目录的树形结构 版权声明:iamqilei@qq.com https://blog.csdn.net/u011729865/article/details/533684 ...

  8. 双圆环环布带系法图解_库卡(kuka)机械臂KR210结构图解

    众所周知,库卡机械臂在各大机型中算的上是最耐用的机械臂.目前新款Q系列中大部分已经采用气液平衡气囊装置.在刚性精度的稳定下,趋向于轻量化结构.主要是为了提高其运行节拍和减少能耗,进一步降低机械臂故障率 ...

  9. Vim升华之树形目录插件NERDTree安装图解

    无意中看到实验室的朋友使用的vim竟然能在左边显示树形目录,感觉很方便,这样子文件夹有什么文件一目了然.她说是一个插件叫NERDTree,安装执行后的效果如下,不是你想要的效果就别安了.我的系统是Ub ...

最新文章

  1. iis上实现虚拟目录
  2. Design Pattern - Builder(C#)
  3. 前端实用工具大全, 有任何棘手的实现, 可以来这里拿
  4. 运筹学期末复习2020年
  5. 软件测试自学舞蹈简单,中舞网APP评测:舞蹈初学者必备的APP
  6. c#枚举数字转枚举_C#枚举能力问题和解答 套装4
  7. 分治3--黑白棋子的移动
  8. 【UVA - 227】Puzzle (模拟,水题)
  9. oracle语句insert into select如何加后续插入条件
  10. 覆盖分类的方法_智能垃圾分类箱上线,居民垃圾分类投放可领礼品
  11. 外星人电脑为什么那么贵_为什么百丽的鞋那么贵
  12. 做业务千万不要把鸡蛋放在一个篮子里
  13. windows下MySQL 5.7+ 解压缩版安装配置方法
  14. iOS底层探索之dyld(上):动态链接器流程分析
  15. python基于窗体的播放器_基于Python3的终端播放器 – MellPlayer
  16. Python实现SPGD(SGD)优化算法
  17. 对大学的规划 计算机专业,对计算机专业的认识及你大学四年的规划与设想
  18. 李宏毅自然语言处理——GPT3简介
  19. AD9854 MSP430 代码总结
  20. pygame坦克大战

热门文章

  1. (转载)机器学习方法的PPT
  2. springboot2.X整合spring-data-elasticsearch
  3. matlab处理振动信号教程,振动信号预处理方法-平滑处理及其MATLAB实现
  4. matplotlib 中颜色、线型、标记说明
  5. 分享:ahk官网内容下载
  6. 01. 全彩RGB LED灯模块使用教程
  7. 浮点数与十六进制转换
  8. 【Linux、进程隐藏】在Linux环境下添加系统调用实现进程隐藏
  9. (2)安装Pycharm
  10. ffmpeg断流黑屏问题分析