gpt4 book ai didi

virtual - 如何计算页表大小?

转载 作者:行者123 更新时间:2023-12-03 21:10:45 30 4
gpt4 key购买 nike

给定:64位虚拟字节地址,16 KB页面,32位物理字节地址。

假设有效,保护,脏和使用位总共需要4位并且所有虚拟页都在使用中,此计算机上的页表的总大小是多少。

到目前为止,我知道页表条目的总数:2 ^ 64/2 ^ 14 = 2 ^ 50,但是无法理解如何查找每个条目的大小。

每个条目确实包含4位,如问题中所述,但是能否从物理字节地址中找到其余的条目大小?我对这部分感到困惑。

谢谢。

最佳答案

请参阅下面的一种计算页表大小的方法:


首先通过计算log2(页面大小以字节为单位)获取页面偏移量。在您的示例中,页面大小为16 KB,因此log2(16 * 2 ^ 10)为14;也就是说,页面偏移是14位。
然后,通过从分配给物理地址的总位数中减去页面偏移量,计算物理页码(PPN)大小。由于在您的示例中,物理地址为32位,PPN = 32-14或18位。
现在,您可以通过将有效位,保护位等添加到计算出的PPN中来计算页表项(PTE)的大小。该值将是每个页面条目所需的总位数。在我们的示例中,PTE将为22位。
我们需要的最后一条信息是页面表中的页面条目数。我们可以通过从虚拟页号的总位数中减去页偏移量来获得此值;也就是说,64-14 = 50,即我们需要2 ^ 50个条目来表示虚拟地址的完整范围。


因此,总页表大小达到2 ^ 50 * 22位,大约是2.75PB。由于要在内存中保留大量内存,并且可能昂贵且缓慢,因此现代处理器将Translation Lookaside Buffer (TLB)用作最近使用的页面条目的缓存。

希望这可以帮助!

关于virtual - 如何计算页表大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7910240/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com