【正确答案】
B
【答案解析】解析:在段页式存储系统中,为了获取一条指令或数据,必须三次访问内存,第一次访问内存中的段表,从中取得页表地址;第二次访问内存中的页表,从中取得该页所在的物理块号,并将该块号与页内地址一起形成指令或数据的物理地址;第三次访问根据第二次访问所得的地址,真正取出指令或数据(但这是在访问地址正确的情况下)。 为了防止越界,在段页式存储系统中,配置了一个段表寄存器,其中存放段表始址和段表长度。在进行地址变换时,首先利用段号,将它与段长进行比较。若段号超出段表长度,表示越界了。 同样段表中的,页表大小这项也是为了预防地址越界的情况。 一般情况下,段号页号都是从0开始编址,这点从题目所给的图中也可得知。 该用户访问的3个地址中,地址一,段号检查通过,页号越界,3不在页号0~2范围内,所以只访问内存1次。 地址二,段号检查未通过,8不在段号0~7范围内,越界,所以访问内存0次。 地址三,段号检查通过,且页号也无越界,成功访问到数据,所以访问内存3次。 知识点回顾: 首先必须知道,系统为每个进程建立一张段表,而每个分段有一张页表。 段表项中至少包括段号、页表长度和页表起始地址,页表项中至少包括页号和块号。 段页式系统中从逻辑地址到物理地址的地址变换过程如下: (1)从逻辑地址中取出前几位得到段号S,中间几位得到页号P,后几位得到页内偏移量W。 (2)比较段号S和段表长度M,若S≥M,则产生越界中断,否则转至下一步。 (3)段表中对应段表项地址=段表起始地址F+段号S×段表项大小,取出该段表项内容的前几位得到对应页表的页表长度C,后几位得到对应的页表的起始地址d,若页号P≥C,则产生越界中断,否则转至下一步。 (4)对应页表项地址=d+P×页表项大小,从该页表项内容得到物理块号b。 (5)计算E=b×页表大小L+W。 (6)用得到的物理地址E去访问内存。