虚拟文件系统内存块创建

问题描述:

我正在创建一个项目,我需要为虚拟文件系统(内存块,文件名表,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字节的内存块将被用于存储文件和元数据存储上一次这个“盘”是正确的分区?

最好的办法是使用内存映射文件作为虚拟磁盘。