xv6操作系统——三重间接的实现
xv6 operating system - Implementation of triple indirection
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 的大小。
如果我能理解那部分,我想我将能够更改变量以支持三重间接寻址。
谢谢!
一个 inode 在磁盘上只占用 32 个字节 (sizeof(struct inode)
)。仅当写入 inode 时,它才开始在磁盘上占用更多 space(块)。
注意这段代码:
bitblocks = size/(512*8) + 1;
usedblocks = ninodes / IPB + 3 + bitblocks;
...
assert(nblocks + usedblocks + nlog == size);
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 的大小。
如果我能理解那部分,我想我将能够更改变量以支持三重间接寻址。
谢谢!
一个 inode 在磁盘上只占用 32 个字节 (sizeof(struct inode)
)。仅当写入 inode 时,它才开始在磁盘上占用更多 space(块)。
注意这段代码:
bitblocks = size/(512*8) + 1;
usedblocks = ninodes / IPB + 3 + bitblocks;
...
assert(nblocks + usedblocks + nlog == size);