2016-04-15 4 views
0

Я работаю над проектом, где мне нужно создать все основные компоненты для виртуальной файловой системы (блоки памяти, таблицу имен файлов, 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 байт, который будет использоваться для хранения файлов и хранения метаданных, как только этот «диск» правильно распределяли?

ответ

0

Лучше всего использовать файл с отображением памяти, который будет служить виртуальным диском.

Смежные вопросы