МОДЕЛИРОВАНИЕ УПРАВЛЕНИЯ ФАЙЛАМИ НА ОСНОВЕ ОПЕРАЦИОННОЙ СИСТЕМЫ
Конференция: CCLXX Студенческая международная научно-практическая конференция «Молодежный научные форум»
Секция: Технические науки
CCLXX Студенческая международная научно-практическая конференция «Молодежный научные форум»
МОДЕЛИРОВАНИЕ УПРАВЛЕНИЯ ФАЙЛАМИ НА ОСНОВЕ ОПЕРАЦИОННОЙ СИСТЕМЫ
1. Функциональный анализ
Анализ требований к моделируемому управлению файлами в основном сводится к пониманию принципа работы файловой системы операционной системы и углубленному освоению методологии проектирования команд работы с файлами путем моделирования системы управления файлами.
Управление каталогами: поддержка создания, удаления, отображения и других операций многоуровневой структуры каталогов. Поддержка переключения текущего каталога (команда cd).
Управление файлами: поддержка создания файлов (команда edit), удаления (команда delfile), переименования (команда rename) и других операций. Поддержка управления правами на чтение и запись файлов.
Операции с содержимым файлов: поддержка отображения и изменения содержимого файлов.
Управление пространством хранения: при создании файла или каталога используется метод динамического приложения для запроса выделения пространства хранения. При удалении файла или каталога запрашиваемое пространство должно быть освобождено.
Обработка ошибок: при нелегальной работе или несуществующих файлах/каталогах должны выдаваться понятные сообщения об ошибках.
2.Идеи дизайна
Разберитесь в основных принципах работы файловой системы операционной системы. Изучите метод проектирования команд работы с файлами. Углубите понимание некоторых проблем файловой системы и улучшите способность к проектированию программного обеспечения и логическому мышлению.
Инициализация системы: построение начальной структуры каталогов и выделение соответствующего пространства для хранения данных.
Выполнение команд: пользователь выбирает команду операции, которая должна быть выполнена, в соответствии с опциями меню, предоставляемыми системой, и система выполняет соответствующую операцию в соответствии с командой.
Обработка ошибок: индикация и обработка ошибок, связанных с переименованием файлов или каталогов, несуществованием файлов или каталогов, удалением файлов, доступных только для чтения, и используемых файлов.
Вывод на экран: после каждого выполнения команды операции структура каталогов после выполнения команды будет выводиться на экран, чтобы пользователи могли наблюдать за ситуацией выполнения.
Управление файлами предназначено для предоставления пользователям вызовов, связанных с файлами и каталогами, унификации управления пространством хранения файлов, определения места и формы хранения файлов, а также выполнения операций доступа к файлам и защиты общего доступа.
3. Ключевой код
Блок данных (диск) - это структура, используемая для хранения данных, которая включает в себя содержимое файла и содержимое каталога. В данной системе, учитывая практичность и удобство, блок данных реализован в виде массива.
struct diskblock
{
bool occupy=0; //занят или нет
char block[blockSize]; //содержимое блока
};
struct disk
{
int freeblock = blockNum;
diskblock Disk[blockNum]; //Содержание блока.
};
Класс File (Файл), который используется для хранения структуры данных файла. Связи файла с блоками данных и каталогами реализуются с помощью указателей.
класс File (Файл)
{
public.
char FileName[20]; //имя файла
char FileType[4]; //атрибуты файла
int FileLength; //размер файла
bool readOnly; //Прочитать только для чтения
bool shared; //обмен файлами
bool isOpen; //Открыт ли файл?
private.
int* Index; //файл соответствует блоку данных
}
Класс Directory в основном используется для связывания файлов. Поскольку в данной операционной системе используется древовидная структура, то для записи связей типа father в древовидную структуру добавляется соответствующая структура каталогов.
класс Directory
{
public.
char dirName[20];//имя каталога
int dirLength; //размер файла
bool readOnly; //только чтение
bool shared; //общая папка
int subDirMaxNum = INITNUM; //FileMaxNum; //FileMaxNum; //FileMaxNum = INITNUM
int fileMaxNum = INITNUM; //Размер файла
int fileMaxNum; int fileMaxNum = INITNUM; int filenum; //Разделение папки
int subdirnum; //SubdirNum; //SubdirMaxNum = INITNUM
private.
Directory* fatherDir; int
Directory** subDir; File** filelist; int
Directory* fatherDir; Directory** subDir; File** filelist.
}
Описание ключевых функций: Функции инициализации
void initializeSystem().
Выполнение операций над каталогами
Directory* getFatherDir();
Directory* getSubDir(const char*nanme);
File* getFile(const char* name);
int mkDir(const char* dirname);
int delDir(const char* dir);
Основные операции над файлами
int createFile(const char* dirname).
int delFile(const char* file);
void reName(const char* name);
char* readFile() const;
void writeFile( const char* buffer).
File* copyFile() const;