假设您需要在磁盘上执行N = 5000次写入操作,并且每个操作都只填充一个块。每个块可以存储1024字节,因此它可以存储256个4字节指针。
此外,假设文件的i节点具有:
将使用多少个块(数据和间接)来执行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
如果我错了,你可以纠正我吗?