Я работаю над проектом, где мне нужно создать все основные компоненты для виртуальной файловой системы (блоки памяти, таблицу имен файлов, inodes и т. Д.). Моя система должна иметь возможность создавать однослойные (без подкаталогов) «диск», который состоит из блоков фиксированной памяти (в данном случае 256 байтов). Я понимаю все основные компоненты и их функции применительно к файловой системе, но я не уверен, как начать создавать блоки памяти для выделения. У меня нет структуры, предназначенной еще для inodes или таблицы файлов (я должен придумать свой собственный), но я считаю, что у меня есть базовое распределение памяти для создания «диска», где я могу форматировать и добавить последующие структуры данных:Создание блока памяти виртуальной файловой системы
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 байт, который будет использоваться для хранения файлов и хранения метаданных, как только этот «диск» правильно распределяли?