虚拟文件系统内存块创建
问题描述:
我正在创建一个项目,我需要为虚拟文件系统(内存块,文件名表,inode等)创建所有基本组件。我的系统需要能够创建一个由固定内存块组成的单层(无子目录)“磁盘”(本例中为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字节的内存块将被用于存储文件和元数据存储上一次这个“盘”是正确的分区?
答
最好的办法是使用内存映射文件作为虚拟磁盘。