问答题 Gribble公司正在开发一款64位的计算机体系结构,也就是说,在访问内存的时候,最多可以使用64位的地址。假设采用的是虚拟页式存储管理,现在要为这款机器设计相应的地址映射机制。

问答题 假设页面的大小是4KB(即4096B),每个页表项(Page Table Enova,PTE)的长度是4B,而且必须采用三级页表结构,每一级页表结构当中的每个页表都必须正好存放在一个物理页面当中,请问在这种情形下,如何来实现地址的映射?具体来说,对于给定的一个虚拟地址,应该把它划分为几部分,每部分的长度分别是多少,功能是什么?另外,在采用了这种地址映射机制后,可以访问的虚拟地址空间有多大?(提示:64位地址并不一定全部用上)
【正确答案】页面大小为4KB,每个页表项大小为4B,因此在每个页表当中,总共有1024个页表项,对于每个层次的页表来说,都满足这一点,这样每级页表的索引均为10位,由于页面大小为4KB,所以页内偏移地址为12位。逻辑地址被划分为五个部分:
【答案解析】
问答题 假设每个页表项的长度变成了8B,而且必须采用四级页表结构,每级页表结构当中的页表都必须正好存放在一个物理页面当中,请问在这种情形下,系统能够支持的最大的页面大小是多少?此时,虚拟地址应该如何划分?
【正确答案】假定一个页面的大小为2Y,即页内偏移地址为Y位,每个页表可以包含2Y/8=2(Y-3)个页表项,因此每级页表的索引位为Y-3位,总共有4级页表,所以:
4(Y-3)+Y≤64。
Y≤15.2因此Y=15。
所以最大的页面大小为215B=32KB。
总结:像这类题目关键是对逻辑地址的清楚划分,把逻辑地址每个部分是什么划分清楚了,这类题就很容易解决。
【答案解析】