多级页表及访存次数求解

知识回顾

(1)一级页表

页号(36位)

页内偏移(12位)

1)“一个进程最多可能有2^36页,因此进程的页表最多有2^36个页表项”

2)各个页表项必须连续存放,需占用连续的2^36 * 8B=2^39B=512GB空间

3)能够一次访存就能找到慢表中的表项,如何找到p号页对应的页表项:页表项存放地址=页表地址+(页号×页表项大小)

为了实现上面的“随机访问”,各页表项必须连续存放。

(2)二级页表

页目录号(一级页号) 页表索引(二级页号) 页内偏移量

多级页表及访存次数求解_第1张图片

优点】各级页表不再需要连续的存储空间来存放;

缺点】地址转换时访存次数增加了(每一级页表的查询都要访问)。

【题目】

已知系统为32位实地址,采用48位虚拟地址,页面大小为4KB,页表项大小为8B,每段最大为4GB。

(1)假设系统使用纯页式存储,则要采用多少级页表?页内偏移为多少

【解析】页内偏移为12位,36位虚页号。采用多级页表时,最高级页表项不能超出一页大小;每页能容纳的页表项数为4KB/8B=512=2^9,36/9=4,因此应采用4级页表,最高级页表项正好占据一页空间。(最多只能有9bit作为各级页表的页号)

注意:如果采用纯页式存储,多级页表,即每级页表结构中的每个页表都必须正好存放在一个物理页面中

(2)假设系统采用一级页表,TLB命中率为98%,TLB访问时间为10ns,内存访问时间为100ns,并假设当TLB访问失败时才开始访问内存,问平均页面访问时间是多少?

【解析】98%*110+2%*210=112ns 

【变式】若假设TLB和慢表同时开始查询,若TLB命中则停止查询慢表,若TLB命中则停止查询慢表,则此题答案为:(10+100)×98%+(100+100)×2%(因为同时查,知道TLB不命中时内存也已经访问了10ns

若题目没明说,则默认先查询TLB,再查询页表

查询

(3)若是二级页表,页面平均访问时间是多少?

【解析】98%*110+2%*310=114ns

多级页表及访存次数求解_第2张图片

多级页表及访存次数求解_第3张图片

注意:本题不是“虚拟存储管理系统”,不用考虑缺页、调页的情况。

(4)上题中,若要满足访问时间小于120ns,则命中率至少需要多少?

【解析】设快表命中率为p,应满足

P*110+(1-p)*310≤120ns  p≥95%

(5)若系统采用段页式存储,则每用户最多可以有多少个段?段内采用几级页表?

【思路】先考虑纯段式的逻辑地址结构,段内偏移量根据“每段最大为4GB”得到为32位。

48-32=16,最多支持2^16个段。下一步将段内偏移量进行分页

多级页表及访存次数求解_第4张图片

【解析】

48位虚拟地址,每段最大为4GB,因此段内地址为32位,段号为48-32=16位。每个用户最多可以有2^16段。段内采用页式地址,与1)中计算同理,(32-12)/9取上整为3,因此段内应采用3级页表。

注意

(1)在采用多级页表的页式存储管理中,若快表命中,则只需要一次访问内存操作即可存取指令或数据。以1)中假设条件为例,不考虑分段时,需要4级页表。若快表未命中,则需要从虚拟地址的高位起,每9位逐级访问各级页表,第5次才能访问到指令或数据所在的内存页面。

(2)在一个进程中,段表只有一个,而页表可能有多个

你可能感兴趣的:(操作系统)