Моделирование файловой системы FAT16
СОДЕРЖАНИЕ
ВВЕДЕНИЕ
Сложность программных продуктов, в том числе и операционных систем в настоящее время растет не по годам и десятилетиям, как пару десятков лет назад, а по месяцам и дням. Но изучить каждую ее часть, находящуюся на нынешнем уровне развития, представляет собой большую трудность. Именно поэтому проще начать с того, что легло в основу каждой подсистемы ОС.
С каждым днем количество людей, заинтересованных в том, как функционирует та или иная часть ОС, растет. Поэтому становится актуальным упрощение процесса обучения и знакомства пользователей с основами работы наиболее значимых частей операционной системы, а так же выполнение этой задачи в более интересном и наглядном виде.
Примером одной из основных частей ОС является файловая система. Это регламент, определяющий способ организации, хранения и именования данных на носителях информации. Она определяет формат физического хранения информации, которую принято группировать в виде файлов. Конкретная файловая система определяет размер имени файла (папки), максимальный возможный размер файла и раздела, набор атрибутов файла. Некоторые файловые системы предоставляют сервисные возможности, например, разграничение доступа или шифрование файлов.
Файловая система связывает носитель информации с одной стороны и API для доступа к файлам — с другой. Когда прикладная программа обращается к файлу, она не имеет никакого представления о том, каким образом расположена информация в конкретном файле, так же, как и на каком физическом типе носителя (CD, жёстком диске, магнитной ленте или блоке флеш-памяти) он записан. Всё, что знает программа — это имя файла, его размер и атрибуты. Эти данные она получает от драйвера файловой системы. Именно файловая система устанавливает, где и как будет записан файл на физическом носителе (например, жёстком диске).
С точки зрения операционной системы, весь диск представляет собой набор кластеров размером от 512 байт и выше. Драйверы файловой системы организуют кластеры в файлы и каталоги (реально являющиеся файлами, содержащими список файлов в этом каталоге). Эти же драйверы отслеживают, какие из кластеров в настоящее время используются, какие свободны, какие помечены как неисправные.
Целью данного проекта является наглядное моделирование работы файловой системы FAT16, которая использовалась в MS-DOS 3.31.
Для реализации данного проекта был выбран язык C#, как один из лучших объектно-ориентированных языков программирования на данный момент.
Результатом данной работы должна быть программа, которая сможет использоваться в процессе образования людьми, которым интересны основы системного программного обеспечения.
1 ПОСТАНОВКА ЗАДАЧИ
1.1 Теоретическое введение
Файловая система FAT представляет собой таблицу размещения файлов, в которой указываются:
1)
непосредственно адреса
2) свободные области дискового пространства;
3) дефектные области диска.
В этой таблице каждому блоку, предназначенному для хранения данных, соответствует 16-битовое значение. Если блок свободен, то значение будет нулевым. Если же блок принадлежит файлу, то значение равно адресу следующего блока этого файла. Если это последний блок в файле, то значение - OxFFF . Существует также специальный код для обозначения плохого блока, не читаемого из-за дефекта физического носителя. В каталоге хранится номер первого блока и длина файла, измеряемая в байтах. Емкость диска при использовании 12-битовой FAT ограничена 4096 блоками (2 Мбайт), что приемлемо для дискет, но совершенно не годится для жестких дисков и других устройств большой емкости. На таких устройствах DOS использует FAT с 16-битовыми элементами. На еще больших (более 32 Мбайт) дисках DOS выделяет пространство не блоками, а кластерами из нескольких блоков.
В таблице FAT кластеры, принадлежащие файлу или каталогу, связываются в цепочки. В 16-разрядной FAT можно иметь до 65536 кластеров. Логическое объединение секторов в кластеры позволяет уменьшить размер таблицы FAT и ускорить доступ к файлу. Однако слишком большой размер кластера приводит к неэффективному использованию области данных, особенно при большом количестве маленьких файлов. Например, при размере кластера в 32 сектора (16 Кб) средняя величина потерь на файл составляет 8 Кб. Поэтому в современных файловых системах размер кластера не превышает 4 Кб.
Поскольку файлы на диске подвержены изменению (удаляются, перемещаются, увеличиваются или уменьшаются), то выделение первого свободного кластера для новой порции данных приводит к фрагментации файлов. Данные одного файла могут располагаться не в смежных кластерах, а в удаленных друг от друга.
Таблица FAT является основой данной файловой системы, поэтому она хранится на диске в двух экземплярах. Обновляются копии FAT одновременно, а для работы используется только первый экземпляр. Если он окажется поврежденным, то произойдет обращение ко второму экземпляру. Утилиты проверки и восстановления файловой системы при обнаружении несоответствия первичной и резервной таблицы FAT осуществляет восстановление основной таблицы, используя данные из её копии.
Система FAT очень проста и имеет одно серьезное достоинство: врожденную устойчивость к сбоям. В то же время у нее есть и ряд серьезных недостатков. Первый недостаток состоит в том, что при каждой операции над файлами система должна обращаться к FAT. Это приводит к частым перемещениям головок дисковода и в результате к резкому снижению производительности. Действительно, исполнение программы на одной и той же машине под MS DOS и под DOS-эмулятором систем UNIX или OS/2 различается по скорости почти в 1,5 раза. Особенно это заметно при архивировании больших каталогов.
В
файловой системе FAT дисковое пространство
логического диска делится на системную
область и область данных. Системная область
создается и инициализируется при форматировании
диска, а в последующем обновляется при
работе. Область данных содержит файлы
и каталоги, которые образуют на диске
иерархическое дерево каталогов, с единственной
директорией не входящей в другие - корневым
каталогом. Область данных доступна через
пользовательский интерфейс операционной
системы. Системная область содержит загрузочную
запись, зарезервированные сектора, таблицу
размещения файлов и корневой каталог.
Для каждого файла и каталога в файловой
системе хранится справочная информация.
Каждый элемент такого справочника занимает
32 байта и содержит: имя файла или каталога,
расширение имени файла, атрибуты файла
- системный, архивный, только для чтения
и др., дату и время создания и последнего
изменения файла, номер начального кластера,
размер файла.
Рисунок 1.1 – Структура файловой системы FAT16
1.2 Постановка задачи
Программа, полученная в результате этого проекта должна в точности моделировать поведение файловой системы FAT16. Результаты работы программы должны выводиться на экран в виде карты диска – последовательных цепочек из заполненных, свободных или поврежденных кластеров.
Так как пользователь сам должен задавать параметры файловой системы и создаваемых файлов, то в GUI должны присутствовать такие поля для ввода данных как задание размера раздела; задание размера кластера; задание размера файла, а также его имени и расширения. Пользователю так же должна быть предоставлена возможность удаления файлов или внесения поврежденных кластеров в созданный раздел.
В том случае, если пользователь неправильно ввел значения или задал слишком большой размер файла, программа должна вывести предупреждение об ошибке и предложить повторить процедуру ввода.
При выходе программа должна предупредить пользователя о закрытии.
Предполагаемая
структура GUI изображена на рисунке
1.2.
Рисунок 1.2 – Интерфейс разрабатываемого ПО
2 ПРОЕКТИРОВАНИЕ
2.1 Выбор операционной системы
В качестве операционной системы для разработки программной системы была выбрана ОС Windows XP. Выбор операционной системы был определен ее функциональными возможностями, а также распространенностью данной ОС.
2.2 Выбор языка программирования
В качестве языка программирования был выбран язык «C#». Этот объектно-ориентированный, со статической типизацией. Он является основным языком разработки приложений для платформы Microsoft .NET.
2.3 Выбор программного обеспечения промежуточного уровня
.NET Framework является новейшей, разработанной компанией Microsoft, платформой для создания обычных программ и веб-приложений.. Данная платформа включает в себя языковую среду CLR. Основное назначение CLR — выполнение приложений, соблюдение всех программных зависимостей, управление памятью, обеспечение безопасности и изоляции приложений, интеграция с языками программирования и т.п.
Данная платформа получила широкое распространение и может быть использована на всех современных версиях операционных системах Windows (начиная с Windows 2000).
2.4 Выбор инструментальных средств
В качестве системы разработки была выбрана IDE Microsoft Visual Studio 2008. Данная система совместима с семейством операционных системам Windows и обладает рядом оптимизаций для программирования именно под эти ОС.
Данная среда разработки обладает рядом преимуществ: IntelliSense, система MSDN, встроенная подсветка ошибок.
IntelliSense – встроенная технология, позволяющая ускорить процесс набора текста программы путем автоматической генерации списка доступных для вставки в данном месте программы инструкций и ключевых слов.
Среда разработки интегрируется со справочной системой MSDN, которая содержит обширный набор информации о .NET Framework, языках программирования .NET и многом другом.
3 разработка
3.1 Выбор архитектуры системы
На
данный момент существует несколько
разновидностей системных архитектур.
Одним из примеров является двухуровневая
системная архитектура (рисунок 3.1). В основе
ее уровней находятся: User Interface, Business Logic.
Исходя из анализа поставленной задачи,
был выбран именно этот тип системной
архитектуры. Это можно объяснить тем,
что разрабатываемая программа должна
реализовывать определенный алгоритм
– Business Logic, взаимодействовать непосредственно
с пользователем – User Interface.
Рисунок 3.1 – Двухуровневая системная архитектура
3.2 Построение диаграмм прецедентов и последовательности
Проведя анализ поставленной задачи, мы выявили следующих активных актеров, работающих с разрабатываемой программой:
- пользователь;
- файловая система.
Функции, которые могут использовать файловая система и пользователь, а также отношения между ними можно визуализировать с помощью диаграммы прецедентов (рисунок 3.2).
Рисунок
3.2 – Диаграмма вариантов
Прецедент «Создание раздела» заключается в создании нового раздела FAT16 для работы с ним. При выполнении данного прецедента сразу попадаем в прецедент «Ввод данных с клавиатуры».
Прецедент «Создание файла» заключается в создании нового файла в заранее созданном разделе. При выполнении данного прецедента сразу попадаем в прецедент «Ввод данных с клавиатуры».
Прецедент «Удаление файла» заключается в удалении созданного файла по его порядковому номеру. При выполнении данного прецедента сразу попадаем в прецедент «Ввод данных с клавиатуры».
Прецедент «Добавление BAD кластеров» заключается в добавлении поврежденных кластеров в файловую систему. При выполнении данного прецедента попадаем в прецедент «Визуализация результата».
Прецедент «Ввод данных с клавиатуры» заключается в вводе соответствующих значений в зависимости от прецедента из которого был осуществлен переход. При выполнении данного прецедента выполняется переход в один из трех прецедентов:
- «Расположение нового файла»;
- «Удаление выбранного файла»;
- «Создание раздела».
Прецедент «Расположение нового файла» заключается в размещении файловой системой нового файла в разделе. При выполнении данного прецедента сразу попадаем в прецедент «Визуализация результата».
Прецедент «Удаление выбранного файла» заключается в удалении файла из текущего раздела. При выполнении данного прецедента сразу попадаем в прецедент «Визуализация результата».
Прецедент «Создание раздела» заключается в создании нового раздела для работы с файлами. При выполнении данного прецедента сразу попадаем в прецедент «Визуализация результата».
Прецедент
«Визуализация результата»
3.3
Разработка вариантов
Исходя
из анализа построенной диаграммы
прецедентов, а также функций, которые
должна выполнять программа, были предусмотрены
следующие варианты использования:
| Номер | ВИ – 01 |
| Название | Создание раздела. |
| Участники | Пользователь |
| Описание | При выполнении данного варианта использования пользователь вводит данные о размере раздела и размере кластера с помощью клавиатуры. |
| Предварительные условия | Нет. |
| Выходные условия | Параметры нового раздела переданы файловой системе. |
| Порядок действий |
|
| Альтернативный порядок действий | Нет. |
| Приоритет | Высокий. |
| Номер | ВИ – 02 |
| Название | Создание файла. |
| Участники | Пользователь. |
| Описание | При выполнении данного варианта использования пользователь вводит данные о новом файле (размер, имя, расширение) с помощью клавиатуры. |
| Предварительные условия | Заранее созданный раздел. |
| Выходные условия | Параметры нового файла переданы файловой системе. |
| Порядок действий |
|
| Альтернативный порядок действий | Нет. |
| Приоритет | Высокий. |
| Номер | ВИ – 03 |
| Название | Удаление файла. |
| Участники | Пользователь. |
| Описание | При выполнении данного варианта использования пользователь задает номер удаляемого файла с помощью клавиатуры. |
| Предварительные условия | Создан хотя бы один файл. |
| Выходные условия | Номер удаляемого файла передан файловой системе. |
| Порядок действий |
|
| Альтернативный порядок действий | Нет. |
| Приоритет | Высокий. |
| Номер | ВИ – 04 |
| Название | Добавление BAD кластеров. |
| Участники | Пользователь. |
| Описание | При выполнении данного варианта использования в текущий раздел добавляются поврежденные кластеры, закрытые для записи. |
| Предварительные условия | Создан раздел. |
| Выходные условия | Файловой системой добавлены BAD кластеры. Визуализация на карте диска. |
| Порядок действий | 1. Пользователь выбирает пункт меню «Добавить BAD кластеры». |
| Альтернативный порядок действий | Нет. |
| Приоритет | Средний. |
| Номер | ВИ – 05 |
| Название | Создание раздела. |
| Участники | Файловая система. |
| Описание | При выполнении данного варианта использования файловая система создает новый раздел. |
| Предварительные условия | Выполнен ввод данных о параметрах раздела. |
| Выходные условия | Создан раздел. Визуализация на карте диска. |
| Порядок действий | 1. Пользователь подает запрос на создание раздела. |
| Альтернативный порядок действий | Нет. |
| Приоритет | Высокий. |
| Номер | ВИ – 06 |
| Название | Расположение нового файла. |
| Участники | Файловая система |
| Описание | При выполнении данного варианта использования файловая система располагает новый файл в текущем разделе. |
| Предварительные условия | Выполнен ввод данных о параметрах файла. |
| Выходные условия | Создан новый файл. Визуализация на карте диска и в списке файлов. |
| Порядок действий |
|
| Альтернативный порядок действий | Нет. |
| Приоритет | Высокий. |
| Номер | ВИ – 07 |
| Название | Удаление выбранного файла. |
| Участники | Файловая система |
| Описание | При выполнении данного варианта использования файловая система удаляет выбранный файл из текущего раздела. |
| Предварительные условия | Выполнен ввод номера файла. |
| Выходные условия | Файл удален. Визуализация на карте диска и в списке файлов |
| Порядок действий |
|
| Альтернативный порядок действий | Нет. |
| Приоритет | Высокий. |
3.4 Разработка графического интерфейса
Исходя из анализа поставленной задачи, выяснилось, что графический интерфейс разрабатываемого программного продукта должен содержать: меню, область для визуализации, область для вывода списка файлов, а также информацию о текущей файловой системе (рисунок 1.2).
Ввод входных данных выполняется с помощью дополнительных диалоговых окон.
Главное меню должно включать такие пункты как «Операции с файловой системой», «Операции с файлами» и «Выход из программы». В пункте «Операции с файловой системой» должны присутствовать такие подпункты: «Создать», «Закрыть текущую», «Добавить BAD кластеры» и «Подсветить кластер». В пункте «Операции с файлами» должны присутствовать такие подпункты «Создать», «Удалить выбранный». В области для визуализации результатов работы файловой системы должна изображаться карта текущего раздела.
Уточненный
графический интерфейс
Рисунок 3.3 – Уточненный графический интерфейс пользователя
3.5 Разработка архитектуры приложения
Исходя из анализа поставленной задачи, а так же предметной области разрабатываемого проекта, были выделены такие основные сущности как FileSystem (файловая система), GUI (интерфейс пользователя). Т.к. информация о разделе, файлах и номере файла задается через диалоговые окна, то GUI можно разбить на 4 сущности: Delete (удаление файла), FileParameters (задание параметров файла), Parameters (задание параметров раздела), Mainform (визуализация и обработка команд). Следуя принципам ООП, эти сущности можно принять за шаблоны создаваемых классов.
Класс FileSystem отвечает за хранение всех параметров файловой системы и содержит следующие поля:
- BinaryMap – массив описывающий состояние кластеров;
- ClusterSize – размер кластера;
- ClustOnFile – массив содержащий количество кластеров необходимое для каждого файла;
- Cnt – счетчик;
- Date – массив дат создания файлов;
- DecimalMap – массив со ссылками на следующие кластеры. Фактически описывает расположение файлов на диске;
- StartCluster – массив начальных кластеров файлов;
- EndCluster – массив конечных кластеров файлов;
- FileName – массив имен файлов;
- FileSize – массив размеров файлов в байтах;
- FreeSpace – оставшееся свободное место;
- IsDeleted – массив описывающий удален файл или нет;
- Map – карта диска. Представлена изображением в формате “.*bmp”;
- NumberOfCluster – количество кластеров в разделе;
- NumberOfFiles – количество файлов в разделе;
- PartitionSize – размер раздела в байтах;
- Pointer – указатель на следующий свободный кластер;
- ToDelete – переменная для передачи данных о номере удаляемого файла.
Класс Mainform отвечает за визуализацию и обработку команд и содержит следующие методы:
- FSCreate_Click – метод создающий новый раздел;
- FSClose_Click – метод закрывающий текущий раздел;
- Ld – метод инициализирующий основные массивы и переменные;
- FileCreate_Click – метод создающий новый файл;
- FileDelete_Click – метод удаляющий выбранный файл;
- Highlighter_Click – подсветка кластера;
- BADFill_Click – добавление поврежденных кластеров;
- ExitButton_Click – выход из программы.
Класс Parameters имеет отношение ассоциации с классом Mainform, а так же содержит следующий метод:
- OK_Click – метод для передачи параметров о разделе.
Класс FileParameters имеет отношение ассоциации с классом Mainform, а так же содержит следующий метод:
- NewFile_Click – метод для передачи данных о новом файле.
Класс Delete имеет отношение ассоциации с классом Mainform, а так содержит следующий метод:
- OK_Click – метод для передачи номера удаляемого файла.
Класс Cluster имеет отношение ассоциации с классом Mainform, а так содержит следующий метод:
- OK_Click – метод для передачи номера удаляемого файла.
Диаграмма
классов, с помощью которой можно
визуализировать все описанные
выше классы, методы и поля, изображена
на рисунке 3.4.
Рисунок 3.4 – Диаграмма классов разрабатываемой программы
3.6 Разработка алгоритмов работы программы
Исходя из анализа поставленной задачи, а также разработанной диаграммы классов, была выделена группа методов, работа которых является особо важной: метод FileCreate_Click класса Mainform и метод FileDelete_Click класса Mainform. Для этих методов были разработаны обобщенные алгоритмы работы.
3.6.1 Метод FileCreate_Click класса Mainform
Метод
FileCreate_Click класса Mainform, выполняет размещение
нового файла в разделе. Указатель pointer,
в начале алгоритма уже указывает на свободный
кластер. Алгоритм работы описанного метода
изображен на рисунке 3.5.

- Моделирование физических процессов (2)
- Моделирование физических процессов. Хроматическая аберрация
- Моделирование финансово-хозяйственной деятельности предприятия. Современные тенденции
- Моделирование финансовых потоков в системе Project Expert 6
- Моделирование форм одежды
- Моделирование функционирования класса ПК
- Моделирование хозяйственной деятельности и введение бухгалтерского учета на предприятии ООО «Железобетонный завод №1» г. Стерлитамак
- Моделирование транспортных процессов
- Моделирование транспортных процессов и систем
- Моделирование ультразвуковых доплеровских эхо-сигналов внутрисосудистого газообразования
- Моделирование управленческих решений
- Моделирование уровня жизни населения
- Моделирование учета хозяйственной деятельности предприятия
- Моделирование учета хозяйственной деятельности предприятия