- •Алгоритмические основы программной инженерии Конспекты
- •Глава 4. Файловые системы.
- •§0. Вступление
- •§1. Файлы
- •Представления Unicode
- •Разница между текстовым и бинарным представлением файла
- •Логическая организация файла
- •Физическая организация и адрес файла
- •2. Определение по символьному имени файла его уникального имени.
- •4. Проверка прав доступа для выполнения запрашиваемой операции.
- •§2. Файловая система fat
- •1. Загрузочный сектор с загрузочной записью.
- •2. Зарезервированные секторы.
- •4. Корневой каталог.
- •§3. Файловая система ntfs
4. Проверка прав доступа для выполнения запрашиваемой операции.
5. Определение смещения в байтах от начала файла до указанной логической записи в соответствии с логическим представлением.
6. Определение номера физического блока, содержащего указанную логическую запись и смещения логической записи в физическом блоке.
Замечание. Используются смещение логической записи в файле, адрес файла на внешнем устройстве, а также сведения о физическом представлении файла, включая размер блока.
После определения номера физического блока, файловая система обращается к системе ввода-вывода для выполнения операции обмена с внешним устройством. В ответ на этот запрос в буфер файловой системы передается нужный блок, в который на основании определенного на этапе 6 смещения выбирается необходимая логическая запись.
§2. Файловая система fat
Разработчик FAT12, FAT16, VFAT, FAT32: Microsoft.
В файловой системе FAT (File Allocation Table) логическое дисковое пространство любого логического диска разделяется на 2 области:
— Системная.
— Область данных (каталоги и файлы).
Системная область логического диска создается и инициализируется при форматировании, а затем обновляется при манипуляциях с файловой структурой.
Область данных логического диска содержит файлы и каталоги, подчиненные корневому (root). В отличии от системной области, область данных доступна через пользовательский интерфейс ОС.
Системная область состоит из указанных ниже компонентов, последовательно расположенных в логическом адресном пространстве:
1. Загрузочный сектор с загрузочной записью.
Загрузочный сектор содержит загрузочную запись (boot record), которая состоит из блока параметра BIOS и загрузчика ОС.
2. Зарезервированные секторы.
3. Таблица размещения файлов (FAT), которая располагается в самом начале раздела.
4. Корневой каталог.
Блок параметров диска содержит размер сектора (минимальная единица хранения данных, 512 байт), число секторов в кластере, число зарезервированных секторов, количество копий таблицы FAT, количество секторов в таблице FAT и другие параметры.
Таблица размещения файлов представляет собой карту области данных, в которой описывается состояние каждого участка этой области. Область данных разбивают на так называемые кластеры. Кластер представляет собой один или несколько смежных секторов в логическом дисковом адресном пространстве (точнее — только в области данных). В таблице FAT кластеры, принадлежащие одному файлу (некорневому каталогу), связываются в цепочки. Для указания номера кластера в системе управления файлами FAT-16 используется 16-битовое слово, следовательно, можно иметь до 216 = 65536 кластеров (с номерами от 0 до 65535).
Кластер — это минимальная адресуемая единица дисковой памяти, выделяемая файлу (или некорневому каталогу). Файл или каталог занимает целое число кластеров, которые необязательно должны следовать друг за другом. На дискетах кластер занимает один или два сектора, а на жестких дисках — в зависимости от объема раздела.
У большинства устройств размер сектора составляет 512 байт (например, у жестких и гибких дисков), либо 2048 байт (например, у оптических дисков).
Структура диска:
(A) дорожка
(B) геометрический сектор
(C) сектор дорожки
(D) кластер
Разбиение области данных на кластеры вместо использования одиночных секторов позволяет уменьшить размер таблицы FAT, а также уменьшить фрагментацию файлов и ускорить доступ к данным.
Слишком большой размер кластера приводит к неэффективному использованию области данных, особенно при большом количестве маленьких файлов (на каждый файл в среднем теряется примерно половина кластера).
В современных файловых системах типа FAT32 и NTFS размер кластера ограничен (максимум 4 КБайта).
Каждый элемент таблицы FAT соответствует одному кластеру диска и характеризует его состояние (свободен, занят, поврежден). Если кластер выделен файлу, то соответствующий элемент таблицы FAT содержит номер следующего кластера файла, т. е. в таблице FAT кластеры одного файла связываются в цепочки.
Первый элемент таблицы FAT описывает среду загрузочного сектора ("набор переменных окружения", служебная переменная = значение).
Таблица размещения файлов хранится сразу после загрузочной записи логического диска и её точное местоположение описано в специальном поле загрузочного сектора.
Таблицы FAT хранятся в двух идентичных экземплярах, которые следуют друг за другом. Используется только первый экземпляр; при его повреждении система обращается ко второму экземпляру. В связи с интенсивным использованием таблицы FAT при обращении к диску, она обычно загружается в ОЗУ (в буфер ввода-вывода или кэш), и остается там настолько долго, насколько это возможно.
Запись файла в первый попавшийся свободный кластер приводит к фрагментации диска, сложным цепочкам файлов и, как следствие, медленной работе с файлами.
Информация о файле (имя, расширение, атрибуты, номер первого кластера в цепочке данных) содержится в корневом каталоге.
Схема работы системы с файлом:
При запуске любого файла на выполнение ОС ищет файл с нужным именем в каталоге, считывает номер первого кластера данного файла и по таблице FAT определяет остальные номера кластеров. Данные из этих кластеров считываются в оперативную память и объединяются в один непрерывный участок.
Ключевые особенности FAT16:
1. Максимальный размер тома: 2 ГБайта.
2. Максимальный размер файла: 2 ГБайта.
3. Максимальное количество файлов в корневом каталоге: 512 шт.
4. Максимальное количество файлов в некорневом каталоге: 65535 шт.
5. Безопасность на уровне файлов: Нет.
6. Поддержка длинных имен файлов: Нет, ограничение 8.3.
7. Самовосстановление: Нет.
8. Ведение журналов транзакций: Нет.
9. Сжатие на уровне файлов: Нет.
10. Соответствие стандарту POSIX: Нет.
Ключевые особенности VFAT:
1. Максимальный размер тома: 4 ГБайта.
2. Максимальный размер файла: 4 ГБайта.
3. Максимальное количество файлов в корневом каталоге: 512 шт.
4. Максимальное количество файлов в некорневом каталоге: неограниченно.
5. Безопасность на уровне файлов: Нет.
6. Поддержка длинных имен файлов: Да.
7. Самовосстановление: Нет.
8. Ведение журналов транзакций: Нет.
9. Сжатие на уровне файлов: Нет.
10. Соответствие стандарту POSIX: Нет.
Недостатком FAT и VFAT являются большие потери на кластеризацию при большом размере логического диска, а также серьезное ограничение размера логического диска. В связи с этим в Windows 95 OSR2 появилась система FAT32.
FAT32 намного эффективнее расходует дисковое пространство. FAT32 использует дисковые кластеры меньшего размера по сравнению с предыдущими версиями, которые ограничивались 65535 кластерами на том (соответственно с увеличением размера диска приходилось увеличивать и размер кластеров). Следовательно, даже для дисков размером до 8 ГБайт FAT32 может использовать 4-килобайтные кластеры. В результате по сравнению с дисками FAT16 экономится в среднем 10-15% дискового пространства.
FAT32 также может перемещать корневой каталог и использовать резервную копию FAT вместо стандартной. Расширенная загрузочная запись FAT32 позволяет создавать копии критических структур данных; это повышает устойчивость дисков FAT32 к нарушениям структуры FAT по сравнению с предыдущими версиями. Корневой каталог в FAT32 представлен в виде обычной цепочки кластеров. Следовательно, корневой каталог может находиться в произвольном месте диска, что снимает действовавшее ранее ограничение на размер корневого каталога (512 элементов).
Ключевые особенности FAT32:
1. Максимальный размер тома: 4 ТБайта.
2. Максимальный размер файла: 4 ТБайта.
3. Максимальное количество файлов в корневом каталоге: неограниченно.
4. Максимальное количество файлов в некорневом каталоге: неограниченно.
5. Безопасность на уровне файлов: Нет.
6. Поддержка длинных имен файлов: Да.
7. Самовосстановление: Да.
8. Ведение журналов транзакций: Нет.
9. Сжатие на уровне файлов: Нет.
10. Соответствие стандарту POSIX: Нет.
FAT32 повышает отказоустойчивость FAT.
Во-первых, в загрузочных записях FAT32 хранятся важнейшие данные файловой системы (например, сведения о таблице разделов).
Во-вторых, в FAT32 можно отключить зеркальное копирование FAT, чтобы для поиска файлов и работы с ними использовалась вторая копия FAT.