xv6操作系统 - 三重间接的实现

时间:2015-06-19 08:30:14

标签: c xv6

xv6 mkfs.c文件声明变量:

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

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

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

谢谢!

1 个答案:

答案 0 :(得分:0)

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

请注意这段代码:

bitblocks = size/(512*8) + 1;
usedblocks = ninodes / IPB + 3 + bitblocks;
...
assert(nblocks + usedblocks + nlog == size);