每种情况下的最大文件大小是多少?

时间:2010-12-08 01:50:06

标签: operating-system

Assume disc blocks are 8K bytes and that disc addresses are 32 bits: •
from the information in the i-node? – What size can be directly addressed 
– What size of file requires a double indirect block?
– What is the largest possible file?

来源:http://ti.uni-due.de/ti/en/education/teaching/ss06/dv2/ex2_sol.pdf

有人可以帮我解决这些问题吗?

3 个答案:

答案 0 :(得分:7)

几年前,我曾经是一名文件系统开发人员。

使用链接中提供的资料......

可以使用存储在inode中的直接块访问0 ...(80 kB - 1)范围内的任何文件偏移量。这是因为有10个8 kB的块。

由于光盘块为8 kB(8192字节),光盘地址为32位(4字节),因此每个光盘块最多可容纳2048(8192/4)个光盘地址条目。这意味着单个间接块可以引用最多2048 * 8 kB字节的文件数据(16 MB)。扩展这一点,我们发现双重间接块可以引用最多2048 * 2048 * 8kB的文件数据(32 GB)。

使用直接块可以访问多达80 kB的文件数据。这转换为文件偏移0到(80 kB - 1),包括在内。

使用inode中存储的单个间接块可以访问最多16 MB的文件数据。这可以转换为80 kB到(16 MB + 80 kB - 1)的文件偏移量。

使用存储在inode中的双重间接块,最多可以访问32 GB的文件数据。这转换为文件偏移(16 MB + 80 kB)到(32 GB + 16 MB + 80 kB - 1),包括在内。

使用存储在inode中的三重间接块,可以访问最多64 TB的文件数据。这转换为文件偏移(32 GB + 16 MB + 80 kB)到(64 TB + 32 GB + 16 MB + 80 kB - 1),包括在内。

因此,文件的理论最大大小为64 TB + 32 GB + 16 MB + 80 kB。

实际的最大尺寸是另一回事。它可以受以下任何一个或组合的限制:

  1. 光盘尺寸。
  2. 分区大小。
  3. 固有文件系统元数据限制。即使X小于理论上的最大文件大小,某些文件系统的设计也不能超过X大小。
  4. 与第3项相关,但它本身就是在inode中保留的用于存储文件大小的位数。如果内存服务,原始Ext2将文件大小限制为32位。这为文件大小创建了(2 GB - 1)限制。
  5. 如果文件系统支持稀疏文件(链接中描述的文件系统可能会使用间接块),则可以“解决”某些实际限制。稀疏文件允许在1 GB光盘上“装配”2 TB文件等情况,而不使用2 TB的实际磁盘空间。顺便说一句,这是为什么inode可能经常包含有关文件实际使用的块数的信息的原因之一。

    希望有所帮助。

答案 1 :(得分:1)

我不熟悉unix系统,但是在您提问的文档的第18/19页上 似乎给出了答案。你有什么问题?

  

假设磁盘块是8K字节和   光盘地址是32位: -   什么尺寸可以直接解决   从i节点的信息? -   什么尺寸的文件需要双倍   间接阻滞? - 什么是最大的   可能的文件?答案:a)磁盘块=   8K字节i-node => 10个磁盘块   可以访问地址8K * 10 = 80K   直接

答案 2 :(得分:1)

答案实际上是在文件中给出的,人们需要阅读源材料,这些幻灯片是基于。

基本上:

Assume disc blocks are 8K bytes and that disc addresses are 32 bits:
1)What size can be directly addressed from the information in the i-node?
2)What size of file requires a double indirect block? 
3)What is the largest possible file?

在答案前的幻灯片上,解释了Unix文件的结构,它非常清楚地说明了10个块地址。

显然8K * 10 = 80k字节。

如果没有讲座本身,我将无法引用您自己的材料,您可以自己研究,但我会继续。

我知道2 ^ 8是256而2 ^ 3是8所以256 * 8 = 2048KB这是2MB * 8 = 16384 * 1024 = 16777216 = 16MB

Double Indirect是间接地址(两次)所以只有2048 * 2048,即4GB * 8 * 1024 = 34359738368 = 32GB

Triple indirect是双重间接地址中间接的地址,所以

32GB * 2048(2MB)= 70368744177664 = 64TB

是的,我查看了答案并得出了一些结论,没有源材料,我不能发布任何其他内容。