2011-02-26 16 views
0
Hi, 


In order to use large size page table hierarichal paging is done . 
In case of two level page table scheme . for : 
logical address space - 32bit - 2^32 
page size - 4kb i.e 2^12 

In one level : 

page number - 20bit calculated as (32 - 12) 
page offset - 12 bit 

Now, In two level : 

again, page number - 20bit is split into pagenumber(second level) and page offset .also 
the address space is (2^20) 

considering again page size of 4kb - (2^12) 
so page number(second level) should be calculated as : (20 - 12) - 8bits 
and page offset : 12 bits. 

But, It is mentioned that page number is divided evenly : 

i.e page number p1 - 10 bits 
    page number p2 - 10 bits 
    page offset d - 12bits. 

Why is the second level pagenumber divided evenly ? Is it that this division done 
arbitarily according the requirement ? Is there no specific method for dividing as in case of single-level page table ?  

任何幫助都是有價值的。 謝謝, Tazim邏輯地址在多級頁表的情況下如何劃分

回答

3

4 KB頁,最後12位是頁面的偏移量。這爲32位地址留下了20位。這20位用作頁表的索引,而不是偏移量。通過在2個級別之間均勻分割它們,這些表格都是相同的大小。第一個表格指定第二個表格的地址,第二個表格指定頁面的物理地址。每個索引的10位表示每個表中的1024個條目。這非常方便,因爲這意味着當使用32位條目時,每個表格只有1頁。

例如:取地址0x00FF1234。這個地址的二進制表示是00000000111111110001001000110100.通過分割這個,我們得到0000000011 1111110001 001000110100或0x3 0x3F1 0x234。因此,第一級表中的項目3給出了第二級表的地址,第二個表中的項目0x3F1給出了所使用的頁面的地址,並且地址是0x234字節到該頁面中。

0

This blog系列有一個非常深入的例子來說明頁表如何工作,如何轉換虛擬< - >物理地址等。

這是一個exerpt; Page Table address resolution

0

很明顯,偏移需要12位。 當每個條目的大小是4字節時,得到的結果是外部頁表的10位和內部表的表的10位。計算如下:

(2^20個條目×4個字節/條目)/ 4k個字節= 2^10->外部頁面表應該有10個位 (頁表所佔空間)/ frame頁面)size = no。內頁表

4k字節/ 4字節= 2^10->內頁表應該有10位 (頁表的頁面大小)/條目大小= no。幀

它如何均勻地獲得10位和10位。對於不同的情況,沒有必要均勻分配。