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

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 16:56, 24 августа 2017.

Фа́йловая систе́ма (англ. file system) — порядок, определяющий способ организации, хранения и именования данных на носителях информации в компьютерах, а также в другом электронном оборудовании: цифровых фотоаппаратах, мобильных телефонах и т. п. Файловая система определяет формат содержимого и способ физического хранения информации, которую принято группировать в виде файлов. Конкретная файловая система определяет размер имен файлов и (каталогов), максимальный возможный размер файла и раздела, набор атрибутов файла. Некоторые файловые системы предоставляют сервисные возможности, например, разграничение доступа или шифрование файлов.

Общие понятия

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

Состав файловой системы

  • Совокупность файлов.
  • Набор структур данных управления (каталоги, дескрипторы, таблицы).
  • Функции управления (создание объекта ФС, уничтожение, чтение, запись).

Каждый файл характеризуется своим уникальным именем. Чтобы упростить имена используются разрешения.

Для FAT16 правило 8.3: имя файла может состоять из 12 символов (8 - основная часть, и 3 символа расширения).

При копировании в файловой системе файлов производится преобразование имен.

Путь в файловой системе - для однозначной идентификации объекта.

Типы файлов

  • Текстовые.
  • Двоичные.
  • Специальные (связанные с аппаратными устройствами).
  • Файлы, через которые описываются каталоги (директор).

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

  • Системные.
  • Архивные.
  • Только для чтения.
  • Скрытые.
  • Время создания
  • Временные

Типы иерархической структуры

  • Дерево: узлы - объекты файловой системы, показана их вложенность; корень - точка, в которой начинается файловая система.
  • Сеть: в отличие от дерева один объект может присутствовать в разных директориях.

С понятием файловые системы связаны следующие технологии:

Принципы организации файловых систем

Логическая организация файла

Описывает то, как выглядит файл для работающих с ним приложений. Файл рассматривается как набор записей. Выделяют следующие подходы к хранению файлов:

Набор записей постоянной длины

Последовательное хранение логических записей фиксированного размера.

Набор записей переменной длины

Для любой записи тут в начале (конце) должна указываться длина.

Физическая организация файла

Описывает, как файл может размещаться на носителе. Выделяют следующие способы размещения:

Непрерывное размещение

Непрерывное размещение (подряд блок за блоком).

Достоинства:

  • простота реализации
  • скорость доступа (все данные подряд, поэтому не надо перемещать носитель головки).

Недостатки:

  • фрагментация
  • место на носителе распределяется неэффективно.

Связанный список блоков

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

Связанный список индексов

Популярным способом, используемым, например, в файловой системе FAT операционной системы MS-DOS, является использование связанного списка индексов. С каждым блоком связывается некоторый элемент - индекс. Индексы располагаются в отдельной области диска (в MS-DOS это таблица FAT). Если некоторый блок распределен некоторому файлу, то индекс этого блока содержит номер следующего блока данного файла. При такой физической организации сохраняются все достоинства предыдущего способа, но снимаются оба отмеченных недостатка: во-первых, для доступа к произвольному месту файла достаточно прочитать только блок индексов, отсчитать нужное количество блоков файла по цепочке и определить номер нужного блока, и, во-вторых, данные файла занимают блок целиком, а значит имеют объем, равный степени двойки.

Перечень номеров блоков

Для хранения адреса файла выделено 13 полей. Если размер файла меньше или равен 10 блокам, то номера этих блоков непосредственно перечислены в первых десяти полях адреса. Если размер файла больше 10 блоков, то следующее 11-е поле содержит адрес блока, в котором могут быть расположены еще 128 номеров следующих блоков файла. Если файл больше, чем 10+128 блоков, то используется 12-е поле, в котором находится номер блока, содержащего 128 номеров блоков, которые содержат по 128 номеров блоков данного файла. И, наконец, если файл больше 10+128+128*128, то используется последнее 13-е поле для тройной косвенной адресации, что позволяет задать адрес файла, имеющего размер максимум 10+ 128 + 128*128 + 128*128*128.

Общая организация файловой системы

ОС WINDOWS

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

Кластер — упрощенно, минимальная ячейка на жестком диске для хранения информации, эдакая коробочка для хранения файлов. Кластер имеет вполне конкретные стандартизованные размеры равные 512 байт раньше и 4 096 байт в настоящее время. В одном кластере хранится только один файл, если он меньше размера кластера, то все равно занимает весь кластер. Когда файл не помещается целиком в одном кластере, то он записывается кусочками по разным кластерам, необязательно соседним. Поскольку размеры файлов крайне редко кратны размеру кластера, то на диске файлы практически всегда занимают больше места, чем их реальный размер. Чтобы было понятнее, возьмем для наглядности такой пример. Есть 9 кирпичей, из них 3 белых и 6 красных, а в контейнер помещается только 5 кирпичей одного типа. Чтобы хранить наши кирпичи нам понадобится 3 контейнера, хотя емкость двух контейнеров 10 кирпичей. Вот наглядная иллюстрация, как это происходит.

Файл:

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

Файл размером 6 байт занимает в файловой системе жесткого диска 4 096 байт, т.е. один кластер. Соответственно маленький размер кластера больше подходит для хранения маленьких файлов, а большой размер кластера для хранения больших. Тогда место на диске будет использоваться более рационально. Так же происходит и с ярлыками.

Структура файловой системы Windows

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

Файл:

Дальнейший рост емкости дисков привел к следующему очевидному шагу, разбить один физический носитель информации на несколько логических разделов (дисков). Логически выделенная часть смежных блоков на диске называется раздел (partition). Такая структура файловой системы применяется в настоящее время в операционной системе Windows.

Файл:

Это позволяет упростить структурирование информации, повысить надежность хранения данных за счет разделения системных и пользовательских файлов, более гибко управлять правами доступа к файлам, увеличить скорость дисковых операций. Каждый созданный логический диск воспринимается операционной системой, как независимый, хотя фактически он виртуален. Благодаря этому каждому разделу жесткого диска можно назначить произвольную файловую систему или настроить размер кластера, а так же иметь несколько операционных систем на одном компьютере.

Первый физический сектор жесткого диска отведен для хранения главной загрузочной записи (MBR), необходимой для начальной загрузки операционной системы, а так же хранит таблицу разделов.

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

Вот и все, что мы хотели рассказать о файловой системе компьютера в операционной системе Windows.

2

Все данные в компьютере хранятся в файлах (file – с англ. документ). Каждый файл имеет название, которое состоит из двух частей: имя(позволяет идентифицировать конкретный документ); расширение(характеризует тип документа, необязательный параметр). Длина имени вместе с расширением может содержать до 256 символов, имя от расширения отделяется точкой (расширением считаются символы после последней встречающейся точки). В имени и расширении файла нельзя использовать символы «?», «*», «:», «\», «/», «<», «>» и символ кавычек. В операционной системе MS-DOSфайлы с расширениями {.com, .exe, .bat} – исполняемые, {.txt, .doc} – текстовые, {.pas, .bas, .c, .for} – тексты программ на языках программирования: Паскаль, Бейсик, Си, Фортран соответственно, {.mdb} – файл базы данных. Windows различает прописные и строчные буквы при создании файла, но игнорирует регистр при обращении к файлу. Для нахождения файла не из текущей папки необходимо указать путь к нему. Путь – это последовательность продвижения от текущей папки или диска по ветвям дерева к нужному файлу. Имена папок на этом пути разделяются символом «\», а выход на один уровень вверх – «..». Если путь начинается с символа "\", то движение начинается от текущего диска, в противном случае – от текущей папки. Для указания нескольких файлов, объединенных по какому-либо признаку, в операционной системе используют специальные символы “*” и “?”. Символ «*» заменяет в имени или расширении файла любое количество произвольных символов, а «?» – любой символ, но только один. ????????.docили *.doc– все файлы в текущей папке, обладающие расширением .doc. ???.doc– файлы с именем длиной не более трех символов и расширением .doc, с??.doc–все файлы с именем, начинающимся с символа “с”, длиной не более трех символов и расширением .doc. Папки (каталоги)– элементы иерархической структуры, необходимые для обеспечения удобного доступа к файлам. Файлы объединяются в папки по признаку, заданному пользователем (по типу, по назначению, по принадлежности и т.п.) Папки низких уровней вкладываются в папки более высоких уровней и являются для них вложенными. Верхним уровнем вложенности иерархической структуры является корневой каталог диска. Все папки образуют древовидную структуру. Самой главной папкой (папкой верхнего уровня) является Рабочий стол. В нее вложены папки:Мой компьютер,Сетевое окружениеиКорзина. Мой компьютерсодержит все ресурсы данного компьютера, позволяет иметь доступ ко всем дискам, папкам и файлам в компьютере, содержит средства настройки и управления и т.д. Сетевое окружениепозволяет иметь доступ ко всем ПК и серверам, подключенным к ЛВС (Локальной Вычислительной Сети). Корзинапредназначена для временного хранения удаленных файлов, папок, ярлыков, позволяет восстановить объекты, удаленные по ошибке. Все ограничения, существующие для имен файлов, распространяются на имена папок, причем в имени папки расширение, как правило, отсутствует. Диски в Windows также считаются папками. Все современные дисковые ОС обеспечивают создание файловой системы, предназначенной для хранения данных на дисках и обеспечения доступа к ним. Принцип организации файловой системы – табличный. Поверхность жесткого диска рассматривается как трехмерная матрица. Ее измерения: номер поверхности; номер цилиндра; номер сектора. Данные о месторасположении хранятся в системной области диска в специальных таблицах размещения файлов (FAT-таблицах). Сектор– наименьшая единица хранения данных (512 байт). Кластер– наименьшая единица адресации к данным (размер не фиксирован, зависит от емкости диска). Windows 98 обеспечивает совершенную организацию файловой системы – FAT32 с 32-разрядными полями в таблице размещения файлов. Функции обслуживания файловой структуры: запуск программ и открытие документов; создание файлов и присвоение им имен; создание папок (каталогов) и присвоение им имен; переименование файлов и папок (каталогов); копирование и перемещение файлов между дисками компьютера и между папками (каталогами) одного диска; удаление файлов и папок (каталогов); навигация по файловой структуре с целью доступа к заданному файлу, папке (каталогу); управление атрибутами файлов.

ОС UNIX

Состоит из двух компонент:

  • иерархия файлов и директорий
  • набор файлов устройств, логических томов или разделов.

Для файловой системы UNIX характерна операция монтирования. Монтирование – установление ассоциаций между именами файловой иерархии и устройствами. Оно происходит в два этапа:

  • монтирование корневой директории
  • монтирование остальной ФС в точке монтирования согласно таблице монтирования.
Unix FS 1.png

inode – структура, описывающая файл

maps – битовая карта (какие из блоков заняты, какие из inode свободны)

suberblock – содержит описание расположения структур данных.

Indode

Информация:

  • владелец файла
  • тип файла
  • права доступа файла
  • размер файла
  • счетчик ссылок
  • дата и время
  • указатель на данные
Unix FS 2.png

Жесткая ссылка – два файла с одним inode – это один и тот же файл.

Unix FS 3.png

Динамическая информация суперблока:

  • информация о свободных блоках данных
  • информация о inode
  • флаг состояния файловой системы

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

Organization of access rights in the file system.png

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

  1. Право чтения.
  2. Право записи.
  3. Право исполнения.
  4. Право удаления.
  5. Право копирования (чтение и создание).
  6. Право перемещения (удаление и создание).
  7. Право просмотра списков файлов.

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

Различают два основных подхода к определению прав доступа:

  1. избирательный доступ, когда для каждого файла и каждого пользователя сам владелец может определить допустимые операции;
  2. мандатный подход, когда система наделяет пользователя определенными правами по отношению к каждому разделяемому ресурсу (в данном случае файлу) в зависимости от того, к какой группе пользователь отнесен.

Общая модель файловой системы

The general model of the file system.png

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

Задачей символьного уровня является определение по символьному имени файла его уникального имени. В файловых системах, в которых каждый файл может иметь только одно символьное имя (например, MS-DOS), этот уровень отсутствует, так как символьное имя, присвоенное файлу пользователем, является одновременно уникальным и может быть использовано операционной системой. В других файловых системах, в которых один и тот же файл может иметь несколько символьных имен, на данном уровне просматривается цепочка каталогов для определения уникального имени файла. В файловой системе UNIX, например, уникальным именем является номер индексного дескриптора файла (i-node).

На следующем, базовом уровне по уникальному имени файла определяются его характеристики: права доступа, адрес, размер и другие.

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

На логическом уровне определяются координаты запрашиваемой логической записи в файле, то есть требуется определить, на каком расстоянии (в байтах) от начала файла находится требуемая логическая запись. При этом абстрагируются от физического расположения файла, он представляется в виде непрерывной последовательности байт.

На физическом уровне файловая система определяет номер физического блока, который содержит требуемую логическую запись, и смещение логической записи в физическом блоке.

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

Файлы, отображаемые в оперативную память

В системе есть 2 вызова:

  • map (<имя файла>, <адрес>) - файл загружается в оперативную память по данному адресу.
  • unmap (<имя файла>) - отменяет отображение: сбрасывает копию файла, т.е. размещает в файловой системе.

Достоинство: быстрый доступ.

Недостатки:

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

Организация работы с двумя и более файловыми системами

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

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

Support for multiple file systems.png

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

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

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

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

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

Виды файловых систем

  • Предназначенная для жестких дисков
    Примером таких систем могут быть: ext (Extended File System), FAT, NTFS (New Technology File System). Во многих файловых системах может применяться журналирование для повышения производительности.
  • Предназначенная для магнитных лент. Например, QIC.
  • Предназначенная для оптических носителей. Например, HFS (Hierarchical File System).
  • Виртуальная. Например, UEFS.
  • Сетевая. Например, NFS (Network File System).

Источники

Ссылки

  • Блог Евгения Крыжановского [Электронный ресурс]: / Дата обращения: 03.06.2016. - Режим доступа: http://bezwindowsa.ru/programmy/