Метафайлы. Загрузочный сектор. FAT. NTFS.
Microsoft Windows Metafile Format (WMF) используется для хранения векторных и растровых изображений и графических данных в памяти или в дисковых файлах. Векторные данные хранимые WMF-файлом описывают команды Microsoft Windows Graphics Device Interface (GDI). Система интерпретирует и воспроизводит эти команды в контексте отображения, используя Windows API функцию PlayMetaFile(). Растровые изображения в WMF файле могут содержаться в формате Microsoft Device Dependent Bitmap (DDB), или Device Independent Bitmap (DIB). В Windows, метафайлы обычно создаются и воспроизводятся в памяти. Если данные метафайла слишком велики, что бы держать их в памяти, или должны быть сохранены прежде, чем приложение завершилось, то они могут быть записаны на диск в формате WMF или EMF и воспроизведены обратно с диска. Максимальный размер метафайла - 4 Гб. WMF - это базовый 16-битный формат, который появлялся в Windows 2.0. Формат EMF является 32-битной дополненной переработкой формата WMF. EMF расширил функциональное назначение WMF, включая цветную палитру и полную поддержку для всех 32-битовых команд GDI. Win32 API (Windows 95 и Windows NT) и 32-битный OLE поддерживает как WMF, так и EMF файлы. Win16 API и 16-битный OLE поддерживает только WMF. Хотя формат Windows Metafile поддерживают большое количество приложений, работающих на других платформах, основное его назначение - это обмен графической информацией между Windows приложениями. Например, Adobe's Encapsulated PostScript (EPS) поддерживает использование включенного Windows Metafile, когда требуется сохранить векторные данные. При использовании метафайлов в Windows или OS/2, нет необходимости писать специальные программы для выполнения грамматического разбора их содержимого, можно вызывать имеющиеся в Windows API функции. Поскольку есть обширная документация Microsoft и IBM по использованию метафайлов в Windows и OS/2, эта статья рассмотрит структуру и синтаксический анализ метафайлов без использования Windows API. Все структуры данных и определения типов данных связанные с файлами WMF находятся в заголовочном файле WINDOWS.H. Для Win32 SDK определения WMF и EMF содержатся в WINUSER.H WINGDI.H.
Метафайл состоит из одного или двух информационных заголовков и массива переменной длины, который содержит информацию о реальных GDI командах.
Есть четыре разновидности метафайлов standard, placeable, clipboard, и enhanced.
Метафайлы standard содержат 18-байтовый заголовок WMF, после которого следуют одна или более записей GDI команд. Последняя запись в файле содержит информацию, указывающую, что достигнут конец данных.
Метафайлы placeable содержат дополнительный 22-байтовый заголовок, который содержит информацию, описывающую положение изображения на устройстве отображения. После него следует стандартный 18-байтовый заголовок WMF и командные записи GDI. Placeable метафайлы были разработаны корпорацией Aldus, как нестандартный путь указать параметры отображения на устройстве отображения. Placeable метафайлы широко распространены, но не поддерживаются Windows API. Для воспроизведения placeable метафайла используя Windows API необходимо переделать его заголовок.
Метафайлы clipboard содержат дополнительный 8-байтовый (Win16) или 16-байтовый заголовок (Win32), который предшествует стандартному заголовку метафайла и описывает режим отображения и размер изображения. Clipboard метафайлы используют формат заголовка стандартных метафайлов, но ему предшествует 8- или 16-байтный заголовок.
Enhanced метафайлы, как и предыдущие, содержат записи GDI команд, но с другим заголовком, являющимся объединением заголовков placeable и clipboard метафайлов. EMF заголовок также содержит строку описания файла и программируемую палитру. Enhanced метафайлы являются новой и расширенной 32-битной версией стандартных метафайлов. Только 32-разрядный Windows API (Win32) поддерживает EMF файлы.
Строковые данные в EMF файлах используют Unicode кодировку.
Строка описания EMF файла представляет собой набор Unicode символов. Размер строки практически не ограничен (может содержать более 2 миллионов символов). Формат строки является "double NULL-terminated" где каждый первый 0 является признаком конца подстроки.
После заголовка всех типов метафайлов следуют записи описания данных. Структура записей METARECORD описана в файле WINDOWS.H
Последняя запись метафайлов всегда содержит функцию с номером 0000h. Эта запись является заглушкой и показывает, что достигнут конец данных.
Enhanced метафайлы имеют свою собственную структуру, которая похожа на структуру записей стандартных метафайлов, но является полностью 32-разрядной
EMF файл также может содержать таблицу цветов, используемую при отображении изображения. По умолчанию, файл не содержит таблицу цветов и использует системную палитру.
Загрузочный сектор, бутсектор (англ. boot sector)— это особый сектор на жёстком диске, дискете или другом дисковом устройстве хранения информации. (Для дискеты это первый физический сектор, для жесткого диска — первый физический сектор для каждого раздела) В процессе загрузки компьютера с дискеты он загружается в память программой POST (в компьютерах архитектуры IBM PC обычно с адреса 0000:7c00), ему передается управление командой long jump.
Загрузочный сектор, иногда называемый stage1, то есть первым этапом загрузки операционной системы, загружает программу второго этапа загрузки операционной системы stage2 (вторичный загрузчик, иногда в качестве stage2 загружается boot manager или программа авторизации и защиты доступа). В некоторых ОС роль stage1 выполняет MBR, и при загрузке ОС с жесткого диска загрузочный сектор не используется. На незагружаемых разделах жесткого диска загрузочные секторы также могут не содержать программу загрузки.
Файловая система (file system) – способ организации данных в виде файлов на устройствах внешней памяти (жестких и оптических дисках, устройствах флеш-памяти и т. п.).
Файловая система должна обеспечивать:
1. безопасное и надежное хранение данных (т. е. защищенное от несанкционированного использования и различного рода сбоев и ошибок);
2. программный интерфейс доступа к файлам;
3. организацию файлов в виде иерархии каталогов.
Windows поддерживает несколько файловых систем для различных внешних устройств:
· NTFS – основная файловая система семейства Windows NT;
· FAT (File Allocation Table – таблица размещения файлов) – простая файловая система используемая Windows для устройств флеш памяти, а также для совместимости с другими операционными системами при установке на диски с множественной загрузкой. Основным элементом этой файловой системы является таблица размещения файлов FAT (по имени которой названа вся файловая система), необходимая для определения расположения файла на диске. Существует три варианта FAT, отличающихся разрядностью идентификаторов, указывающих размещение файлов: FAT12, FAT16 и FAT32;
· exFAT (Extended FAT – расширенная FAT) – развитие файловой системы FAT, использующее 64 разрядные идентификаторы. Применяется в основном для устройств флеш-памяти;
· CDFS (CD ROM File System) – файловая система для CD дисков, объединяющая форматы ISO 96601 и Joliet2;
· UDF (Universal Disk Format – универсальный формат дисков) – файловая система для CD и DVD дисков, разработанная для замены ISO 9660.
Для дальнейшего изложения необходимо знать следующие важные понятия: диск, раздел, простые и составные тома, сектор, кластер.
Диск (disk) – устройство внешней памяти, например, жесткий диск или оптический диск (CD, DVD, Blu ray).
Раздел (partition) – непрерывная часть жесткого диска. Диск может содержать несколько разделов.
Том (volume) или логический диск (logical disk) – область внешней памяти, с которой операционная система работает как с единым целым. Тома бывают простые и составные.
Простой том (simple volume) – том, состоящий из одного раздела.
Составной том (multipartition volume) – том, состоящий из нескольких разделов (необязательно на одном диске).
Понятия раздела и простого тома отличаются: во первых, разделы формируются, в основном, только на жестких дисках, а тома создаются и на других устройствах внешней памяти (например на оптических дисках и устройствах флеш памяти), во вторых, понятие "раздел" связано с физическим устройством, а понятие "том" – с логическим представлением внешней памяти.
Сектор (sector) – блок данных фиксированного размера на диске; наименьшая единица информации для диска. Типичный размер сектора для жестких дисков равен 512 байтам, для оптических дисков – 2048 байт. Деление диска на секторы происходит один раз при создании диска в процессе низкоуровневого форматирования и обычно не может быть изменено.
Кластер (cluster) – логический блок данных на диске, включающий один или несколько секторов. Количество секторов, составляющих кластер, обычно кратно степеням двойки. Размер кластера задается операционной системой в процессе высокоуровневого форматирования, которое может осуществляться многократно.
При записи на диск файл всегда будет занимать целое число кластеров. Например, файл размером 100 байт в файловой системе с размером кластера 4 КБ будет занимать ровно 4 КБ.
Выбор размера кластера связан со следующими соображениями. Малые кластеры позволяют сократить размер фактически неиспользуемого дискового пространства, возникающего за счет размещения файла в целом числе кластеров. Но при этом общее количество кластеров на диске увеличивается и размер служебных структур файловой системы, в которых хранится информация о файлах, возрастает.
FAT
FAT (англ. File Allocation Table — «таблица размещения файлов») — классическая архитектура файловой системы, которая из-за своей простоты всё ещё широко используется для флеш-накопителей.
Существует четыре версии FAT — FAT8, FAT12, FAT16 и FAT32. Они отличаются разрядностью записей в дисковой структуре, то есть количеством бит, отведённых для хранения номера кластера. FAT12 применяется в основном для дискет, FAT16 — для дисков малого объёма. На основе FAT была разработана новая файловая система exFAT (extended FAT), используемая преимущественно для флеш-накопителей.
В файловой системе FAT смежные секторы диска объединяются в кластеры. Количество секторов в кластере равно степени двойки. Для хранения данных файла отводится целое число кластеров (минимум один), так что, например, если размер файла составляет 40 байт, а размер кластера 4 кбайт, реально занят информацией файла будет лишь 1 % отведенного для него места. Для избегания подобных ситуаций целесообразно уменьшать размер кластеров, а для сокращения объёма адресной информации и повышения скорости файловых операций — наоборот. На практике выбирают некоторый компромисс. Так как емкость диска вполне может и не выражаться целым числом кластеров, обычно в конце тома присутствуют т. н. surplus sectors — «остаток» размером менее кластера, который не может отводиться ОС для хранения информации.
Пространство тома FAT32 логически разделено на три смежные области:
· Зарезервированная область. Содержит служебные структуры, которые принадлежат загрузочной записи раздела (Partition Boot Record — PBR, для отличия от Master Boot Record — главной загрузочной записи диска; также PBR часто некорректно называется загрузочным сектором) и используются при инициализации тома;
· Область таблицы FAT, содержащая массив индексных указателей («ячеек»), соответствующих кластерам области данных. Обычно на диске представлено две копии таблицы FAT в целях надежности;
· Область данных, где записано собственно содержимое файлов — то есть текст текстовых файлов, кодированное изображение для файлов рисунков, оцифрованный звук для аудиофайлов и т. д. — а также т. н. метаданные — информация относительно имен файлов и папок, их атрибутов, времени создания и изменения, размеров и размещения на диске.
Первая структура тома FAT называется BPB (англ. BIOS parameter block) и расположена в зарезервированной области, в нулевом секторе. Эта структура содержит информацию, идентифицирующую тип файловой системы и физические характеристики носителя (дискеты или раздела на жёстком диске).
NTFS
Возможности NTFS
· восстанавливаемость (recoverability) – способность файловой системы возвращаться к работоспособному состоянию после возникновения сбоя. Реализуется такая возможность, во первых, за счет поддержки атомарных транзакций, во вторых, за счет избыточности хранения информации. Атомарная транзакция (atomic transaction) – операция с файловой системой, приводящая к её изменению, которая либо полностью успешно выполняется, либо не выполняется вообще (т. е. в случае сбоя во время атомарной транзакции все изменения откатываются). Избыточность используется при хранении важнейших данных файловой системы, критически необходимых для её корректной работы;
· безопасность (security) – защищенность файлов от несанкционированного доступа. Реализуется при помощи модели безопасности Windows, рассмотренной в лекции 9 "Безопасность в Windows";
· шифрование (encryption) – преобразование файла в зашифрованный код, который невозможно прочесть без ключа. Обычные механизмы безопасности, такие как назначение прав доступа пользователей к файлам, не обеспечивают полной защиты информации, например, в случае перемещения диска на другой компьютер. Администратор операционной системы всегда может получить доступ к файлам других пользователей, даже на томе NTFS. Поэтому в NTFS включена поддержка шифрующей файловой системы EFS (Encrypting File System), которая позволяет легко зашифровывать и расшифровывать файлы;
· поддержка RAID (Redundant Array of Inexpensive (Independent) Disks – массив недорогих (независимых) дисков с избыточностью) – возможность использования для хранения информации нескольких дисков; данные с одного диска автоматически копируются на другие, обеспечивая тем самым повышенную надежность;
· дисковые квоты для пользователей (Per-User Volume Quotas) – возможность выделения для каждого пользователя определенного пространства на диске (квоты); NTFS не позволяет пользователю записывать данные на диск сверх выделенной квоты.
Структура NTFS
В начале тома находится загрузочная запись тома (Volume Boot Record), в которой содержится код загрузки Windows, информация о томе (в частности, тип файловой системы), адреса системных файлов ($Mft и $MftMirr – см. далее). Загрузочная запись занимает обычно 8 КБ (16 первых секторов).
В определенной области тома (адрес начала этой области указывается в загрузочной записи) расположена основная системная структура NTFS – главная таблица файлов (Master File Table, MFT). В записях этой таблицы содержится всяинформация о расположении файлов на томе, а небольшие файлы хранятся прямо в записях MFT.
Важной особенностью NTFS является то, что вся информация, как пользовательская, так и системная, хранится в виде файлов. Имена системных файлов начинаются со знака "$". Например, загрузочная запись тома содержится в файле $Boot, а главная таблица файлов – в файле $Mft. Такая организация информации позволяет единообразно работать как с пользовательскими, так и с системными данными на томе.
Поскольку MFT является важнейшей системной структурой, к которой при операциях с томом наиболее часто происходят обращения, выгодно хранить файл $Mft в непрерывной области логического диска, чтобы избежать его фрагментации (размещения в разных областях диска), и, следовательно, повысить скорость работы с ним. С этой целью при форматировании тома выделяется непрерывная область, называемая зоной MFT (MFT Zone). По мере увеличения главной таблицы файлов, файл $Mft расширяется, занимая зарезервированное место в зоне.
Остальное место на томе NTFS отводится под файлы – системные и пользовательские.
Файлы NTFS
Как уже обсуждалось, основная информация о файле содержится в файловой записи (File Record) размером 1 КБ таблицы MFT, а небольшие файлы целиком хранятся в файловой записи.
Файловая запись состоит из заголовка (Header) и набора атрибутов (Attribute). В заголовке содержится служебная информация о файловой записи, например, её тип и размер. Все данные, относящиеся непосредственно к файлу, хранятся в виде атрибутов. Названия атрибутов, так же как и системных файлов, начинаются с "$". Например, отдельными атрибутами являются имя файла ($FILE_NAME), информация о его свойствах ($STANDARD_INFORMATION), данные файла ($DATA). Типичная файловая запись представлена на рис..
На диске файловая запись всегда расположена в начале сектора, первые байты файловой записи кодируют слово "FILE" (ASCII-коды: 46 49 4C 45). Конец записи определяется 4 байтовой последовательностью FF FF FF FF.
Физически атрибут файла хранится в виде потока байтов (stream) – простой последовательности байтов. Такое представление позволяет одинаковым образом работать с разнотипными атрибутами, а также добавлять нестандартные пользовательские атрибуты.
Каждый атрибут состоит из заголовка (attribute header), определяющего тип атрибута и его свойства, и тела (attribute body), содержащего основную информацию атрибута.
Дата добавления: 2021-01-11; просмотров: 488;