我正在用 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-node、超级块或数据块,并且每个结构也有struct
512 字节的大小,我该如何正确地将其unsigned char *
转换为 i-node struct
,或者数据struct
等?
谢谢。