1

xv6 mkfs.c 文件声明变量:

int nblocks = 985;
int nlog = LOGSIZE;
int ninodes = 200;
int size = 1024;

该声明应该适用于具有 12 个直接块和 1 个间接块的 inode,我不明白为什么 nblocks 被定义为 985?一个 inode 中的块数是 140(间接 128 + 直接 12),所以我不完全理解 985 来自哪里以及 1024 的大小。

如果我能理解那部分,我想我将能够更改变量以支持三重间接。

谢谢!

4

1 回答 1

0

一个 inode 在磁盘上仅占用 32 个字节 ( sizeof(struct inode))。只有在写入 inode 时,它​​才会开始占用磁盘上的更多空间(块)。

注意这段代码:

bitblocks = size/(512*8) + 1;
usedblocks = ninodes / IPB + 3 + bitblocks;
...
assert(nblocks + usedblocks + nlog == size);
于 2015-07-05T13:39:30.600 回答