计算 BeDS 支持的最大文件大小
Calculation of max file size supported in BeFS
我正在阅读 “使用 Be 文件系统进行实用文件系统设计”,在 BeFS 中,inode 结构的“数据流”部分如下所示:
struct {
// each block_run(8 byte) is a disk address space which maps from
// at lease 1 block and 65536 block at most
block_run direct[12];
// points to a block which contains block_run of real data
block_run indirect;
// points to a block which contains block_run of indirect blocks
block_run double_indirect;
}
然后这本书开始计算最小和最大文件大小,我们看最小的:每个直接block_run
映射1块
每个间接映射至少 4K space(512 block_run
's),每个双间接映射至少 4K space(512 block_run
's),每个块1KB 大小,最小文件大小结束于:
direct blocks = 12K
indirect blocks = 512K (4K indirect block maps 512 block_runs of 1K each)
double-indirect blocks = 1024MB (4K double-indirect page maps 512 indirect pages that map 512 block_runs of 4K each)
我确实对映射的双间接块感到困惑 space,它不应该是:
double-indirect blocks = 512 * 512KB (each indirect page maps 512K space?)
嗯,看了很多times.The double-indirect block contains a block_run which contains block address, it does NOT contains indirect block address.So 计算是正确的。
我正在阅读 “使用 Be 文件系统进行实用文件系统设计”,在 BeFS 中,inode 结构的“数据流”部分如下所示:
struct {
// each block_run(8 byte) is a disk address space which maps from
// at lease 1 block and 65536 block at most
block_run direct[12];
// points to a block which contains block_run of real data
block_run indirect;
// points to a block which contains block_run of indirect blocks
block_run double_indirect;
}
然后这本书开始计算最小和最大文件大小,我们看最小的:每个直接block_run
映射1块
每个间接映射至少 4K space(512 block_run
's),每个双间接映射至少 4K space(512 block_run
's),每个块1KB 大小,最小文件大小结束于:
direct blocks = 12K
indirect blocks = 512K (4K indirect block maps 512 block_runs of 1K each)
double-indirect blocks = 1024MB (4K double-indirect page maps 512 indirect pages that map 512 block_runs of 4K each)
我确实对映射的双间接块感到困惑 space,它不应该是:
double-indirect blocks = 512 * 512KB (each indirect page maps 512K space?)
嗯,看了很多times.The double-indirect block contains a block_run which contains block address, it does NOT contains indirect block address.So 计算是正确的。