【发布时间】:2016-04-15 02:57:23
【问题描述】:
我正在做一个项目,我需要为虚拟文件系统创建所有基本组件(内存块、文件名表、索引节点等)。我的系统需要能够制作一个由固定内存块(在本例中为 256 字节)组成的单层(无子目录)“磁盘”。就使用文件系统而言,我了解所有基本组件及其功能,但我不确定如何开始制作内存块进行分配。 我还没有为 inode 或文件表设计的结构(我需要自己想出),但我相信我有基本的内存分配设置来制作“磁盘”,然后我可以在其中格式化和添加后续数据结构:
int make_disk(char const *name)
{
int c, dex;
char buff[BLOKSIZE];
if(!name)
{
fprintf(stderr, "Make: Invalid Name\n");
return -1;
}
if((c=open(name, O_WRONLY | O_CREAT | O_TRUNC, 0644)) < 0)
{
perror("Cannot Open File\n");
return -1;
}
memset(buff, 0, BLOKSIZE);
for(dex=0;dex<NUMBLOKS;dex++)
{
write(c, buff, BLOKSIZE);
}
close(c);
return 0;
}
我的主要问题是,一旦这个“磁盘”被正确分区,我在正确分配将用于文件存储和元数据存储的 256 字节内存块方面是否正确?
【问题讨论】:
标签: c memory filesystems