Реализация файловой системы. Файловая система NTFS. Часть 1

В ОС Windows поддерживается представление о файле как о не структурированной последовательности байтов.
Прикладная программа имеет возможность считывать эти байты в произвольном порядке. Обычно хранение файла организованно на устройстве прямого доступа в виде набора блоков фиксированного размера. Основная задача подсистемы управления файлами - связать символьное имя файла с блоками диска, которые содержат данные файла.

Именование файлов 

Для создания файла и присвоения ему имени в ОС Windows используется Win32-функция CreateFile. Максимальная длина полного имени файла при создании файла равна MAX_PATH со значением 260, но система позволяет использовать имена файлов длиной до 32000 символов в формате Unicode.
В система заложена возможность различать большие и маленькие буквы в названии файла. Прикладные программы, как правило, распознают тип файла по его имени. Например, файлы с расширением .exe - исполняемые. Связь имён с обрабатывающими программами реализована в реестре.

Атрибуты файлов 

В ОС Windows считается, что файл - это не просто последовательность байтов, а совокупность атрибутов, и данные файла являются лишь одним из атрибутов - так называемый неименованный поток данных.
Атрибуты хранятся в виде пары: <наименование атрибута, значение атрибута> в записи о файле в главной файловой таблице MFT (Master File Table - "главная файловая таблица").

Перечень атрибутов файла NTFS

  • Стандартная информация - флаговые биты (только чтение, архивный), временные штампы. 
  • Имя файла. Имя файла хранится в кодировке Unicode.
  • Описатель защиты (управление доступом к файлу).
  • Данные. Неименованный и именованный потоки данных. 
  • Идентификатор объекта - 64 - разрядный идентификатор файла, уникальный для данного тома. Файл может быть открыт не только по имени, но и по этому идентификатору.
  • Информация о томе. 
  • Информация об индексированнии, используемая для каталогов. 
  • Данные EFS (Encryption File System), используемые для шифрования. 

Организация файлов и доступ к ним. Понятие об асинхронном вводе-выводе

Файловая подсистема ОС Windows имеет дело с файлами, байты которых могут быть считаны в любом порядке, поскольку номер блока озадачно определяется текущей позицией внутри файла. Такие файлы называются файлами прямого доступа.
Важным достижением разработчиков ОС Windows является предоставление пользователю возможности осуществлять асинхронные операции ввода-вывода. При этом процесс, инициирующий операцию ввода-вывода, не ждёт её окончания, а продолжает вычисления.

Директории. Логическая структура файлового архива 

Файловая система на диске представляет собой иерархическую структуру, которая организована за счёт наличия специальных файлов - каталогов (директорий), имеющих один и тот же внутренний табличный формат (имя файлов, тип файла - обычный или каталог, атрибуты).
В полном имени файла ОС Windows поддерживает обозначения '.' - для текущей директории, '..' - для корневого каталога.

Разделы диска. Операция монтирования 

В ОС Windows принято разбивать физические диски на логические (это низкоуровневая операция), иногда называемые разделами (partition). Иногда, наоборот, объединяют несколько физических дисков в один логический. Имена логических дисков хранятся в каталоге "\?" пространства имён объектов. Указав букву диска, прикладная программа получает доступ к егэ файловой системе.
Windows позволяет пользователю создать точку монтирования - связать пустой каталог с каталогом логического диска. По успешном завершении операции содержимое этих каталогов будет соответствовать друг другу.

Файловая система NTFS

В ОС Windows файловая система интегрирована в систему ввода-вывода.

Кластеры 

Обычно диски разбиты на блоки (секторы) размером - 512 б. Но удобнее оперировать блоками более крупного размера - кластера (cluster). Размер кластера равен размеру сектора, умноженному на кластерный множитель (claster factor), и может быть установлен во время операции форматирования диска. По умолчанию это значение равно 4 Кб.
NTFS поддерживает размеры 512, 1024, 2048, 4096, 8196, 16 КБ, 32 КБ, 64 К. Оптимальным является компромиссный размер блока, лежащий в диапазоне от 1-го до 8 Кб. Сжатие томов NTFS не поддерживается для размеров кластеров более 4096 Б. Система различает кластеры диска (volume claster) и кластеры диска, принадлежащие файлу (logical claster).

Главная файловая таблица MFT 

В файловой системе NTFS запись о файле в главной файловой таблице диска - MFT (master file table), которая содержит информацию о расположении данных файлов.
MFT - главная структура данных на диске, представляет собой обычный файл, содержащий до \(2^{48}\) размером 1 Кб каждая. Каждому файлу или каталогу соответствует одна запись. Записи 0-15 зарезервированы для служебных файлов, а записи, начиная с 16-й, предназначены для файлов пользователей. Для больших файлов требуется несколько записей, первая из которых называется базовой.
Таблица MFT может располагаться в любом месте диска.
Чаще данные не помещаются в записи MFT. В этом случае вслед за заголовком в записи размещается список дисковых блоков файла.
Номера дисковых кластеров файлов можно узнать при помощи утилиты nfi.exe, входящей в состав ресурсов Windows.

Комментарии

Популярные сообщения