Вордовские лекции (1115151), страница 8
Текст из файла (страница 8)
- право на запись – возможность создания, переименования и удаления файла в каталоге.
Все UNIX-системы имеют соглашения о логической структуре каталогов, расположенных в корне файловой системы. Это упрощает работу операционной системы, ее обслуживание и переносимость. Эти соглашения используются при работе почтовой системы, системы печати и т.д.
Приведем описание содержимого основных каталогов:
Корневой каталог / я
вляется основой любой файловой системы ОС UNIX. Все остальные файлы и каталоги располагаются в рамках структуры, порожденной корневым каталогом, независимо от их физического положения на диске.
/unix - файл загрузки ядра ОС.
/bin -
файлы, реализующие общедоступные команды системы.
/etc - в
этом каталоге находятся файлы, определяющие настройки системы (в частности, файл passwd), а также команды, необходимые для управления содержимым подобных специальных файлов.
/tmp
- каталог для хранения временных системных файлов. При перезагрузке системы не гарантируется сохранение его содержимого. Обычно этот каталог открыт на запись для всех пользователей системы.
/mnt -
каталог, к которому осуществляется монтирование дополнительных физических файловых систем для получения единого дерева логической файловой системы. Заметим, что это лишь соглашение, в общем случае можно примонтировать к любому каталогу.
/dev -
каталог содержит специальные файлы устройств, с которыми ассоциированы драйверы устройств. Каждый из файлов имеет ссылку на соответствующий драйвер и указание типа устройства (блок- или байт-ориентированные). Этот каталог может содержать несколько подкаталогов, группирующих специальные файлы по типам. Таким образом, имеется возможность легко добавлять и удалять новые устройства в систему.
/lib -
здесь находятся библиотечные файлы языка Си и других языков программирования.
/usr -
размещается вся информация, связанная с обеспечением работы пользователей. Здесь также имеется подкаталог, содержащий часть библиотечных файлов (/usr/lib), подкаталог /usr/users (или /usr/home), который становится текущим при входе пользователя в систему, подкаталог, где находятся дополнительные команды (/usr/bin), подкаталог, содержащий файлы заголовков (/usr/include), в котором, в свою очередь подкаталог, содержащий include-файлы, характеризующие работу системы (например, signal.h - интерпретация сигналов).
5.3Внутренняя организация файловой системы
5.3.1Модель версии system V
Файловая система Unix может занимать раздел диска (partition). Количество разделов на каждом диске, их размеры определяются при предварительной подготовке устройства (разметка). Unix рассматривает разделы, как отдельные, независимые устройства.
Файловая система Unix может занимать раздел диска (partition). Количество разделов на каждом диске, их размеры определяются при предварительной подготовке устройства (разметка). Unix рассматривает разделы как отдельные, независимые устройства.
Суперблок файловой системы
содержит оперативную информацию о текущем файловой системы, а также данные о параметрах настройки, в частности:
-
размер логического блока (512б, 1024б, 2048б);
-
размер файловой системы в логических блоках (включая суперблок);
-
максимальное количество индексных дескрипторов (определяет размер области индексных дескрипторов);
-
число свободных блоков;
-
число свободных индексных дескрипторов;
-
специальные флаги;
-
массив номеров свободных блоков;
-
массив номеров свободных индексных дескрипторов;
-
и др.
Область (пространство) индексных дескрипторов.
Индексный дескриптор – это специальная структура данных файловой системы, которая ставится во взаимно однозначное соответствие с каждым файлом. Размер пространства индексных дескрипторов определяется параметром генерации файловой системы по количеству индексных дескрипторов, которые указаны в суперблоке.
Следующее пространство файловой системы - это блоки файлов. Это пространство на системном устройстве, в котором размещается вся информация, хранящаяся в файлах и о файлах, которая не поместилась в предыдущие блоки файловой системы.
Рассмотрим понятия, связанные с ключевыми атрибутами файловой системы и базовые алгоритмы работы с ними.
Работа с массивами номеров свободных блоков
В суперблоке файловой системы размещается массив номеров свободных блоков, этот массив является началом полного списка содержащего номера всех свободных блоков файловой системы. Пусть Nсвобобд. размер массива (зависит от размера блока).
Нулевой элемент массива содержит признак продолжения списка (непосредственно номера блоков размещаются с первого элемента до конца массива). Если массив полностью заполнен, то в этом случае нулевой элемент массива содержит номер блока в котором размещается продолжение списка свободных блоков и т.д. В противном случае нулевой элемент равен нулю. Оперативный доступ к списку осуществляется посредством использования массива в суперблоке.
Работа с массивом свободных индексных дескрипторов
Массив номеров свободных индексных дескрипторов содержит оперативный набор номеров свободных индексных дескрипторов. Размер массива - Nиндекс. При освобождении индексного дескриптора, если есть свободное место в массиве, то номер освободившегося индексного дескриптора записывается в соответствующий элемент массива. Если свободного места в массиве нет, то этот номер «забывается». При запросе нового индексного дескриптора осуществляется поиск в массиве, если массив не пустой, то все в порядке, если массив пустой – происходит операция обновления его содержимого (происходит просмотр области индексных дескрипторов и занесение в массив обнаруженных свободных). Т.е. массив свободных индексных дескрипторов – это своеобразный буфер.
Индексные дескрипторы
Индексный дескриптор (ИД) – описатель файла, содержит все необходимые для работы с файлом служебные атрибуты.
Через ИД осуществляется доступ к содержимому файлов. Любое имя файла в системе ассоциировано с ИД, но это соответствие неоднозначно. Т.е. ИД может соответствовать произвольное количество имен.
Структура индексного дескриптора:
-
тип файла, права, атрибуты выполнения (если = 0, то ИД свободен);
-
число имен, которые ассоциированы с данным ИД;
-
идентификаторы владельца-пользователя, владельца-группы;
-
размер файла в байтах;
-
время последнего доступа к файлу;
-
время последней модификации содержимого файла;
-
время последней модификации ИД (за исключением времени доступа и времени модификации файла)
-
массив номеров блоков файла.
Адресация блоков файла.
Интересным представляется организация адресации блоков файлов, принятая в данной модели файловой системы. Рассмотрим подробнее.
Для простоты изложения будем считать, что размер блока равен 512 байт.
Размещение данных файла задается списком его блоков. Это снимает проблемы непрерывных файловых систем, т.е. систем, где блоки файла располагаются последовательно. Таким образом реально блоки файла могут быть разбросаны по диску, но логически они образуют цепочку, содержащую весь набор данных. Ключом, задающим подобное расположение служит массив номеров блоков файла, содержащий список из 13 номеров блоков на диске, хранящихся в ИД. Первые десять указывают на десять блоков некоторого файла. Если файл занимает более 10 блоков, то 11 элемент указывает на косвенный блок, содержащий до 128 адресов дополнительных блоков файла (это еще 70656 байт). Большие файлы используют 12 элемент, который указывает на блок, содержащий 128 указателей на блоки, каждый из которых содержит по 128 адресов блоков файла. Еще в больших файлах аналогично используется 13 элемент. Трехкратная косвенная адресация позволяет создавать файлы длиной (10+128+128*128+128*128*128)*512 байт. Таким образом, если файл меньше 512 байт, то необходимо одно обращение к диску, если длина файла находится в пределах 512-70565 байт, то - два и так далее. Приведенный способ адресации позволяет иметь прямой и быстрый доступ к файлам. Эта возможность также усиливается кэшированием диска, позволяющим хранить в памяти наиболее используемые блоки . Важно отметить, что при открытии файла соответствующий ИД считывается в память и системе становятся доступны все номера блоков данного файла. Кроме того, для одного и того же файла, открываемого несколько раз, в памяти находится только один ИД. Система фиксирует число открытий данного файла и, когда этот счетчик обнуляется, резидентный образ ИД переписывается на диск. Если при этом изменений в файле не было и не модифицировался ИД, то запись не выполняется. Указанные особенности существенно влияют на эффективность файловой системы.
Рис.5 Адресация данных файла.
Файл каталог.
Содержимое файла – таблица. 1-е поле – это номер индексного дескриптора (ИД), которому соответствует имя Name из второго поля. Размеры полей в общем случае могут быть различные. Например размер поля ИД – 2 байта (ограничение числа ИД в файловой системе 65535), размер поля Name – 14 байт (соответственно ограничение на длину имени). В Unix две первые строки любого каталога имеют фиксированное содержание: имя «•» - ссылка на самого себя, имя «••» - ссылка на родительский каталог.
Видно, что при такой реализации имя файла “отделено” от других его атрибутов. Это позволяет, в частности, один и тот же файл внести в несколько каталогов. При этом, как отмечалось выше, данный файл может иметь разные имена в разных каталогах, но ссылаться они будут на один и тот же ИД, который является ключом для доступа к данным файла. При обсуждении понятия ИД говорилось, что каждая новая ссылка к ИД отмечается в специальном поле. Рассмотрим пример, иллюстрирующий связь файлов с каталогами.
Установление связей
Древовидность файловой системы Unix нарушается возможностью установления ссылок на одни и те же индексные дескрипторы из различных каталогов. Это может быть достигнуто за счет использования средств установления дополнительных связей. Существует две разновидности этой операции.
Установление жесткой связи - образование дополнительного имени, ассоциированного с индексным дескриптором. Для этого используется команда:
ln …dir1/name1 …dir2/name2 – (дли индексного дескриптора, с которым ассоциировано имя name1 добавляется еще одно имя – name2). Все имена, ассоциированные таким образом с индексным дескриптором равноправны. При этом увеличивается значение поля индексного дескриптора число имен, которые ассоциированы с данным ИД. Нельзя устанавливать жесткую связь для файлов-каталогов.
Установление символической связи - косвенная адресация на существующее имя файла. Для этих целей используется команда:
ln –s …dir1/name1 …dir2/name3 – в результате образуется специальный файл - ссылка Система работает с ним особым образом (например, при просмотре осуществляется просмотр не файла-ссылки, а файла на который он ссылается).
Достоинства/недостатки данной модели файловой системы
(+) Оптимизация в работе со списками номеров свободных индексных дескрипторов и блоков.
(+) Организация косвенной адресации блоков файлов, позволяющая использовать эффективный доступ к значительному количеству блоков файла.
(–) Концентрация важной информации в суперблоке - ключевая информация сконцентрирована в суперблоке файловой системы, физическая потеря содержимого суперблока может приводит к значительным проблемам, касающимся целостности файловой системы.
(–) Проблема надежности (много ссылочных структур, возможна потеря данных при сбоях).
(–) Фрагментация файла по диску – т.е. при достаточно больших размерах файла его блоки могут произвольным образом размещаться на физическом МД? Что может приводить к выполнению значительного числа механических операций перемещения головок устройства при чтении/записи данных файла.
(-) Организация каталога накладывает ограничения на возможную длину имени файла (14 символов).
5.3.2Модель версии FFS BSD
В Unix 4.2 BSD разработана модель организации файловой системы, которая получила название Fast File System - ffs (быстрая файловая система). Основной идеей данной модели файловой системы является кластеризация дискового пространства файловой системы, c целью минимизации времени чтения/записи файла, а также уменьшения объёма несипользуемого пространства внутри выделенных блоков.
Суть кластеризации заключается в следующем. Дисковое пространство, также, как и в модели s5fs имеет суперблок в котором размещена ключевая информация файловой системы (структура суперблоков s5fs и ffs, в общем случае, логически идентична), далее, дисковое пространство разделено на области одинакового размера, называемые группами цилиндров. Далее, стратегия функционирования файловой системы такова, что она старается разместить содержимое файлов (блоки файлов) в пределах одной группы цилиндров, при этом стараясь располагать файлы в той же группе цилиндров, что и каталог в котором они расположены.