开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第14天,点击查看活动详情
引入快表的目的:
在没有快表的情况下,一个虚拟地址要转成一个物理地址至少需要两次访问物理内存,第一次是查询内存中的页表,第二次是访问物理页框。如果有暂存着目标页表项的快表,则通过快表访问页表会比在内存中访问页表快很多,有利于缩短从一个虚拟地址转换成一个物理地址的过程的时间。
注意:
增设一个具有并行查找能力的特殊高速缓冲寄存器,又称“联想寄存器”,或称“快表”。用它存放当前访问过的那些页表项。有快表,速度提高。 由于快表贵,故不能做的太大,通常只存放16~512个页表项。从快表中得到所需页表项的几率可达90%。
局部性原理 (Principle of Locality)
1968年美国MIT的Denning提出。指程序在执行过程中的一个较短时期,所执行的指令地址和指令的操作数地址,分别局限于一定区域。 表现为: 时间局部性:即刚被访问过的单元在很短时间内还将被访问。 空间局部性:刚被访问过的单元的邻近单元也将被访问。
具有快表的地址变换过程如下: 在CPU给出有效地址后,由地址变换机构自动地将页号送入快表中。 若快表中有此页号,则直接从快表中读出该页对应的物理块号,送到物理地址寄存器。否则,再访问内存中的页表,从页表项中读出物理块号送到地址寄存器, 同时,将此页表项放入快表中。若快表已满,OS找到一个被认为不再需要的表项,将它换出。
例题分析:
例:有一页式系统,其页表存放在主存中:
①如果对主存的一次存取需要1.5 μs,试问实现一次页面访问的存取时间是多少?
②如果系统加有快表,平均命中率为85%,当页表项在快表中时,其查找时间忽略为0, 试问此时的存取时间是多少?
答:若页表存放在主存中,则要实现一次页面访问需两次访问主存:一次是访问页表,确定所存取页面的物理地址(称为定位)。第二次才根据该地址存取页面数据。
■页表在主存的存取访问时间 =1.5*2=3(μs)
■增加快表后的存取访问时间 =0.85*1.5+(1-0.85)21.5=1.725(μs)