在N写操作之后,UNIX如何为磁盘上的文件分配空间?

时间:2017-09-19 16:03:48

标签: file unix operating-system diskspace

假设您需要在磁盘上执行N = 5000次写入操作,并且每个操作都只填充一个块。每个块可以存储1024字节,因此它可以存储256个4字节指针。

此外,假设文件的i节点具有:

  • 指向数据块的13个指针
  • 指向单个间接间接块的指针
  • 指向双重间接间接块的指针
  • 指向三重间接间接块的指针

将使用多少个块(数据和间接)来执行5000次写入操作?

我的解决方案

首先,UNIX将使用13个指针到数据块存储13个块。现在N = 5000-13 = 4987

然后,UNIX使用索引块指向的以下256个​​块(由单个间接间接访问)。所以N = 4987-256 = 4731

然后UNIX将使用双重间接。它将需要通过双重间接间接访问的单个间接间接的4731 / 256 = 19(近似多余的)块。其中,前18个将指向数据块的所有指针,而第19个指针将只定义第一个4731 % 256 = 123指针。

因此,分配的块总数将为:

13 + 1 + 256 + 1 + 19 + 256*18 + 123 = 5021

BUT

我知道UNIX以16的数量分配块。因此,它不会仅分配19个单个间接块,而是分配32个单个间接块(+13)。此外,UNIX不会分配123块数据,而是分配128(+5)。

因此,分配的块总数将为:

5021 + 13 + 5 = 5039

如果我错了,你可以纠正我吗?

0 个答案:

没有答案