суббота, 4 октября 2014 г.

Файловые системы. Файл



Файловая система - это часть операционной системы, назначение которой состоит в том, чтобы обеспечить пользователю удобный интерфейс при работе с данными, хранящимися на диске, и обеспечить совместное использование файлов несколькими пользователями и процессами.
В широком смысле понятие "файловая система" включает:
  • совокупность всех файлов на диске,
  • наборы структур данных, используемых для управления файлами, такие, например, как каталоги файлов, дескрипторы файлов, таблицы распределения свободного и занятого пространства на диске,
  • комплекс системных программных средств, реализующих управление файлами, в частности: создание, уничтожение, чтение, запись, именование, поиск и другие операции над файлами.

Файл

Файл - это поименованная область на диске или любом запоминающем устройстве.
Файл характеризуется:
  • полным именем
  • типом
  • атрибутами
  • размером
Файлы идентифицируются именами. Пользователи дают файлам символьные имена, при этом учитываются ограничения ОС как на используемые символы, так и на длину имени.  Полное имя файла представляет собой совокупность пути к файлу, имени файла и его расширения.
Файлы бывают разных типов: обычные файлы, специальные файлы, файлы-каталоги.
Обычные файлы в свою очередь подразделяются на текстовые и двоичные. Текстовые файлы состоят из строк символов, представленных в ASCII-коде. Это могут быть документы, исходные тексты программ и т.п. Текстовые файлы можно прочитать на экране и распечатать на принтере. Двоичные файлы не используют ASCII-коды, они часто имеют сложную внутреннюю структуру, например, объектный код программы или архивный файл. 
Специальные файлы - это файлы, ассоциированные с устройствами ввода-вывода, которые позволяют пользователю выполнять операции ввода-вывода, используя обычные команды записи в файл или чтения из файла. Эти команды обрабатываются вначале программами файловой системы, а затем на некотором этапе выполнения запроса преобразуются ОС в команды управления соответствующим устройством. 
Каталог (папка) - это, с одной стороны, группа файлов, объединенных пользователем исходя из некоторых соображений (например, файлы, содержащие программы игр, или файлы, составляющие один программный пакет), а с другой стороны - это файл, содержащий системную информацию о группе файлов, его составляющих. В каталоге содержится список файлов, входящих в него, и устанавливается соответствие между файлами и их характеристиками (атрибутами).
В разных файловых системах могут использоваться в качестве атрибутов разные характеристики, например:
  • информация о разрешенном доступе,
  • пароль для доступа к файлу,
  • владелец файла,
  • создатель файла,
  • признак "только для чтения",
  • признак "скрытый файл",
  • признак "системный файл",
  • признак "архивный файл",
  • признак "двоичный/символьный",
  • признак "временный" (удалить после завершения процесса),
  • признак блокировки,
  • длина записи,
  • указатель на ключевое поле в записи,
  • длина ключа,
  • времена создания, последнего доступа и последнего изменения,
  • текущий размер файла,
  • максимальный размер файла.
Определить права доступа к файлу - значит определить для каждого пользователя набор операций, которые он может применить к данному файлу. В разных файловых системах может быть определен свой список дифференцируемых операций доступа. Этот список может включать следующие операции:
  • создание файла,
  • уничтожение файла,
  • открытие файла,
  • закрытие файла,
  • чтение файла,
  • запись в файл,
  • дополнение файла,
  • поиск в файле,
  • получение атрибутов файла,
  • установление новых значений атрибутов,
  • переименование,
  • выполнение файла,
  • чтение каталога,
и другие операции с файлами и каталогами. В самом общем случае права доступа могут быть описаны матрицей прав доступа, в которой столбцы соответствуют всем файлам системы, строки - всем пользователям, а на пересечении строк и столбцов указываются разрешенные операции.

Иерархия каталогов
Иерархия каталогов может быть деревом или сетью. Каталоги образуют дерево, если файлу разрешено входить только в один каталог, и сеть - если файл может входить сразу в несколько  каталогов. В MS-DOS каталоги образуют древовидную структуру, а в UNIX'е - сетевую. Как и любой другой файл, каталог имеет символьное имя и однозначно идентифицируется составным именем, содержащим цепочку символьных имен всех каталогов, через которые проходит путь от корня до данного каталога.
Рис. 2. Логическая организация файловой системы а - одноуровневая; б - иерархическая (дерево); в - иерархическая (сеть)

Обзор файловых систем

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

FAT является наиболее простой из поддерживаемых Windows NT файловых систем. Основой файловой системы FAT является таблица размещения файлов, которая помещена в самом начале тома. На случай повреждения на диске хранятся две копии этой таблицы. Кроме того, таблица размещения файлов и корневой каталог должны храниться в определенном месте на диске (для правильного определения места расположения файлов загрузки). 
Диск, отформатированный в файловой системе FAT, делится на кластеры, размер которых зависит от размера тома. Одновременно с созданием файла в каталоге создается запись и устанавливается номер первого кластера, содержащего данные. Такая запись в таблице размещения файлов сигнализирует о том, что это последний кластер файла, или указывает на следующий кластер. 
Каталог FAT не имеет определенной структуры, и файлы записываются в первом обнаруженном свободном месте на диске. Кроме того, файловая система FAT поддерживает только четыре файловых атрибута: «Системный», «Скрытый», «Только чтение» и «Архивный».

Файловая система FAT лучше всего подходит для использования на дисках и разделах  размером до 200 МБ, потому что она запускается с минимальными накладными расходами.
Как правило, не стоит использовать файловую систему FAT для дисков и разделов, чей размер больше 200 МБ. Это объясняется тем, что по мере увеличения размера тома производительность файловой системы FAT быстро падает. Для файлов, расположенных в разделах FAT, невозможно установить разрешения.

Файловая система NTFS
Записи в каталоге файловой системы NTFS одержат больше сведений, чем в FAT. Наряду с атрибутами файла здесь хранятся сведения о создании и внесении изменений, а также дата и время доступа. 
Целью файловой системы NTFS является следующее:

  • Обеспечение надежности, имеющей большое значение для высокопроизводительных систем и файловых серверов.
  • Предоставление платформы дополнительной функциональности.
  • Поддержка требований POSIX.
  • Устранение ограничений, характерных для файловой системы FAT.


Для обеспечения надежности файловой системы NTFS особое внимание было уделено трем основным вопросам: способности к восстановлению, устранению неустранимых ошибок одного сектора и экстренному исправлению. Для обеспечения способности к восстановлению NTFS отслеживает все транзакции в отношении файловой системы.

NTFS лучше всего подходит для использования с томами размером более 400 МБ. С увеличением размера тома производительность файловой системы NTFS не падает, как у FAT.
Благодаря способности к восстановлению в NTFS отсутствует необходимость использования каких-либо программ восстановления диска.
Из-за дополнительного расхода дискового пространства файловую систему NTFS не рекомендуется использовать с томами размером менее 400 МБ. Такой расход объясняется необходимостью хранения системных файлов NTFS (в разделе размером 100 МБ для этого требуется около 4 МБ).

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

Система HFS появилась в 1985 году. В ней каждый файл состоит из двух частей, так называемых, ветви ресурсов и ветви данных. Ветвь данных - это собственно содержание файла, например, текст, изображение, видео или звук. В ветви ресурсов содержится различная служебная информация о файле: даты создания и редактирования, информация о программе создателе, иконка файла, а если этот файл - программа, то и используемый код.
В 1998 году Apple выпустила в свет новую версию файловой системы - HFS+, в которой снимались некоторые ограничения HFS. Количество возможных символов в имени файле, и максимально возможный размер файла увеличились. На сегодняшний момент HFS+ является основной файловой системой компьютеров Apple.

Файловая система ext4
Первой файловой системой, разработанной специально для ОС на ядре Linux была Extended File System (расширенная файловая система), сокращённо ext или extfs. Она появилась в апреле 1992 г. для ядра Linux 0.96c. 
Журналируемая файловая система ext4, используется в ОС с ядром Linux в настоящее время. Основана на файловых системах ext - ext3. Впервые экспериментальная поддержка ext4 была выпущена 10 октября 2006 года программистом Эндрю Мортоном.
Основной особенностью стало увеличение максимального объёма одного раздела диска, и увеличение размера одного файла. Кроме того, в ext4 представлен механизм пространственной (extent) записи файлов (новая информация добавляется в конец заранее выделенной по соседству области файла), уменьшающий фрагментацию и повышающий производительность.

Файловая
система
Максимальная длина имен файлов
Допустимые символы в названиях
Максимальная длина пути файла
Максимальный размер файла
Максимальный размер тома
ext4
255 байт
Любые символы, кроме NUL, / 
Нет установленных ограничений
234байт— 244байт
260байт
FAT32
255 байт
Любые символы Юникода, кроме NUL
Нет установленных ограничений
234байт
229байт —
2
43байт
NTFS
255 символов
Любые символы Юникода, кроме NUL, " / \ * ? < > | :
32 767 символов Юникода; каждая компонента пути (каталог или имя файла) до 255 символов
264байт
264байт
XFS
255 байт
Любые символы, кроме NUL 
Нет установленных ограничений
9*260байт
9*260байт
HFS+
255 символов

Любые символы Юникода, кроме NUL


263байт
263байт
Источники: