-
Notifications
You must be signed in to change notification settings - Fork 1
7月16日学习笔记
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中