Операционные системы 2011 (1114689), страница 54
Текст из файла (страница 54)
В наборатрибутов может входить достаточно большое количество параметров, и состав атрибутовзависит от конкретной реализации системы. Среди атрибутов часто можно встретитьследующие параметры: имя файла, права доступа, персонификация (создатель/владелец),тип файла, размер записи (блока), размер файла, указатель чтения/записи, время создания,время последней модификации, время последнего обращения, предельный размер файла ит.п.Под именем файла понимается последовательность символов, используя которуюорганизуется именованный доступ к данным файла.
В одних файловых системах имяфайла воспринимается в качестве атрибута, другие ФС разделяют файл (его содержимое),имя и отдельно набор атрибутов.Следующим немаловажным атрибутом являются права доступа. Данный атрибутхарактеризует возможность доступа к содержимому файла различным категориямпользователей. Структура категорий пользователей, по которой организуется доступ,зависит от конкретной операционной системы. В частности, существуют операционныесистемы, в которых прав доступа нет: файлы доступны любому пользователю системы.Следующий атрибут — персонификация — связан с предыдущим.Соответственно, данный атрибут содержит информацию о принадлежности файла. Вобщем случае здесь может находиться несколько параметров: например, информация осоздателе файла, а также информация о владельце файла.
Зачастую эти параметрысовпадают, но возможны ситуации, когда они отличаются.Тип файла — информация о способе организации файла и интерпретации егосодержимого. Говоря о способе организации, можно привести пример файловой системыОС Unix, которая поддерживает разные типы файлов. Среди прочих имеются т.н. файлыустройств, соответствующие тем устройствам, которые обслуживает данная ОС; и черезэти файлы устройств происходит фактически обращение к драйверам устройств.
Совсеминаче организованы регулярные файлы, которые могут хранить различную информацию(текстовую, графическую и пр.). О различных способах организации речь пойдет ниже.Если речь идет об интерпретации, то она может быть явной и неявной, т.е.возможно указание, как интерпретировать содержимое файла. Например, можно указать,является ли данный файл исполняемым или неисполняемым. Исполняемый файл можнозапустить как процесс, в отличие от неисполняемого.
Таким образом, атрибут типа файламожет содержать многоуровневую комплексную информацию.200Размер записи (или размер блока). В системе имеется возможность указать, чтоданный файл организован в виде последовательности блоков данного размера, при этомразмер определяется пользователем (пользовательским процессом). Размер может бытьстационарным, когда при создании файла указывается фиксированный размер блоков, инестационарным, когда размер блока задается каждый раз при открытии файла.Размер файла. Данный атрибут имеет достаточно простой смысл; заметим, чтообычно размер файла задается в байтах.Указатель чтения/записи — это указатель, относительно которого происходитчтение или запись информации.
В общем случае с каждым файлом ассоциируются двауказателя (и на чтение, и на запись), хотя бывают файловые системы, в которыхиспользуется единый указатель чтения/записи. Соответственно, операции чтения/записиоперируют данными, следующими за указателями.Среди прочих атрибутов файла возможны атрибуты, отражающие системную истатистическую информацию о файле: например, время последней модификации, времяпоследнего обращения, предельный размер файла и т.д. Еще одной важной группойатрибутов являются атрибуты, хранящие информацию о размещении содержимого файла,т.е.
где в файловой системе организовано хранение данных файла, и как оно организовано.4.1.3 Основные правила работы с файлами. Типовые программныеинтерфейсыПрактически все файловые системы при организации работы с файлами действуютпо схожим сценариям, которые в общем случае состоят из трех основных блоковдействий.Первый этап – это начало работы с файлом (или открытие файла). Вбольшинстве систем для процессов, желающих работать с файлом, имеются операцииоткрытия файла. Посредством данной операции процесс передает файловой системезапрос на работу с конкретным файлом. Получив запрос, файловая система производитсоответствующие проверки возможности (в т.ч.
на наличие полномочий) работы сфайлом; в случае успеха выделяет внутри себя необходимые ресурсы для работы процессас указанным файлом. В частности, для каждого открытого файла создается т.н. файловыйдескриптор – системная структура данных, содержащая информацию об актуальномсостоянии открытого файла (режимы, позиции указателей и т.п.). Файловый дескриптор,как системная структура данных, может размещаться как в адресном пространствепроцесса, так и в пространстве памяти операционной системы. Соответственно, приоткрытии файла процесс получает либо номер файлового дескриптора, либо указатель наначало данной структуры.
Все последующие операции с содержимым файла происходят суказанием именно файлового дескриптора, и эти операции образуют следующий блокдействий.Второй блок действий образуют операции по работе с содержимым файла(чтение и запись), также операции, изменяющие атрибуты файла (режимы доступа,изменение указателей чтения/записи и т.п.).Последний этап — это закрытие файла: уведомление системе о закрытиипроцессом файлового дескриптора (а не файла). Подчеркнем, что процесс прекращаетработу не с файлом, а с конкретным файловым дескриптором, поскольку даже в рамкаходного процесса можно открыть один и тот же файл два и более раза, и на каждоеоткрытие будет предоставлен новый файловый дескриптор.
После операции закрытияоперационная система выполняет необходимые действия по корректному завершениюработы с файловым дескриптором, а если закрывается последний открытый дескриптор —то осуществляет корректное завершение работы с файлом: в частности, по необходимостиосвобождаются системные ресурсы, в т.ч. выполняется разгрузка кэш-буферов файловыхобменов и т.д.201Структурно каждая операционная система предлагает унифицированный наборинтерфейсов, посредством которых можно обращаться к системным вызовам работы сфайлами. Обычно этот набор содержит следующие основные функции:open — открытие/создание файла;close — закрытие;read/write — чтение/запись (относительно положения указателя чтения/записисоответственно);delete — удаление файла из файловой системы;seek — позиционирование указателя чтения/записи;read_attributes/write_attributes — чтение/модификация некоторых атрибутов файла(в файловых системах, рассматривающих имя файла не как атрибут, возможнадополнительная функция переименования файла — rename).Практически все файловые системы включают в свой состав некоторыйспециальный компонент, посредством которого можно установить соответствие междуименем файла и его атрибутами.
Используя это соответствие, можно получитьинформацию о размещении данных в файловой системе и организовать доступ к данным.И этим компонентом является каталог. Итак, каталог — это системная структураданных файловой системы, в которой находится информация об именах файлов, а такжеинформация, обеспечивающая доступ к атрибутам и содержимому файлов. Каталогиявляются специальным видом файлов.Рассмотрим типовые модели организации каталогов (в соответствии схронологическим порядком их появления).Первой исторической моделью является одноуровневая файловая система(система с одноуровневым каталогом).
В файловой системе данного типа (Рис. 103)присутствует единственный каталог, в котором перечислены всевозможные имена файлов,находящихся в данной системе. Этот каталог устроен простым способом: для каждогофайла хранится информация об его имени, расположении первого блока и размере файла.Эта простота влечет за собой и простоту доступа к информации файлов, но эта модель непредполагает многопользовательской работы. В данном случае возможны коллизии имен(когда возникают попытки создания файлов с одним именем).
Данная модель в настоящеевремя используется в бытовой технике, которая выполняет фиксированный набордействий.Каталог(корневой каталог)NAME1/NAME2NAME3…Рис. 103. Модель одноуровневой файловой системы.Следующей моделью является двухуровневая файловая система (Рис. 104).Данная модель предполагает работу нескольких пользователей: файловая система этоготипа позволяет группировать файлы по принадлежности тому или иному пользователю.Эта модель лучше одноуровневой (в частности, не возникают коллизии имен файловразных пользователей), но и она обладает недостатками: зачастую неудобно и даженежелательно расположение всех файлов одного пользователя в одном месте (в одномкаталоге). В частности, остается проблема коллизии имен для файлов одногопользователя.Отметим, что двух-, трех- и вообще N-уровневые (N – фиксированное) моделиостаются актуальными и по сей день.
Объясняется это тем, что они, в первую очередь,достаточно просты по своей структуре и организации работы с ними. Если мы посмотрим202на простейший мобильный телефон, имеющий несколько уровней меню, в них обычнореализованы именно подобные файловые системы.Корневой каталог/КаталогипользователейN11…USR1USR1N21 … Nk1N12N22 … Nl2USR1N1M N2M … NnMРис. 104. Модель двухуровневой файловой системы.И, наконец, последняя модель, которую мы рассмотрим, — иерархическаяфайловая система (Рис. 105). Современные многопользовательские файловые системыосновываются на использовании иерархических структур данных, в частности, наиспользовании деревьев.Вся информация в иерархической файловой системе представляется в виде дерева,имеющего корень.