【问题标题】:What is the largest file size one can store on a disk that uses inodes and disk blocks在使用 inode 和磁盘块的磁盘上可以存储的最大文件大小是多少
【发布时间】:2012-08-01 18:39:11
【问题描述】:

我有一个问题,我不知道如何计算可以存储在使用 inode 和磁盘块的磁盘上的文件的最大大小。

假设页大小为 4096 字节,则指向一个帧的页表项占用 8 个字节(4 指针的字节加上一些标志),以及指向另一个页表的页表条目 占用 4 个字节,如果需要,映射一个 32 位地址空间需要多少级页表 每个级别的页表都必须放在一个页面中?

在使用 inode 和存储 4096 字节的磁盘块的磁盘上可以存储的最大文件大小。每个inode可以存储10个条目,第一个inode保留后两个条目用于级联inode???

对于第一部分的问题,我得到的级别总数是3,但我不知道如何做第二部分。

【问题讨论】:

    标签: operating-system


    【解决方案1】:

    您所描述的内容听起来像是 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

    【讨论】:

    • 我忘了添加问题的第一部分:假设页面大小为 4096 字节,指向帧的页表条目需要 8 个字节(4 个字节用于指针加上一些 ags),并且一个指向另一个页表的页表条目占用 4 个字节,如果每个级别的页表都必须映射到一个单独的页中,则需要多少级页表才能映射一个 32 位地址空间?在这部分问题中,我得到的关卡总数是 3。
    • 3 似乎是正确的。 2 级将提供足够的索引 2GB,这只有 31 位。第一个页表将是 1 级间接,指向页表。第二个页表将是直接的并指向框架。第一个表有 2^10 个条目,所有第二个表都有 2^9 个,每帧是 2^12 个字节。乘积为 2^(10+9+12) == 2^31。
    猜你喜欢
    • 1970-01-01
    • 2017-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-17
    • 2023-03-29
    • 2011-04-14
    相关资源
    最近更新 更多