我每周都进行一次操作考试,面对以下问题:
我用这种方式解决了第一部分:
2 ^ 32/2 ^ 12 = 2 ^ 20 * 4 = 4 * 2 ^ 20页面大小
首先,我想知道我的答案是否正确?然后对于第二部分我不知道如何解决它我读了操作系统概念的第8章但是无法知道如何解决它......
有人可以帮忙吗?
答案 0 :(得分:1)
问题涉及两个案例:
第一种情况:启用单级分页时(第1题) 第二种情况:启用两级分页时(第二个问题)
(请参阅this link以了解如何以图形方式感知两级分页)
现在,为了获得页面表的大小,我们需要页面表条目数和每个条目的大小,然后将它们相乘以获取页面表的大小
给定,页表条目的大小 - 4个字节
问题1:
给定,虚拟内存大小:2 ^ 32字节 每页大小:2 ^ 12个字节 那么,虚拟mermory可以分配的最大页数:2 ^(32-12) - 2 ^ 20页 这意味着,在单级分页的情况下,页面表将包含2 ^ 20个页表项。
目前,我们有多个页表条目和每个页表条目的大小,构成单级页表的大小,即
**2^20(page-table entries) * 4 ( size of each page-table entry in bytes)**
第二个问题:
声明说用于分页页面的页面大小是2 ^ 12字节,这意味着单级页面表被进一步分成2 ^ 12字节的块,这意味着在将页表分成我们得到2 ^ 12个字节块,得到
( 2^20 * 4 ( size of page table ) ) / ( 2 ^ 12 ( block size) ) = 2 ^ 10 page-tables
最多可以形成2 ^ 10页表。
要找到第二级页表的大小,我们需要每个页表条目的条目数和大小。
如上所述,条目数为2 ^ 10。 每个页表项的大小将是10位,必须转换为字节,所以我们必须使它为16位,使其为两个字节,第二页的大小 - 表将是
2 ^ 10 * 2
这是第二个问题的答案