Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры по ОС мои.docx
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
2.82 Mб
Скачать

Структура файловых ссылок.

Файл на томе NTFS идентифицируется 64-битным значением, которое называ­ется файловой ссылкой (file reference). Файловая ссылка состоит из номера фай­ла и номера последовательности. Номер файла равен позиции его записи в MFT минус 1 (или позиции базовой записи в МFT минус 1, если файл требует не­сколько записей). Номер последовательности в файловой ссылке увеличивает­ся на 1 при каждом повторном использовании позиции записи в MFT, что по­зволяет NTFS проверять внутреннюю целостность файловой системы. Файловая ссылка показана на рисунке.

Атрибуты файла ntfs

NTFS рассматривает файл не просто как хранилище текстовых или двоичных данных, а как совокупность пар атрибутов их значения, одна из которых со­держит данные файла (соответствующий атрибут называется наименованным атрибутом данных). Другие атрибуты включают имя файла, метку времени и, возможно, дополнительные именованные атрибуты данных. Запись MFT для небольшого файла показана на рисунке.

Каждый атрибут файла хранится в файле как отдельный поток байтов. Строго говоря, NTFS читает и записывает не файлы, а потоки атрибутов. NTFS поддер­живает следующие операции над атрибутами: создание, удаление, чтение (как диапазон байтов) и запись (как диапазон байтов). Сервисы чтения и записи обычно имеют дело с неименованным атрибутом данных. Однако вызывающая программа может указать другой атрибут данных, используя синтаксис имено­ванных потоков данных. В таблице перечислены атрибуты для файлов на томах NTFS (не у каж­дого файла есть все эти атрибуты).

В таблице даны имена атрибутов, но на самом деле атрибуты соответ­ствуют числовым кодам типов, используемым NTFS для упорядочения атрибу­тов в записи о файле. Файловые атрибуты в записи MFT размещаются в поряд­ке возрастания числовых значений этих кодов. Некоторые типы атрибутов встречаются в записи дважды – например, если у файла несколько атрибутов данных или несколько имён.

Резидентные атрибуты.

Тело резидентного атрибута хранятся в файловой записи, расположенной внутри MFT. Если 8-разрядное поле, расположенное по смещению 08h байт от начала атрибутного заголовка, равно нулю – атрибут считается резидентным, а длина резидентного атрибута равна длине его заголовка (т.е., если к смещению атрибута добавить его длину, мы получим указатель на следующий атрибут или маркер конца, если текущий атрибут – последний в цепочке). Длина тела резидентных атрибутов, выраженная в байтах, храниться в 32-разрядном поле, расположенном по смещению 10h байт от начала атрибутного заголовка. 16-разрядное поле, следующее за ним, хранит смещение резидентного тела, отсчитываемое от начала атрибутного заголовка. На рисунке показана структура резидентного атрибута.

Нерезидентные атрибуты.

Тело нерезидентного атрибута хранится вне MFT, в одном или нескольких кластерах, перечисленных в заголовке данного атрибута в специальном списке. Если 8-разрядное поле, расположенное по смещению 08h байт от начала атрибутного заголовка, если единице – атрибут считается нерезидентным. Длина нерезидентного атрибута равна сумме длин его тела и заголовка (т.е., если к смещению атрибута добавить его длину, мы получим указатель на следующий атрибут или маркер конца, если текущий атрибут – последний в цепочке). У нерезидентных атрибутов для хранения длины их тела используется множество полей. Реальный размер тела атрибута (real size of attribute), выраженный в байтах, хранится в 64-разрядном поле, находящемся по смещению 30h байт от начала атрибутного заголовка. Следующее за ним 64-разрядное поле хранит инициализированный размер потока (initialized data size of the stream), выраженный в байтах и судя по всему всегда равный реальному размеру тела атрибута. 64-разрядное поле, расположенное со смещением 28h байт от начала атрибутного заголовка, хранит выделенный размер (allocated size of attribute), выраженный в байтах и равный реальному размеру тела атрибута округленному до размера кластера (в большую сторону).

В большинстве случав, номер первого кластера тела нерезидентного атрибута равен нулю, а последний количеству кластеров занятых телом атрибута, уменьшенном на единицу.

16-разрядное поле, расположенное со смещением 20h от начала атрибутного заголовка, содержит указатель на массив Data Runs, расположенный внутри этого заголовка и описывающий логический порядок размещения нерезидентного тела атрибута на диске. На рисунке показана структура нерезидентного атрибута.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]