Университет Тонгджи CS "Операционная система" Проектирование курса: файловая система
Этот проект предназначен для курса операционной системы факультета компьютерных наук и техники Университета Тонгджи в 2021 году. Реализация Unix-подобной файловой системы.

Самое простое большое задание в этом семестре (в основном без графического интерфейса), потребовалось 10 дней, чтобы разработать файловую систему
Если этот склад помогает вам, дайте мне звезду?
Если у вас есть какие -либо вопросы, вы также можете поднять их в вопросе, чтобы другие люди могли бы ссылаться или обсудить их вместе?
Репозиторий следует за протоколом с открытым исходным кодом MIT
Эта переменная в основном используется для записи прочтения длины файла в настоящее время. Существование этой переменной уменьшает сложность индексации смешанных файлов. Функциям не нужно вычислять, сколько блоков индекса используется файл, и при этом они не должны знать, что такое смешанная структура индекса файла. Они непосредственно рассматривают файл индекса как гигантский файл со всеми индексными блоками, достигающими максимального размера. Начните пересекать файл из прямого индекса, затем к индексу первого уровня, а затем к индексу второго уровня. Когда длина достигает размера файла, вы можете напрямую выйти из -за обходов файлов любого размера. Однако недостаток этого метода заключается в том, что каждый раз, когда вы читаете файл, он начинается с заголовка файла, что снижает эффективность случайного чтения и письма.
Эта переменная в основном используется, чтобы указать, какую линию редактор начинает отображать текст. Эта переменная начинает вступать в силу, когда количество файловых линий превышает высоту консоли. Количество строк, отображаемых с фактическим текстом курсора консоли, должно быть добавлено в переменную start_line. Когда курсор перейдет к итоги, нажмите клавишу со стрелкой снова, start_line добавит страницу текста в редакторе и наоборот.
Эта переменная принадлежит классу пользовательского интерфейса командной строки и в основном записывает путь пользователя в файловой системе. Поскольку в файловой системе все интерфейсы операции основаны на абсолютном пути, а команды, введенные пользователем в интерфейсе командной строки, основаны на относительном пути Cur_dir. Следовательно, когда пользовательский интерфейс использует интерфейс файловой системы, CUR_DIR должен быть сплайсирован с вводом пути пользователем, а абсолютный путь должен передаваться в качестве параметра для интерфейса функции тихой системы.


Эта файловая система запускается с 64-битной операционной системой Windows. Моделируемый размер объема файла файловой системы составляет 128 МБ. Пожалуйста, убедитесь, что в каталоге программы достаточно свободного места.
Запрещено закрывать программу непосредственно при выходе из программы. Вы должны использовать команду выхода для выхода из файловой системы, в противном случае она может вызвать ошибки или сбои файловой системы.
Тщательно измените файлы /etc/users.txt и /etc/groups.txt. Эти два файла связаны с управлением пользователями. Если формат не изменен должным образом, он может привести к тому, что файловая система не сможет войти в систему или другие проблемы с разрешением.
Если возникают две вышеупомянутые проблемы, попробуйте форматировать файловую систему.
Команды доступны, когда не вошли в систему:
| Заказ | параметр | Функция |
|---|---|---|
| авторизоваться | Имя пользователя (строка) | Пользовательский вход |
| Выход | Выйдите из системы | |
| формат | Формат файловой системы | |
| помощь | Показать список командной строки |
Команды, доступные в состоянии входа в систему:
| Заказ | параметр | Функция |
|---|---|---|
| Выход | Отчет пользователя | |
| Выход | Выйдите из системы | |
| Мкдир | Имя каталога (строка, длина менее 28 байтов, не может быть многоуровневым каталогом) | Создайте подкаталог |
| диск | Имя каталога (строка, длина меньше 28 байтов, подкаталовое имя в текущем каталоге не может быть многоуровневым каталогом) | Перейти в подкаталог |
| лауреат | Показать текущий список каталогов | |
| rmdir | Имя каталога (строка, длина меньше 28 байтов, подкаталовое имя в текущем каталоге не может быть многоуровневым каталогом) | Удалить подкатарии |
| трогать | Имя файла (строка, длина менее 28 байтов, не может быть многоуровневым каталогом) | Создать новый файл |
| chmod | Имя файла (строка, длина менее 28 байтов, имя файла в текущем каталоге не может быть многоуровневым каталогом) | Изменить разрешения на файл или каталог |
| rm | Имя файла (строка, длина менее 28 байтов, имя файла в текущем каталоге не может быть многоуровневым каталогом) | Удалить файлы |
| UserAdd | Имя пользователя имени пользователя (строка) Имя (строка, группа пользователей уже должна существовать) | Добавить пользователя |
| userdel | Имя пользователя (строка, пользователь уже должен существовать) | Удалить пользователей |
| GroupAdd | Имя группы пользователей (строка) | Добавить группу пользователей |
| Groupdel | Имя группы пользователей (строка, группа пользователей уже должна существовать) | Удалить группу пользователей |
| дф | Проверьте использование диска | |
| показывать | Имя файла (строка, длина менее 28 байтов, имя файла в текущем каталоге не может быть многоуровневым каталогом) | Распечатайте содержимое файла. Если файл не является файлом символов, он может вызвать ошибки |
| VI | Имя файла (строка, длина менее 28 байтов, имя файла в текущем каталоге не может быть многоуровневым каталогом) | Откройте файл с редактором |
| формат | Формат файловой системы | |
| Win2fs | Путь файла под Windows (String, соответствует спецификациям файла файла Windows) Имя файла в текущем каталоге файловой системы FS (строка, длиной менее 28 байтов, имя файла под текущим каталогом не может быть многоуровневым каталогом) | Скопировать содержимое файла Windows в файлы файлов FS File |
| fs2win | Имя файла В текущем каталоге файловой системы FS (строка, длиной менее 28 байтов, имя файла в текущем каталоге не может быть многоуровневым каталогом). | Скопируйте содержимое файловой системы FS в файл Windows |
| CLS | Очистить экран | |
| помощь | Показать список командной строки |
Инструкции редактора:
После входа в редактор вы можете перемещать курсор через клавиши стрелки. Когда курсор расположен на верхних и нижних границах, вы можете снова переместить курсор на границу, чтобы завершить поворот на странице текстового содержимого, введите клавишу Enter, чтобы удалить символы перед курсором, введите другие символы, чтобы вставить символы в курсор, нажмите клавишу ESC, чтобы выйти и сохранить текст. «□» в редакторе указывает ключ Enter, а «#» указывает конец файла. Обратите внимание, что редактор может обрабатывать только символы ASCII.
Программа может вызвать различные исключения из -за неподходящего ввода команд, полного пространства файловой системы, незаконных разрешений и т. Д. Когда произойдет исключение, программа выведет информацию об исключении в консоли. Пожалуйста, урегулируйте исключение в зависимости от выводной информации. Если исключение никогда не разрешено, попробуйте форматировать файловую систему.
Макро определение настраиваемых параметров расположено в файле файловой системы.
| параметр | иллюстрировать |
|---|---|
| ВЕРСИЯ | Версия файловой системы |
| Disk_name | Моделируйте имя файла файла файла |
| Disk_size | Размер диска файла, по крайней мере, превышает 1024*512 байт. Рекомендуется установить его на (261120+1024) *512 байтов, то есть 128 МБ |
| имя файла | иллюстрировать |
|---|---|
| файловая система.h | Файл заголовка файловой системы |
| fileystem.cpp | Файловая система c ++ файлы |
| main.cpp | Основная программа C ++ Файл (пользовательская интерфейс командной строки) |
| test.cpp | Файл интерфейса файла файловой системы не собирается в окончательную исполняемую программу. |
| Fs.data | Моделировать объемы файла диска |
| File System.exe | Исполняемая программа (пользовательская интерфейс командной строки) |







