2018年408真题第45题
请根据下图给出的虚拟存储管理方式,回答下列问题。
(1)某虚拟地址对应的页目录号为 6,在相应的页表中对应的页号为 6,页内偏移量为 8, 该虚拟地址的十六进制表示是什么?
(2)寄存器 PDBR 用于保存当前进程的页目录起始地址,该地址是物理地址还是虚拟地址? 进程切换时,PDBR 的内容是否会变化?说明理由。同一进程的线程切换时,PDBR 的内容是否 会变化?说明理由。
(3)为了支持改进型 CLOCK 置换算法,需要在页表项中设置哪些字段?
图1 虚拟存储管理方式
试题分析:
第一问主要考察虚拟地址的构成。考生若能充分理解虚拟地址的构成就能顺利解答这一问。
第二问主要考察考生对虚拟地址和物理地址的理解,以及对进程虚拟地址空间的独立性,线程与进程地址空间关系的理解。
第三问主要考察虚拟内存中的页面替换算法,考生需要理解常见的页面替换算法。
相关知识点回归和试题解析:
第一问:虚拟地址分为两个部分,一部分是虚页号,另一部分是页内地址(也称为页内偏移)。其中,由于虚拟内存可能存在多级页表索引。所以,虚页号还可以再划分,有多少级页表,虚页号就相应地划分多少次,如下图所示(图中,v*n表示Virtual Page Number,即虚拟页号;VPO表示Virtual Page Offset,即虚拟页内偏移;PPN表示Physical Page Number,即物理页号;PPO表示Physical Page Offset,即物理页面偏移)。
图2 使用k级页表的地址翻译
图1表明,虚页号由20位构成,页内地址由12位构成。其中,虚页号分为两部分,页目录号占10位,页表号占10位。
第二问:寄存器PDBR保存的是当前进程的页目录的起始地址,该地址是物理地址。进程切换时,PDBR寄存器的内容会发生变化。原因是每个进程都拥有自己独立的虚拟地址空间以及自己的页目录和页表。当进程切换时,PDBR寄存器的内容会更新,以匹配到当前进程的页目录的物理地址。同一进程的线程切换时,PDBR寄存器的内容不会更新。同一个进程里的不同线程,共享这个进程的地址空间,因此PDBR寄存器的内容不会发生变化。
第三问:使用改进型CLOCK置换算法,需要在页表项中增加使用位和修改位。因此需要增设两个字段,一个表示访问字段,一个表示修改字段。
总结:
这道题考察了虚拟内存的一些基本原理,如虚拟地址与物理地址的构成;由虚拟地址映射到物理地址的翻译过程;进程与线程的地址空间以及典型的页面分配算法。
考生需要深入理解这些知识点,并通过做题加以巩固。
下期继续为大家推出有关虚拟内存的考试题。期待各位考生朋友们能将这一知识点的分数都拿到手。