【发布时间】:2013-10-15 20:41:25
【问题描述】:
我正在用 C 语言构建这个文件系统。目前我正处于任务的第一步,即创建一个在内存中工作的简单文件系统。我的问题更多地基于 C 而不是基于 Unix 文件系统。我正在尝试“模拟”原始磁盘。我有以下结构:
struct disk {
void *data;
unsigned int numOfBlocks;
};
让我们假设这个磁盘上的一个块是 512 字节(就像原始的 Unix 文件系统一样)。我定义了一些函数来创建磁盘、从磁盘读取和写入磁盘。然后我的工作就是实现各种东西,例如数据块、i-node 块、超级块等。
查看上面的void *data 变量。我希望这是一个二维数组。它应该是一个块数组的数组。所以...最有意义的是使用这样的东西。
unsigned char *data[30][512]; // Assuming the disk holds 30 blocks of 512 bytes each
问题来了:如果我定义了其他结构来表示 i 节点、超级块或数据块,并且每个结构的 struct 大小为 512 字节,我该如何正确地转换这个 @ 987654325@到i-nodestruct,还是数据struct等?
谢谢。
【问题讨论】:
标签: c unix filesystems