Какие основные функции выполняет файловая система. Иерархическая структура файловой системы. Системы управления файлами

Файловая система позволяет систематизировать программы и данные и организовать упорядоченное управление этими объектами.

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

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

Файловая система – это система управления данными.

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

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

Файловая система (назначение):

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

Файловая структура

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

Используется древовидная структура каталогов – дерево каталогов . Заимствована у Unix. Иерархическая структура – структура системы, части (компоненты) которой связаны отношениями включения или подчинения.

Иерархическая структура изображается ориентированным деревом, в котором вершины соответствуют компонентам, а дуги – связям.

дерево каталогов диска G

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

Деревья используются при описании и проектировании иерархических структур.

Корень – начальная позиция, листья – заключительная позиция.

Разделы

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

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

Имя диска – обозначение логического диска; запись в корневом каталоге.

Логические диски (разделы) обозначаются латинскими буквами A, B, C, D, E, … (32 буквы от A до Z).

Буквы A, B зарезервированы для обозначения дискет.

С – жесткий диск, обычно с которого производится загрузка ОС.

Остальные буквы – логические диски, компакт-диски и т.д. Максимальное количество логических дисков для ОС Windows – бесконечное.

В таблице разделов указывается расположение начала и конца этого раздела и число секторов в этом разделе (место и размер).

Файловая структура логического диска

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

Элементы файловой структуры:

    стартовый сектор (начальной загрузки, Boot-сектор);

    таблица размещения файлов (FAT – File Allocation Table);

    корневой каталог (Root Directory);

    область данных (оставшееся свободным дисковое пространство).

Boot -сектор

Boot -сектор – первый (начальный) сектор диска. Находится на 0- стороне, 0-дорожке.

Boot-сектор содержит служебную информацию:

    размер кластера диска (кластер – блок, объединяющий в группу несколько секторов для сокращения размера FAT-таблицы);

    местоположение FAT-таблицы (в вoot-секторе находится указатель на то, где расположена FAT-таблица);

    размер FAT-таблицы;

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

    адрес начала корневой директории и ее максимальный размер.

В вoot-секторе находится блок начальной загрузки (загрузчик) – загрузочная запись Boot Record.

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

FAT (таблица размещения файлов)

FAT (File Allocation Table) – таблица размещения файлов. В ней определено, какие участки диска относятся к каждому файлу.Область данных диска представлена в ОС как последовательность пронумерованных кластеров.

FAT – это массив элементов, адресующих кластеры области данных диска. Каждому кластеру области данных соответствует один элемент FAT. Элементы FAT служат в качестве цепочки ссылок на кластеры файла в области данных.

Структура таблицы размещения файлов:

FAT состоит из элементов длиной 16 /32/64 бита. Всего в таблице может быть до 65520 таких элементов, каждый из них (кроме первых двух) соответствует кластеру диска. Кластер является той единицей, в которой распределяется пространство в области данных на диске для файлов и каталогов. Первые два элемента таблицы (с номерами 0 и 1) зарезервированы, а каждый из остальных элементов таблицы описывает состояние кластера диска с тем же номером. Элемент может указывать, что кластер свободен, что кластер дефектный, что кластер принадлежит файлу и является последним кластером в файле. Если кластер принадлежит файлу и не является его последним кластером, то элемент таблицы содержит номер следующего кластера в этом файле.

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

Для разных ОС необходимы разные версии FAT

Windows 95 FAT 16, FAT 32

Windows NT (XP) NTFS

Novell Netware TurboFAT

UNIX NFS,ReiserFS

Логическая структура носителя информации

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

Файл (переводится как досье, картотека - file) - поименованная целостная совокупность данных на внешнем носителе.

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

Одна и та же операционная система может поддерживать одновременно несколько файловых систем (табл. 4.1).

Таблица 4.1

Примеры файловых систем

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

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

имя файла;

расширение имени;

код времени создания файла;

код даты создания файла;

размер файла;

номер первого кластера, занимаемого файлом;

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

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

Поддержание файловой системы включает следующие действия:

создание файлов и присвоение им имен;

создание каталогов и присвоение имен;

переименование файлов и каталогов;

копирование и перемещение файлов между дисками компьютера и между каталогами одного диска;

удаление файлов и каталогов.

Имя каждого файла состоит из 2-х частей: основного имени и расширения. Расширение отделяется от основного имени точкой:

основное_имя. расширение,

например, «informatics.doc».

Правила описания основного имени определяются принятой файловой системой. До появления ОС Windows 95 файлы именовались «короткими» именами, в которых основное имя файла не превышало 8 символов (файловая система FAT), а его расширение - 3 символа. Имя и расширение включали только буквы латинского алфавита и цифры. В частности, такой принцип именования файлов используется в операционной системе MS-DOS. Недостаток коротких имен заключается в низкой информативности имени файла относительно содержимого файла. В Windows 95 было введено понятие «длинного» имени (файловая система VFAT). Такое имя может содержать до 256 символов. Длинное имя может включать любые символы за исключением специальных; «\», «/», «;», «*», «?», «"», «<», «>». Кроме этого, в именах файлов допускаются пробелы и несколько точек (файловые системы FAT32, NTFS и др.).

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

Рис. 4.4. Фрагмент списка зарегистрированных расширений файлов

Для более удобной работы с данными файлы объединяют по определенным признакам в группы, например, по принадлежности разным пользователям или по общей тематике содержимого и т.д. Группа файлов, для которой вводится общее имя, называется каталогом («директорией» от англ. directory). В операционной системе Windows каталоги называются папками . Имя каталога (папки), в отличие от имени файла, не включает расширение.

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

Рис. 4.5. Дерево каталогов.

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

А и В - гибкие магнитные диски;

С- жесткий магнитный диск;

D - оптический диск (если есть) и т.д.

Логический диск - это виртуальный диск на физическом диске или часть физического диска. Например, жесткий магнитный диск можно разбить на несколько логических дисков, имена которых будут соответственно С, D, E, F и т.д. В этом случае лазерный диск будет именоваться следующей буквой - G. Если жесткий диск не разбит на два и более логических диска, то он содержит один логический диск С.

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

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

Рис. 4.6. Полное имя файла

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

исправление ошибок в хранимых данных;

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

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

управление атрибутами файлов и каталогов.

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

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

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

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

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

«только для чтения»;

«скрытый»;

«системный»;

«архивный».

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

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

Атрибут «Системный» используется для файлов, связанных с функционированием операционной системы. Управляет данным атрибутом операционная система.

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

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

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

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

В широком смысле понятие "файловая система" включает:

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

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

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

Именно файловая система устанавливает, где и как будет записан файл на физическом носителе (например, жёстком диске).

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

Основные функции любой файловой системы нацелены на решение следующих задач:

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

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

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

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

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

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

Файловая система построена на основе таблицы размещения файлов (File Allocation Table - FAT ).

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

Цилиндр – это совокупность всех дорожек, принадлежащих разным поверхностям и находящихся на равном удалении от оси вращения.

Сектор – наименьшая физическая единица хранения данных. Размер сектора для DOS был равен 512 байт. Другие операционные системы устанавливают свои объемы секторов.

Поскольку размер FAT –таблицы ограничен, то для дисков, размер которых превышает 32 Мбайт, обеспечить адресацию к каждому отдельному сектору не представляется возможным. В связи с этим группы секторов условно объединяются в кластеры (блоки).

Кластер – наименьшая единица адресации к данным. Размер кластера, в отличие от размера сектора, не фиксирован и зависит от емкости диска.

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

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

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

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

Размер кластера, в отличие от размера сектора, не фиксирован и зависит от емкости диска. Файловая система ОС, реализующих 16-разрядные поля в таблицах размещения файлов, называется FAT 16. Она позволяет разместить в FAT –таблицах не более 216 записей о местоположении единиц хранения данных и, соответственно, для дисков объемом от 1 до 2 Гбайт длина кластера составляет 32 Кбайт (64 сектора). Это не вполне рациональный расход рабочего пространства, поскольку любой файл (даже очень маленький) полностью оккупирует весь кластер, которому соответствует только одна адресная запись в таблице размещения файлов. С дисками же размером более 2 Гбайт файловая система FAT 16 вообще работать не может.



Файловая система ОС, реализующих 32-разрядные поля в таблицах размещения файлов, называется FAT 32

Каталог FAT не имеет определенной структуры, и файлы записываются в первом обнаруженном свободном месте на диске. Кроме того, файловая система FAT поддерживает только четыре файловых атрибута: «Системный», «Скрытый», «Только чтение» и «Архивный».

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

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

Файловая система NTFS (New Technology File Sistem ) была выпущена вместе с Windows NT 3.5 в 1993 году. По сравнению с FAT, NTFS обладает достоинствами: эффективность, надежность и совместимость. Файловая система NTFS применяется в операционной системе Windows NT/2000/XP/6/7.

Как и любая другая система, NTFS делит все полезное место на кластеры. NTFS поддерживает почти любые размеры кластеров – от 512 байт до 64 Кбайт, неким стандартом же считается кластер размером 4 Кбайт.

При установке NTFS , диск разделяется на три неравные части: первая отводиться под MFT (Master File Table – общая таблица файлов), называется MFT –зоной и занимает порядка 12% от общего размера диска. MFT лежит в начале диска и занимает около 1 Кбайт, каждая запись в MFT соответствует какому-либо файлу. По своей сути это каталог всех файлов находящихся на диске. Любой элемент данных в NTFS рассматривается как файл, даже MFT.

MFT –зона всегда держится пустой – это делается для того, чтобы самый главный, служебный файл (MFT ) не фрагментировался при своем росте.

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

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

Первые 16 файлов (метафайлы) в MFT – зоне являются особой кастой. В них содержится служебная информация, они имеют фиксированное положение и они недоступны даже операционной системе. Кстати, первым из этих 16 является сам MFT – файл.

Рисунок 21.1

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

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

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

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

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

Система восстановления NTFS гарантирует корректность файловой системы, а не данных.

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

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

Непосредственное взаимодействие с диском - прерогатива компонента системы ввода-вывода ОС , называемого драйвером диска.

Файловая система для пользователя обеспечивает следующие возможности:

§ обращение к файлам по символьным именам (т.е. без имен физических устройств) - т.е. обеспечение независимости файлов от устройств;

§ создания, модификации и уничтожения файлов - т.е. предоставление средств манипуляции файлами;

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

§ сохранения и восстановления информации;

§ разделения файлов друг от друга при общей работе (при тщательном контроле ОС ), при этом механизм для разделения должен предусматривать различные варианты контроля доступа (для чтения, для записи, для выполнения);

§ защиты информации от несанкционированного доступа (файловая система может предусматривать даже шифровку данных);

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

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

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

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


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

§ Последовательный файл

§ Файл прямого доступа

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

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

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

Основные операции над файлами:

§ Создание файла

§ Удаление файла

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

§ Закрытие файла. Если работа с файлом завершена, то файл нужно закрыть, чтобы освободить место в таблицах файловой системы.

§ Чтение данных из файла.

§ Запись данных в файл

Есть и другие операции, например переименование файла, получение атрибутов файла и т. д.

ОС предоставляет также набор операций для работы с директориями, и хотя директории - это файлы, логика работы с ними имеет отличия:

§ Создание директории.

§ Удаление директории.

§ Открытие директории.

§ Закрытие директории.

§ Поиск в директории.

§ Получение списка файлов в каталоге.

§ Переименование.

§ Создание файла. При создании нового файла необходимо добавить в каталог соответствующий элемент.

§ Удаление файла. Удаление из каталога соответствующего элемента.

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

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

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

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

§ Связное распределение внешней памяти.

§ Несвязное (блочное) распределение внешней памяти.

Существует несколько распространенных способов реализации систем поблочного распределения:

§ цепочки блоков;

§ цепочки индексных блоков;

§ таблицы отображения блоков.

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

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

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

Тестовые задания

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

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

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

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

Имена и типы файлов

Файлы идентифицируются именами. Пользователи дают файлам символьные имена, при этом учитываются ограничения ОС как на используемые символы, так и на длину имени. До недавнего времени эти границы были весьма узкими. Так в популярной файловой системе FAT длина имен ограничивается известной схемой 8.3 (8 символов – собственно имя, 3 символа – расширение имени), а в ОС UNIX System V имя не может содержать более 14 символов. Однако пользователю гораздо удобнее работать с длинными именами, поскольку они позволяют дать файлу действительно мнемоническое название, по которому даже через достаточно большой промежуток времени можно будет вспомнить, что содержит этот файл. Поэтому современные файловые системы, как правило, поддерживают длинные символьные имена файлов. Например, Windows NT в своей новой файловой системе NTFS устанавливает, что имя файла может содержать до 255 символов, не считая завершающего нулевого символа.

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

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

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

Файлы бывают разных типов: обычные файлы, специальные файлы, файлы-каталоги. Обычные файлы в свою очередь подразделяются на текстовые и двоичные. Текстовые файлы состоят из строк символов, представленных в ASCII-коде. Это могут быть документы, исходные тексты программ и т.п. Текстовые файлы можно прочитать на экране и распечатать на принтере. Двоичные файлы не используют ASCII-коды, они часто имеют сложную внутреннюю структуру, например, объектный код программы или архивный файл. Все операционные системы должны уметь распознавать хотя бы один тип файлов – их собственные исполняемые файлы.

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

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

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

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

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

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

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

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

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

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

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