无法解决操作系统中的内存管理问题

时间:2013-11-16 22:13:28

标签: memory-management operating-system paging

我每周都进行一次操作考试,面对以下问题: enter image description here

我用这种方式解决了第一部分:

2 ^ 32/2 ^ 12 = 2 ^ 20 * 4 = 4 * 2 ^ 20页面大小

首先,我想知道我的答案是否正确?然后对于第二部分我不知道如何解决它我读了操作系统概念的第8章但是无法知道如何解决它......

有人可以帮忙吗?

1 个答案:

答案 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

这是第二个问题的答案