两级页表
单级页表存在的问题
问题
- 单个进程的页表占据的内存空间过大,32位的4K页面,页表项长度为4B,也表要占据4M连续内存
- 进程在一段时间内只访问几个页面,没有必要让整个页表都常驻内存
解决方案
-
将页表进行分组
- 每个内存块刚好放入一个分组(页大小4KB,每个页表项4B,每个页面存放1K个页表项)
- 将各个组离散地存放到各个内存块中
-
建立一张页目录表
- 为离散分配的页表再建立一张页表
二级页表
image.png步骤
-
按照地址结构将逻辑地址拆分成三部分
-
从PCB中读出页目录表起始地址
- 根据一级页号查找页目录表
- 找到下一级页表在内存中的存放位置
-
根据二级页号查表,找到最终想访问的内存块号
-
结合页内偏移量得到物理地址
注意
-
采用多级页表机制,各级页表的大小不能超过一个页面
-
两级页表的访存次数分析(假设没有快表机构)
-
第一次访问内存
- 访问内存中的页目录表
-
第二次访问内存
- 访问内存中的二级页表
-
第三次访问内存
- 访问目标内存单元
-
网友评论