2011-11-01 61 views
0

我尽力了解所示的页面翻译概念hereUNIX中的页面大小是多少?

偏移量是12位,这意味着有4096个条目或4K条目。内存中的每个条目都是32位或4字节。所以这意味着一个页面大小为4K x 4Bytes = 16KB。

但这似乎不正确。

我对尺寸的计算已经搞乱了。请帮助我理解这个尺寸的两级翻译。

根据给定的图片。
框架的大小是多少?
页面大小是多少?
页面大小是多少?

结论: 所以我从@chill得到的答案是,在页目录和页表的偏移大小为32位,1024个条目(因此4KB),而在页偏移是8位,4096条目(因此4KB)

+0

我绝不是这方面的专家,但我敢肯定,你对这里测量的东西感到困惑。每个页面的大小并不直接与每个页面的大小相关。具有4K条目的页表格意味着它在32位机器上的大小将为16K,因为它必须存储4096个32位地址指针,其中每个_point_指向固定大小的存储器(即页面)中的块, 。每个条目指向的页面的实际大小不受此控制。如果碰巧是4K,这意味着您可以从该特定页表中寻址16MB的内存。 – Polynomial

+0

但是如果偏移量是12位,这意味着我可以在页表中存储最多4096个条目?那么对于32位地址,最大页面大小是16KB?那是对的吗? – SMUsamaShah

+1

不可以。请参阅寒意对他的回答的评论。 _page_中的每个条目只是一个字节,而不是四个。这导致4KB页面(12位索引,1字节条目= 2^12 * 1 = 4096)。 _page table_中的条目在32位计算机上是4个字节,因为它们是指向页面的指针。由于页表具有10位索引和4字节条目,因此页表的大小为2^10 * 4 = 4096字节。 – Polynomial

回答

3

因机器而异,可通过sysconf (_SC_PAGE_SIZE);获得。

+0

对不起,我正在学习学生级别的页面翻译,我需要知道它是如何工作的。我看到了很多链接,但他们都只是搞砸了。 – SMUsamaShah

+0

@ LifeH2O,在x86上,每个字节是8位,而不是32个。 – chill

+0

是的,32位总共4bytes。页表指向哪个地址的大小?我认为它是32位的,所以它会使4bytes – SMUsamaShah

相关问题