Хелпикс

Главная

Контакты

Случайная статья





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



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

 

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

 

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

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

Использование файлов позволяет решать следующие основные задачи файловой системы.

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

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

Файловая система (ФС) – это часть операционной системы, включающая:

- совокупность всех файлов на диске;

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

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

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

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

Задачи, решаемые ФС, зависят от способа организации вычислительного процесса в целом. Самый простой тип – это ФС в однопользовательских и однопрограммных ОС, к числу которых относится, например. MS DOS. Основные функции в такой ФС нацелены на решение следующих задач:

- именование файлов;

- обеспечение программного интерфейса для приложений;

- отображение логической структуры файловой системы на физическую структуру дисков;

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

Задачи ФС усложняются в однопользовательских мультипрограммных ОС, которые хотя и предназначены для работы одного пользователя, но дают ему возможность запускать одновременно несколько процессов. Одной из первых ОС этого типа стала OS/2. К перечисленным выше задачам добавляется новая задача совместного доступа к файлу из нескольких процессов. Файл в этом случае является разделяемым ресурсом, а значит, файловая система должна решать весь комплекс проблем, связанных с такими ресурсами. В частности, в ФС должны быть предусмотрены средства блокировки файла и его частей, предотвращения гонок, исключения тупиков, согласования копий и т.п.

В многопользовательских системах появляется еще одна задача: зашита файлов одного пользователя от несанкционированного доступа другого пользователя.

Еще более сложными становятся функции ФС, которая работает в составе сетевой ОС.

 

Типы файлов

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

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

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

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

Современные файловые системы поддерживают и другие типы файлов.

 

Иерархическая структура файловой системы

 

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

а) Одноуровневая организация б) Дерево

в) Сеть

 

Граф, описывающий иерархию каталогов, может быть деревом или сетью. Каталоги образуют дерево, если файлу разрешено входить только в один каталог (рис. б), и сеть – если файл может входить сразу в несколько каталогов (рис. в). Например, в MS-DOS и Windows каталоги образуют древовидную структуру, а в UNIX – сетевую. В древовидной структуре каждый файл является листом. Каталог самого верхнего уровня называется корневым каталогом или корнем (root).

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

Частным случаем иерархической структуры является одноуровневая организация, когда все файлы входят в один каталог (рис. а).

 

Имена файлов

 

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

- простые;

- составные;

- относительные.

Простое, или короткое, символьное имя идентифицирует файл в пределах одного каталога. Простые имена присваивают файлам пользователи и программисты, при этом они должны учитывать ограничения ОС как на номенклатуру символов, так и на длину имени. Так, в старых версиях файловой системы FAT длина имен ограничивалась схемой 8.3 (8 символов – собственно имя, 3 символа – расширение имени).

В файловых системах NTFS и FAT32 имя файла может содержать до 255 символов.

В иерархических файловых системах разным файлам разрешено иметь одинаковые простые символьные имена при условии, что они принадлежат разным каталогам. То есть здесь работает схема «много файлов – одно простое имя». Для однозначной идентификации файла в таких системах используется так называемое полное имя.

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

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

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

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

 

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

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

- тип файла (обычный файл, каталог, специальный файл и т.п.);

- владелец файла;

- создатель файла;

- пароль для доступа к файлу;

- информация о разрешенных операциях доступа к файлу;

- времена создания, последнего доступа и последнего изменения;

- текущий размер файла;

- максимальный размер файла;

- признак «только для чтения»;

- признак «скрытый файл»;

- признак «системный файл»;

- признак «архивный файл»;

- признак «двоичный/символьный»;

- признак «временный» (удалить после завершения процесса);

- признак блокировки;

- длина записи в файле;

- указатель на ключевое поле в записи;

- длина ключа.

 

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

 

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

 

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

Файл, имеющий образ цельного, непрерывающегося набора байт, на самом деле в большинстве случаев разбросан «кусочками» по всему диску. Логически объединенные файлы из одного каталога совсем не обязаны соседствовать на диске. Принципы размещения файлов, каталогов и системной информации на реальном устройстве описываются физической организацией файловой системы. Разные файловые системы имеют разную физическую организацию.

 

Диски, разделы, секторы, кластеры

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

На каждой стороне каждого диска (поверхности) размечены тонкие концентрические кольца – дорожки (traks), на которых хранятся данные. Количество дорожек зависит от типа диска. Нумерация дорожек начинается с нуля от внешнего края к центру диска. Когда диск вращается, головка считывает или записывает двоичные данные с или на магнитную дорожку.

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

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

 

Сектор – наименьшая адресуемая единица обмена данными дискового устройства с оперативной памятью.

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

Физический адрес сектора на диске определяется с помощью трех «координат», т.е. представляется триадой [с-h-s], где с – номер цилиндра (дорожки на поверхности диска, cylinder); h – номер рабочей поверхности диска (магнитной головки, head); s – номер сектора на дорожке. Номер цилиндра с лежит в диапазоне от 0 до С-1, где С – количество цилиндров. Номер рабочей поверхности диска h принадлежит диапазону от 0 до Н-1, где Н – число магнитных головок в накопителе. Номер сектора на дорожке s указывается в диапазоне от 1 до S, где S – количество секторов на дорожке. Например, триада [1-0-2] адресует сектор 2 на поверхности 0 (обычно верхняя рабочая поверхность) цилиндра 1.

Все секторы диска имеют непрерывную нумерацию от 0 до N-1, где N – количество секторов на диске. Таким образом, сначала (начиная с нуля) нумеруются секторы на нулевой дорожке нулевой поверхности, затем – на нулевой дорожке первой поверхности, затем – на нулевой дорожке второй поверхности и т.д. После перенумерации секторов на нулевых дорожках всех поверхностей описанный процесс повторяется для первой и всех последующих дорожек.

 

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

Кластер представляет собой один или несколько смежных секторов в логическом дисковом адресном пространстве (точнее – только в области данных).  На жестких дисках кластер занимает обычно четыре или восемь секторов. Число секторов в кластере всегда кратно степени двойки. Логическое разбиение области данных на кластеры как совокупности секторов взамен использования одиночных секторов имеет следующий смысл:

- уменьшается возможная фрагментация файлов;

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

 

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

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

 

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

 

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

 

 

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

 

FAT –

FAT32 –

S5 –

NTFS –

 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.