页表
页表是内存管理系统中的数据结构,用于向每个进程提供一致的虚拟地址空间,每个页表项保存的是虚拟地址到物理地址的映射以及一些管理标志。应用进程只能访问虚拟地址,内核必须借助页表这个数据结构和硬件(MMU) 把虚拟地址翻译为对物理地址的访问。
虚拟地址到物理地址的映射过程
地址翻译过程完全是由硬件完成的。
图中CR3保存着进程页目录PGD的地址,不同的进程有不同的页目录地址。进程切换时,操作系统负责把页目录地址装入CR3寄存器。
页表转化失败
在地址转换过程中,有两种情况会导致失败发生。
-
第一 要访问的地址不存在,这通常意味着由于编程错误访问了无效的虚拟地址,操作系统必须采取某种措施来处理这种情况,对于现代操作系统,发送一个段错误给程序;或者要访问的页面还没有被映射进来,此时操作系统要为这个线性地址分配相应的物理页面,并更新页表。
-
第二 要查找的页不在物理内存中,比如页已经交换出物理内存。在这种情况下需要把页从磁盘交换回物理内存。
参考链接
https://blog.csdn.net/u011209099/article/details/9248525