【发布时间】:2019-03-25 00:38:23
【问题描述】:
给定一个使用 32 位虚拟地址的虚拟内存系统。 每个进程占用 1 MiB 内存的页表。 每个 PTE(页表条目需要 4 个字节。 系统共有 256 MB 可用内存。
我了解页表本质上是一个条目列表 (PTE),它提供虚拟地址到物理地址的映射。
我需要计算每个虚拟页面的大小。但我不知道如何。 到目前为止,我得到的只是 2^20(page-table size)/2^2(PTE size)=2^18 这给了我可以在页表中拥有的条目总数。我什至不确定这对于查找每个虚拟页面的大小是否有用。
谁能指出我正确的方向?也许我误解了这些指标与虚拟页面大小的关系。
编辑:我发现页面的大小由以下决定。 虚拟地址由页指针位和偏移量组成。 虚拟地址的最后一位称为偏移量,它是您想要的字节地址与页面开始之间的位置差异。您需要足够的偏移位才能访问页面中的任何字节。对于 4K 页面,您需要 (4K == (4 * 1024) == 4096 == 212 ==) 12 位偏移量。
页指针可以由表中的条目数确定。这只是我在 2^20(page-table size)/2^2(PTE size)=2^18 个条目之前的公式。这意味着我的页面指针的虚拟地址中使用了 18 位。我可以通过 2^32(虚拟地址大小)/2^18 来确定偏移量,这给了我 2^14。因此,我的虚拟地址的页面大小为 2^14 或 16KiB。
【问题讨论】:
标签: operating-system computer-science cpu-architecture virtual-memory