在某个请求分页管理系统中,假设某进程的页表内容如下表所示。
页号 |
页框(Page Frame)号 |
有效位(存在位) |
0 |
120H |
1 |
1 |
---- |
0 |
2 |
850H |
1 |
页面大小为4KB,一次内存的访问时间是200ns,一次快表(TLB)的访问时间是20ns,处理一次缺页的平均时间为109ns(己含更新TLB和页表的时间),进程的驻留集大小固定为二页,采用最近最久未使用置换算法(LRU)和局部置换策略。假设①TLB初始为空;②地址转换时先访问TLB,若TLB未命中,再访问页表(忽略访问页表之后的TLB更新时间);③有效位为0表示页面不在内存,产生缺页中断,缺页中断处理后,返回到产生缺页中断的指令处重新执行。设有虚地址访问序列2345H、1876H、258FH,请问:
a.依次访问上述三个虚地址,各需多少时间?给出计算过程。
b.基于上述访问序列,虚地址1876H的物理地址是多少?请说明理由。
【答案】
(a) 根据页式管理的工作原理,应先将页号和页内位移地址分解出来。页面大小为4KB,即212,则得到页内偏移量占虚地址的低12位,那么页号占剩余高4位。可得三个虚地址的页号如下表。
(b)
地址 |
页号 |
页内位移 |
2345H |
2 |
345H |
1876H |
1 |
876H |
258FH |
2 |
58FH |
2345H指令,页号为2,访问快表20ns,找不到页框,因条件所给初始为空,需要再到内存访问页表,花费200ns得到页框号,合成物理地址后去主存取指令需要花费200ns。
总时间20ns+ 200ns + 200ns = 420ns。
1876H指令页号为1,访问快表20ns,不在TLB,访问页表200ns,不在内存,发生缺页中断花费109ns,取得新页框号(含TLB更新),合成物理地址后去主存取指令需要花费200ns。
总时间20ns+ 200ns + 109ns +200ns ≈109ns。
258FH指令,页号为2,访问快表,因第一次访问己将该页号放入快表,因此花费20ns便可合成物理地址,访问主存取指200ns,共计20ns + 200ns =220ns。
(b)当访问虚地址1876H时,因不在内存而产生缺页中断,因驻留集为二页,现在已有0页和2页在内存,必须从中淘汰一个页面,从而将新1页调入内存。
根据LRU置换算法,0页和2页除有效位以外的其它信息未知,但是,第2页刚刚访问过,其引用位应刚置为1且时间间隔不长,根据最近最久未使用置换算法,相比之下应首先淘汰0号页面,因此1876H的对应页框号为120H。由此可得1876H的物理地址为120876H。