2012-08-03 118 views
0

我在這裏有個問題,我不知道如何計算可以存儲在使用inode的磁盤上的文件的最大大小和磁盤塊。什麼是可以存儲在使用inode和磁盤塊的磁盤上的最大文件大小

假設4096個字節的頁面大小,指向一個幀中的頁表項佔用8個字節(4個 字節的指針加上一些標誌),並指向另一頁表中的頁表條目 需要4字節,如果 每個級別的頁表必須適合單個頁面,那麼需要多少級別的頁表來映射32位地址空間?

在使用存儲4096字節的inode和磁盤塊的磁盤上,可以存儲的最大文件大小是多少。每個inode可以存儲10個條目,並且第一個inode爲級聯inode保留最後兩個條目?

對於問題的第一部分,我得到的總層數是3,但我不知道如何做第二部分。

回答

0

你所描述的聽起來像是EXT文件系統。

EXT3總共使用15個指針。

前12項是直接的:它們直接指向數據塊。第三個到最後一個條目是間接的1級:它指向一個完全填充1級條目的塊。第二個到最後一個條目是間接的第2級:它指向一個完全充滿第1級間接指令的塊。最後一項是間接的3級。

該系統的最大文件大小通常是操作系統的限制,通常在16GB到2TB之間。理論最大值爲12I + I^2/P + I^3/P^2 + I^4/P^3,其中I是以字節爲單位的inode大小(通常爲4096,儘管可能有不同的值) ,P是指針大小,以字節(4)爲單位。這產生了4,402,345,721,856字節的最大理論大小。

EXT3 Inode pointer structure

+0

我忘了加上問題的第一部分: 假設的4096個字節,一個指向幀的頁表條目的頁大小需要8個字節(指針加上一些 4個 字節ags),並且指向另一個頁表 的頁表項需要4個字節,如果每個級別的頁表必須分配到單個頁面中,則需要多少級別的頁表來映射32位地址空間? 在這部分的問題中,我得到的級別總數是3. – 2012-08-03 17:58:06

+0

3似乎是正確的。 2級將提供足夠的索引2GB,這只是31位。第一個頁面表是1級indirects,指向頁表。第二頁表格將是直接的,並且將指向框架。第一個表有2^10個條目,所有的第二個表都有2^9個,每個幀都是2^12個字節。產品是2 ^(10 + 9 + 12)== 2^31。 – Wug 2012-08-03 18:15:55