Файловая структура и файловые системы
Файловая структура персонального компьютера.При хранении данных решаются две проблемы: как сохранить данные в наиболее компактном виде и как обеспечить к ним удобный и быстрый доступ (если доступ не обеспечен, то это не хранение). Для обеспечения доступа необходимо, чтобы данные имели упорядоченную структуру. При этом образуются адресные данные. Без них нельзя получить доступ к нужным элементам данных, входящих в структуру.
В качестве единицы хранения данных принят объект переменной длины, называемый файлом.
Файл - это именованная последовательность байтов произвольной длины. Поскольку файл может иметь нулевую длину, то создание файла заключается в присвоении ему имени и регистрации его в файловой системе - это одна из функций ОС.
Обычно в отдельном файле хранят данные, относящиеся к одному типу. В этом случае тип данных определяет тип файла.
Поскольку в определении файла нет ограничений на размер, можно представить себе файл, имеющий 0 байтов (пустой файл),и файл, имеющий любое число байтов.
В определении файла особое внимание уделяется имени. Оно фактически несет в себе адресные данные, без которых данные, хранящиеся в файле, не станут информацией из-за отсутствия метода доступа к ним. Кроме функций, связанных с адресацией, имя файла может хранить и сведения о типе данных, заключенных в нем. Для автоматических средств работы с данными это важно, поскольку по имени файла (а точнее по его расширению) они могут автоматически определить адекватный метод извлечения информации из файла.
По способам именования файлов различают «короткое» (на имя файла отводится 8 символов, а на его расширение - 3 символа) и «длинное» имя (до 256 символов). Имя файла от его расширения разделяются точкой. Расширение файла является необязательным параметром и может отсутствовать.
В ОС MS DOS имя (не более 8 символов) и расширение (не более 3 символов) могут состоять из прописных и строчных латинских букв, цифр и символов:
- _ $ # & @ ! % ( ) { } ' ~ ^
Следует помнить, что для ОС линии MS DOS:
- между именем и расширением ставится точка, не входящая ни в имя, ни в расширение;
- имя файла можно набирать в любом регистре, т.к. для системы все буквы строчные;
- символы, не использующиеся в имени файла
* = + [ ] \ ; : , . < > / ?
- имена устройств не могут использоваться в качестве имен файлов:
AUX - имя дополнительного устройства ввода-вывода;
CON - имя клавиатуры при вводе или дисплея при выводе;
LPT1 … LPT3 - имена параллельных портов;
COM1 … COM3 - имена последовательных портов;
PRN - имя печатающего устройства;
NUL - имя фиктивного устройства, эмулирующего выводные операции без реального вывода.
С появлением ОС Windows 95 введено понятие «длинного» имени. Такое имя может содержать до 256 символов, что достаточно для создания содержательных имен файлов. «Длинное» имя может содержать любые символы, кроме девяти специальных:
\ / : * ? " < > |
В имени разрешается использовать пробелы и несколько точек. Расширением имени считаются все символы, идущие после последней точки.
Наряду с «длинным» именем ОС Windows 95/98/Me/2000/XP создают также и короткое имя файла - оно необходимо для возможности работы с данным файлом на рабочих местах с устаревшими операционными системами.
Использование «длинных» имен файлов в последних ОС Windows имеет ряд особенностей.
1. Если «длинное» имя файла включает пробелы, то в служебных операциях его надо заключать в кавычки. Рекомендуется не использовать пробелы, а заменять их символами подчеркивания.
2. В корневой папке диска (на верхнем уровне иерархической файловой структуры) нежелательно хранить файлы с длинными именами - в отличие от прочих папок в ней ограничено количество единиц хранения (чем длиннее имена, тем меньше файлов можно разместить в корневой папке).
3. Кроме ограничения на длину имени файла (256 символов) существует гораздо более жесткое ограничение на длину полного имени файла (в него входит путь доступа к файлу, начиная от вершины иерархической структуры). Полное имя не может быть длиннее 260 символов.
4. Разрешается использовать символы любых алфавитов, в том числе и русского, но если документ готовится для передачи, с заказчиком необходимо согласовать возможность воспроизведения файлов с такими именами на его оборудовании.
5. Прописные и строчные буквы не различаются ОС. Имена Письмо.txt и письмо. txt соответствуют одному и тому же файлу.
6. Программисты давно научились использовать расширение имени файла для передачи ОС, исполняющей программе или пользователю сведений о том, к какому типу относятся данные, содержащиеся в файле, и о формате, в котором они записаны. Приложения систем предлагают выбрать только основную часть имени и указать тип файла, а соответствующее расширение имени приписывают автоматически.
В зависимости от расширения все файлы делятся на две большие группы: исполняемыеи неисполняемые.
Исполняемые файлы - это такие файлы, которые могут выполняться самостоятельно, т.е. не требуют каких-либо специальных программ для их запуска. Имеют следующие расширения:
· ехе - готовый к исполнению файл (winrar.exe; winword.exe);
· сот - файл операционной системы (command.com);
· sys - файл операционной системы (io.sys) - обычно это драйвер внешнего устройства;
· bat - командный файл операционной системы MS DOS (autoexec.bat).
Неисполняемые файлы для запуска требуют установки специальных программ. Так, например, для того чтобы просмотреть текстовый документ, требуется наличие какого-либо текстового редактора. По расширению неисполняемого файла можно судить о типе данных, хранящихся в данном файле. Приведем некоторые стандартные расширения и названия программ, предназначенных для работы с файлами указанных расширений:
ASM - текст программы на языке ассемблер;
AVI, MPEG, MPG, WMV и т.д. - различные форматы видеофайлов, для просмотра можно воспользоваться, например, Windows Media Player - тип данных : изображение;
BAK - старая версия файла;
BAS - текст программы на языке Бейсик;
BMP - документ, созданный в графическом редакторе, например, Paint - тип данных : изображение;
C - текст программы на языке Си;
CDR - графический файл, созданный в графическом процессоре CorelDraw - тип данных : изображение;
CPP - текст программы на языке C++;
dbf - файл базы данных, созданный, например, в СУБД FoxPro;
DOC - документ, созданный в текстовом процессоре Microsoft Word - тип данных: текст;
DWG, DXF - графические файлы, созданные в AutoCAD;
HTML - документ, рассчитанный на публикацию в Интернете;
LIB - библиотека (обычно объектных модулей);
MDB - файл базы данных, созданный в СУБД Microsoft Access;
MP3, MID, WMA, WAV – различные форматы звуковых файлов - тип данных: звук;
OBJ - объектный модуль;
PAS - текст программы на языке Паскаль;
PDF - PDF-документ, созданный и предназначенный для просмотра в программе Adobe Reader;
PPT - файл презентации, созданной в Microsoft PowerPoint;
PSD - графический файл, созданный в графическом процессоре Adobe Photoshop;
RAR - архивный файл, созданный программой архиватором WinRar;
RTF - документ, созданный в текстовом редакторе WordPad;
TIF, GIF, JPG - различные форматы графических файлов;
TMP - временный файл;
TXT - текстовый файл, например, созданный в программе Блокнот;
XLS - электронная книга, созданная в табличном процессоре Microsoft Excel - тип данных: символы (текст или числа);
ZIP - архивный файл, созданный программой архиватором WinZip.
Кроме имени и расширения имени файла операционная система хранит для каждой файла дату его создания (изменения) и несколько флаговых величин, называемых атрибутами файла. Атрибуты - это дополнительные параметры, определяющие свойства файлов. Операционная система позволяет их контролировать и изменять. Состояние атрибутов учитывается при проведении автоматических операций с файлами.
Основных атрибутов четыре:
· Только для чтения (Read only);
· Скрытый (Hidden);
· Системный (System);
· Архивный (Archive).
Атрибут «Только для чтения» ограничивает возможности работы с файлом. Его установка означает, что файл не предназначен для внесения изменений.
Атрибут «Скрытый» сигнализирует операционной системе о том, что данный файл неследует отображать на экране при проведении файловых операций. Это мера защиты против случайного (умышленного или неумышленного) повреждения файла.
Атрибутом «Системный» помечаются файлы, обладающие важными функциями для работы самой операционной системы. Его отличительная особенность в том, что средствами операционной системы его изменить нельзя. Как правило, большинство файлов, имеющих установленный атрибут «Системный», имеют также и установленный атрибут «Скрытый».
Атрибут «Архивный» в прошлом использовался для работы программ резервного копирования. Предполагалось, что любая программа, изменяющая файл, должна автоматически устанавливать этот атрибут, а средство резервного копирования должно его сбрасывать. Таким образом, очередному резервному копированию подлежали только те файлы, у которых этот атрибут был установлен. Современные программы резервного копирования используют другие средства для установления факта изменения файла, и данный атрибут во внимание не принимается, а его изменение вручную средствами операционной системы не имеет практического значения.
Хранение файлов организуется в иерархической структуре, которая в данном случае называется файловой структурой (рис. 7.1).
Рис. 7.1. Иерархическая структура диска
Файловая структура - иерархическая структура, в виде которой операционная система отображает файлы и каталоги (папки).
В качестве вершины структуры служит имя носителя, на котором сохраняются файлы. Далее файлы группируются в каталоги (папки), внутри которых могут быть созданы вложенные каталоги (рис. 7.1).
Имена внешних носителей информации. Диски, на которых хранится информация в компьютере, имеют свои имена - каждый диск назван буквой латинского алфавита, а затем ставится двоеточие. Так, для дискет всегда отводятся буквы А: и В:. Логические диски винчестера именуются, начиная с буквы С:. После всех имен логических дисков следуют имена дисководов для компакт-дисков. Например, установлены: дисковод для дискет, винчестер, разбитый на 3 логических диска и дисковод для компакт-дисков. Определить буквы всех носителей информации. А: - дисковод для дискет; С:, D:, Е: - логические диски винчестера; F: - дисковод для компакт-дисков.
Каталог (папка) - место на диске (специальный системный файл), в котором хранится служебная информация о файлах (имя, расширение, дата создания, размер и т.д.). Каталоги низких уровней вкладываются в каталоги более высоких уровней и являются для них вложенными. Каталог верхнего уровня (надкаталог) по отношению к каталогам более низкого уровня, называют родительским. Верхним уровнем вложенности иерархической структуры является корневой каталог диска (рис. 7.1). Каталог, с которым работает пользователь в настоящий момент, называется текущим.
Правила присвоения имени каталогу ничем не отличаются от правил присвоения имени файлу, хотя для каталогов не принято задавать расширения имен. При записи пути доступа к файлу, проходящего через систему вложенных каталогов, все промежуточные каталоги разделяются между собой определенным символом. Во многих ОС в качестве такого символа используется «\» (обратная косая черта).
Требование уникальности имени файла очевидно - без этого невозможно гарантировать однозначность доступа к данным. В средствах вычислительной техники требование уникальности имени обеспечивается автоматически - создать файл с именем, тождественным уже имеющемуся, не могут ни пользователь, ни автоматика.
Когда используется файл не из текущего каталога, программе, осуществляющей доступ к файлу, необходимо указать, где именно этот файл находится. Это делается с помощью указания пути к файлу.
Путь к файлу - это имя носителя (диска) и последовательность имен каталогов, в ОС Windows разделенных символом «\» (в ОС линии UNIX используется символ «/»). Этот путь задает маршрут к тому каталогу, в котором находится нужный файл.
Для указания пути к файлу используют два различных метода. В первом случае каждому файлу дается абсолютное имя пути (полное имя файла), состоящее из имен всех каталогов от корневого до того, в котором содержится файл, и имени самого файла. Например, путь С:\Abby\Doc\otchet.doc означает, что корневой каталог диска С: содержит каталог Abby, который, в свою очередь, содержит подкаталог Doc, где находится файл otchet.doc. Абсолютные имена путей всегда начинаются от имени носителя и корневого каталога и являются уникальными. Применяется и относительное имя пути. Оно используется вместе с понятием текущего каталога. Пользователь может назначить один из каталогов текущим рабочим каталогом. В этом случае все имена путей, не начинающиеся с символа разделителя, считаются относительными и отсчитываются относительно текущего каталога. Например, если текущим каталогом является С:\Abby, тогда к файлу с абсолютным путем С:\Abby\ можно обратиться как Doc\otchet.doc.
Файловые системы. Каждый файл на диске имеет свой адрес. Чтобы понять принцип доступа к информации, хранящейся в файле, необходимо знать способ записи данных на носители информации.
Все современные дисковые операционные системы обеспечивают создание файловой системы, предназначенной для хранения данных на дисках и обеспечения доступа к ним. Принцип организации файловой системы - табличный. Поверхность жесткого диска рассматривается как трехмерная матрица, измерениями которой являются номера поверхности, цилиндра и сектора.
Перед использованием диск размечается на дорожки и секторы (форматируется). С точки зрения оборудования разметка - это процесс записи на носитель служебной информации, отмечающей конец и начало каждого сектора.
Секторы – это блоки, в которых размещаются данные. Нумеруются, начиная с единицы. Помимо пользовательской информации, секторы содержат служебную информацию, например, собственный номер.
Дорожка - концентрическая окружность, по которой движутся головки чтения-записи при перемещении или поиске данных. Дорожки нумеруются с нуля. Нулевой номер имеет самая внешняя дорожка на диске.
Обычный объем сектора - 512 байт. На одной стороне размещается 80 дорожек. Каждая дорожка содержит 18 секторов.
Под цилиндром понимается совокупность всех дорожек, принадлежащих разным поверхностям и находящихся на равном удалении от оси вращения. Физическая структура хранения данных представлена на рисунке 7.2.
Рис. 7.2. Физическая структура хранения информации
Данные о том, в каком месте диска записан тот или иной-файл, хранятся в системной области диска в специальных таблицах размещения файлов (FAT-таблицах). Поскольку нарушение FAT-таблицы приводит к невозможности воспользоваться данными, записанными на диске, к ней предъявляются особые требования надежности и она существует в двух экземплярах, идентичность которых регулярно контролируется Средствами операционной системы.
Наименьшей физической единицей хранения информации является сектор. Поскольку размер FAT-таблицы ограничен, то для дисков, размер которых превышает 32 Мбайта, обеспечить адресацию к каждому отдельному сектору не представляется возможным. В связи с этим группы секторов условно объединяются в кластеры. Кластер является наименьшей единицей адресации к информации. Размер кластера, в отличие от размера сектора, не фиксирован и зависит от емкости диска.
Как было сказано ранее, информация на дисках записывается в секторах фиксированной длины, и каждый сектор и расположение каждой физической записи (сектора) на диске однозначно определяется тремя числами: номерами поверхности диска, цилиндра и сектора на дорожке. И контроллер диска работает с диском именно в этих терминах. А пользователь желает использовать не сектора, цилиндры и поверхности, а файлы и каталоги. Поэтому как-то требуется при операциях с файлами и каталогами на дисках перевести это в понятные контроллеру действия: чтение и запись определенных секторов диска. А для этого необходимо установить правила, по которым выполняется этот перевод, то есть, прежде всего, определить, как должна храниться и организовываться информация на дисках. Набор этих правил и называется файловой системой.
Файловая система - это набор соглашений, определяющих организацию данных на носителях информации. Наличие этих соглашений позволяет операционной системе, другим программам и пользователям работать с файлами и каталогами, а не просто с участками (секторами) дисков. Файловая система определяет:
· как хранятся файлы и каталоги на диске;
· какие хранятся сведения о файлах и каталогах;
· как можно узнать, какие участки диска свободны, а какие - нет;
· формат каталогов и другой служебной информации на диске.
Для использования дисков, записанных (размеченных) с помощью некоторой файловой системы, операционная система или специальная программа должна поддерживать эту файловую систему.
Файловая система, наиболее распространенная на IBM PC-совместимых компьютерах, была введена еще в начале 80-х годов в операционных системах MS DOS 1.0 и 2.0. Эта файловая система достаточно примитивна, так как она была создана для хранения данных на дискетах. Обычно эта файловая система называется FAT, так как самой важной структурой данных в ней является таблица размещения файлов на диске, по-английски - file allocation table, сокращенно - FAT. Эта таблица содержит информацию о том, какие участки (кластеры) диска свободны, и о цепочках кластеров, образующих файлы и каталоги.
В файловой системе FAT имена файлов и каталогов должны состоять не более чем из 8 символов плюс три символа в расширении имени. Она приводит к значительным потерям (до 20%) дискового пространства из-за больших размеров кластеров на дисках высокой емкости. Это связано с тем, что в конце последнего кластера файла остается свободное место, в среднем равное половине кластера. А на больших дисках размер кластеров FAT может достигать 32 Кбайт. Таким образом, на диске емкостью
2 Гбайта с 20000 файлов потери составят 320 Мбайт, то есть около 16%. Наконец, файловая система FAT малопроизводительна, особенно для больших дисков, не приспособлена к многозадачной работе (все операции требуют обращений к таблице размещения файлов, а потому до завершения одной операции нельзя начинать другую).
При разработке Windows 95 фирма Microsoft решила не вводить новую файловую систему, а залатать имеющуюся файловую систему FAT, позволив присваивать файлам и каталогам длинные имена. Эта файловая система стала называться FAT 32. Принятый в Windows 95 подход хорош тем, что позволяет использовать старые диски с файловой системой FAT - на них просто начинают записываться длинные имена. Но все же это решение весьма искусственное, и многие программы - для починки файловой системы дисков, «сжатия» дисков, резервного копирования и т.д. - могут привести к потере длинных имен на диске. FAT 32 поддерживает меньшие размеры кластеров, что позволяет более эффективно использовать дисковое пространство.
При разработке операционной системы Windows NT была создана новая файловая система - NTFS. Она была ориентирована на диски большого объема, содержащие множество файлов, в них приняты существенные меры по обеспечению эффективности хранения данных и контроля доступа к ним. Эта файловая система поддерживает длинные имена файлов. На логических дисках емкостью 1-2 Гбайта файловая система NTFS позволяет хранить в среднем на 10-15% больше информации, чем FAT. А доступ к файлам в ней осуществляется заметно быстрее, особенно в многозадачной среде.
При формировании файловой системы NTFS программа форматирования создает файл Master File Table (MTF) и другие области для хранения метаданных. Метаданные используются NTFS для реализации файловой структуры. Первые 16 записей в MTF зарезервированы самой NTFS. Местоположение файлов метаданных записано в загрузочном секторе диска. Если первая запись в MTF повреждена, NTFS считывает вторую запись для нахождения копии первой. Полная копия загрузочного сектора располагается в конце тома. В MTF хранятся метаданные, такие как копия первых четырех записей (гарантирует доступ к MTF в случае, если первый сектор поврежден). MTF содержит информацию о томе - метку и номер версии. В MTF находится таблица имен атрибутов и описания, корневой каталог и др. Остальные строки MTF содержат записи для каждого файла и каталога, расположенных на данном томе. Разработчики NTFS, не забывая об эффективности, старались также обеспечить надежность файловой системы и восстанавливаемость данных при сбоях. Для этого, в частности, NTFS дублирует всю критически важную информацию и обеспечивает регистрацию всех изменений на дисках в специальном файле регистрации, причем для каждого изменения запоминается и способ его отмены. В результате практически при любых сбоях NTFS автоматически восстанавливается. NTFS также (в отличие от FAT) может работать с логическими дисками и файлами размером более 2 Гбайт - максимальный размер логических дисков и файлов - 4х1018 байт.
Сравнительные характеристики файловых систем представлены в табл. 7.1. Если файловая система на диске не поддерживается данной операционной системой, то вся информация на этом диске окажется недоступной (при работе в этой операционной системе, естественно). Для таких логических дисков может быть либо вообще не назначена буква (то есть к диску нельзя будет обратиться), либо при любом доступе к диску будет выдаваться сообщение об ошибке.
Особая файловая система разработана для компакт-дисков (CD-ROM). Это оказалось необходимым, так как само физическое устройство компакт-дисков не такое, как у жестких дисков или дискет: в них информация записывается не в кольцевых дорожках, а в единственной спиралеобразной дорожке (как у аудиокомпакт-дисков). Эта файловая система называется CDFS.
Таблица 7.1
Сравнительные характеристики файловых систем
NTFS | FAT 32 | FAT | |
Поддерживаемые операционные системы | Windows NT с 4 пакетом обновлений, Windows 2000, Windows XP | MS-DOS, Windows 95 OSR2, Windows 98, Windows Millennium Edition, Windows NT, Windows 2000, Windows XP | MS-DOS, Windows 95 OSR2, Windows 98, Windows Millennium Edition, Windows NT, Windows 2000, Windows XP |
Возможные размеры логических дисков | Рекомендуемый минимальный размер логического диска (тома) равен примерно 10 МБ. Допускаются размеры томов свыше 2 ТБ. Не может использоваться для гибких дисков | Логический диск (том) объемом от 512 МБ до 2 ТБ. Может использоваться для гибких дисков | Логический диск (том) объемом до 4 ГБ. Может использоваться для гибких дисков |
Возможные размеры хранимых файлов | Максимальный размер файла ограничен только размером тома | Максимальный размер файла равен 4 ГБ | Максимальный размер файла равен 2 ГБ |