Skip to content

7月16日学习笔记

lirui edited this page Jul 17, 2020 · 1 revision

5.4 页表概述

每个进程都有一个页表,每个页面对应一个页表项,这个页表项完成这个逻辑页号到物理帧号之间的转换

页表的内容会随着进程运行状态而动态变化

页表放在页表基址寄存器(PTBR:Page Table Base Register)

页表项的组成:

帧号:f

页表项标志

存在位(resident bit):我们有一个逻辑页号,是否有一个物理帧和它相对应,如果有,存在位是1

修改位(dirty bit):对应的页中的内容是否修改了

引用位(clock/reference bit):这个页面在过去一段时间里面,是否有过对它的引用,是否访问过这个页面里的某一个存储单元

页式存储管理机制的性能问题:

访问一个内存单元需要2次内存访问:第一次获取页表项;第二次访问数据

页表大小问题:

页表可能非常大

64位机器如果每页1024字节,那么一个页表的大小会是多少?64位的地址总线,假若页面大小为1k,页的大小位2^10,也就是2^54个页面,如果每一个页表项占64位的地址,光地址就是8*8=64,那就要占8个字节,一个页表项至少8个字节,不包含标志位等,现在2^54,每个占8个字节,那就是2^57的存储区域来存页表

引入页表后带来的麻烦如何处理?

缓存(Caching):数据、代码具有一定的相邻性

间接(Indirection)访问:页表太大,切段,间接访问,即多级页表

5.5 快表和多级页表

快表是利用缓存的机制来减少对内存的访问,而多级页表是通过间接引用的方式来减少页表的长度

快表(Translation Look-aside Buffer TLB)

缓存近期访问的页表项

TLB使用关联存储(associative memory)实现,具备快速访问性能

如果TLB命中,物理页号可以很快被获取

如果TLB未命中,对应的表项被更新到TLB中

Clone this wiki locally