【问题标题】:xv6 operating system - Implementation of triple indirectionxv6操作系统——三重间接的实现
【发布时间】:2015-06-19 08:30:13
【问题描述】:

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 的大小。

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

谢谢!

【问题讨论】:

标签: c xv6


【解决方案1】:

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

注意这段代码:

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

【讨论】:

    猜你喜欢
    • 2015-08-31
    • 2017-02-14
    • 2016-04-15
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 2012-03-11
    • 1970-01-01
    相关资源
    最近更新 更多