OS_FILESYSTEM - виртуальная файловая система (C ++)
Введение
Это виртуальная файловая система, которая имитирует Linux. Система размещена виртуальным дисковым файлом. Он имитирует чтение и написание дисков с помощью чтения и письма файла без участия в основном драйвере.
Чтобы написать простую имитационную файловую систему Linux, вы должны сначала спроектировать базовую структуру, которая включает в себя INODE, BLOCK, SuperBlock, макет виртуального диска, распределение пространства и другую информацию. Начало файловой системы - это суперблок, который содержит важную информацию о системе, включая число и размер INODE и блоков. Для INODE, как правило, ему нужно занимать один процент дискового пространства, но это небольшая система с общим размером всего 5 м, поэтому в области INODE, выделенного очень мало места, а большая часть оставшегося пространства - это площадь блока.
Общий план для этой файловой системы заключается в следующем:

Поскольку время на то время, когда я написал программу, я написал ее только 4 дня, прежде чем принимать ее, поэтому у кода не было времени для оптимизации ее, и некоторые места будут выглядеть избыточными, поэтому не удивляйтесь.
Хотя время ограничено, оно также реализует функцию редактора VI. Написание относительно просты, а код очень грязный. Если у вас есть время, чтобы улучшить его.
В целом, код все еще должен быть оптимизирован. Добро пожаловать, чтобы дать больше предложений и найти больше недостатков.
Как использовать
Шаг 1: Загрузите проект
git clone https://github.com/windcode/os_filesystem.git
Шаг 2: Откройте проект с помощью VC ++ 6.0
Дважды щелкните файл mingos.dsw в каталоге или перетащите файл в интерфейс VC ++ 6.0.
Шаг 3: Скомпилировать, ссылку, запустить

или
Шаг 1: Запустите файл mingos.exe непосредственно в папке /отладки
характеристика
- Сначала запустите, создайте виртуальные файлы диска

Пользователь по умолчанию root, а пароль корень


- Пользователь добавить, удалить, входить в систему, входить в систему (userAdd, userDel, ogoout)

- Изменить разрешения на файл или каталог (CHMOD)

- Написать и прочитать ограничены разрешениями

- Добавить и удалить файлы/папки (Touch, RM, Mkdir, Rmdir)

- Просмотреть системную информацию (Super, Inode, Block)

- Имитировать текстовый редактор VI (VI)

INODE управляет информацией о файлах и каталоге
Используйте метод связывания группы для управления распределением блоков простоя
- Процесс распределения блоков: когда необходимо выделить блок, верхняя часть стека бесплатных блоков снимает адрес блока простоя в качестве недавно выделенного блока. Когда стек пуст, стек в бесплатном блоке, представленном адресом нижнего стека, используется в качестве нового бесплатного стека.
- Процесс переработки блоков: при переработке блока проверьте, заполнен ли стек. Если он не будет удовлетворен, текущий указатель стека будет перемещен вверх, а блок -адрес для переработки размещен в верхней части нового стека. Если стек заполнен, блок для переработки будет использоваться в качестве нового бесплатного стека блоков, а адрес нижнего элемента этого бесплатного стека блоков установлен в бесплатный стек блоков только сейчас.
- Блок растрового карты и суперблока должны быть обновлены при распределении и переработке.
Распределение/утилизация INODE
- Распределение и утилизация INODE относительно простые, а последовательное распределение и переработка приняты.
- Когда требуется распределение, найдите в порядке простоя Indode из растрового карты INODE и найдите номер, который успешно возвращает INODE.
- При переработке, просто обновите растровое изображение INODE.
- Как распределение, так и утилизация требуют обновления растрового карты INODE.
Уведомление
- Работая среда - VC ++ 6.0