Курынин Р.В., Машечкин И.В., Терехин А.Н. - Конспект лекций по ОС (1114685), страница 43
Текст из файла (страница 43)
Еще одной важной группой атрибутовявляются атрибуты, хранящие информацию о размещении содержимого файла, т.е. где в файловойсистеме организовано хранение данных файла, и как оно организовано.4.1.3Основные правилаинтерфейсыработысфайлами.ТиповыепрограммныеПрактически все файловые системы при организации работы с файлами действуют посхожим сценариям, которые в общем случае состоят из трех основных блоков действий.Во-первых, это начало работы с файлом (или открытие файла).
Большинство систем дляпроцессов, желающих работать с файлом, предполагают наличие операции открытия файла.Посредством данной операции процесс передает файловой системе запрос на работу с конкретнымфайлом. Получив запрос, файловая система производит соответствующие проверки возможности(в т.ч. на наличие полномочий) работы с файлом, в случае успеха выделяет внутри себянеобходимые ресурсы для работы процесса с указанным файлом.
В частности, для каждогооткрытого файла создается т.н. файловый дескриптор, в котором отражается актуальноесостояние открытого файла (режимы, позиции указателей и т.п.). Файловый дескриптор, каксистемная структура данных, может размещаться как в адресном пространстве процесса, так и впространстве памяти операционной системы. Соответственно, при открытии файла процессполучает либо номер файлового дескриптора, либо указатель на начало данной структуры.
Всепоследующие операции с содержимым файла происходят с указанием именно файловогодескриптора, и эти операции образуют следующий блок действий.Второй блок действий образуют операции по работе с содержимым файла (чтение изапись), также операции, изменяющие атрибуты файла (режимы доступа, изменение указателейчтения/записи и т.п.).Последний этап — это закрытие файла: уведомление системы о закрытии процессомфайлового дескриптора (а не файла). Подчеркнем, что процесс прекращает работу не с файлом, а сконкретным файловым дескриптором, поскольку даже в рамках одного процесса можно открытьодин и тот же файл два и более раза, и на каждое открытие будет предоставлен новый файловыйдескриптор.
После операции закрытия операционная система выполняет необходимые действия покорректному завершению работы с файловым дескриптором, а если закрывается последнийоткрытый дескриптор — то корректное завершение работы с файлом: в частности, понеобходимости освобождаются системные ресурсы, в т.ч. разгрузка кэш-буферов файловыхобменов, и т.д.Структурно каждая операционная система предлагает унифицированный наборинтерфейсов, посредством которых можно обращаться к системным вызовам работы с файлами.Обычно этот набор содержит следующие основные функции:− open — открытые/создание файла;− close — закрытие;− read/write — читать/писать (относительно указателя чтения/записи соответственно);− delete — удалить файл из файловой системы;− seek — позиционирование указателя чтения/записи;− read_attributes/write_attributes — чтение/модификация некоторых атрибутов файла (вфайловых системах, рассматривающих имя файла не как атрибут, возможны дополнительнаяфункция переименования файла — rename).172Практически все файловые системы включают в свой состав некоторый специальныйкомпонент, посредством которого можно установить соответствие между именем файла и егоатрибутами.
Используя это соответствие, можно получить информацию о размещении данных вфайловой системе и организовать доступ к данным. И этим компонентом является каталог. Итак,каталог — это системная структура данных файловой системы, в которой находится информацияоб именах файлов, а также информация, обеспечивающая доступ к атрибутам и содержимомуфайла.Рассмотрим типовые модели организации каталогов (в соответствии с хронологическимпорядком их появления).Первой исторической моделью является одноуровневая файловая система (система содноуровневым каталогом).
В файловой системе данного типа (4.1.3) присутствуетединственный каталог, в котором перечислены всевозможные имена файлов, находящихся вданной системе. Этот каталог устроен простым способом: о каждом файле хранится информацияоб его имени, расположении первого блока и размере файла. Эта простота влечет за собой ипростоту доступа к информации файлов, но эта модель не предполагает многопользовательскойработы. В данном случае возможны коллизии имен (когда возникают попытки создания файлов содним именем). Данная модель в настоящее время используется в бытовой технике, котораявыполняет фиксированный набор действий.Каталог(корневой каталог)/NAME1NAME2NAME3…Рис.
93.Модель одноуровневой файловой системы.Следующей моделью является двухуровневая файловая система (4.1.3). Данная модельпредполагает работу нескольких пользователей: файловая система этого типа позволяетгруппировать файлы по принадлежности тому или иному пользователю. Эта модель лучшеодноуровневой (в частности, не возникают коллизии имен файлов разных пользователей), но и онаобладает недостатками: зачастую неудобно и даже нежелательно расположение всех файловодного пользователя в одном месте (в одном каталоге). В частности, остается проблема коллизииимен для файлов одного пользователя.Отметим, что двух-, трех- и вообще N-уровневые (N – фиксированное) модели остаютсяактуальными и по сей день. Объясняется это тем, что они, в первую очередь, достаточно простыпо своей структуре и организации работы с ними. Если мы посмотрим на простейший мобильныйтелефон, имеющий несколько уровней меню, в них обычно реализованы именно подобныефайловые системы.Корневой каталог/КаталогипользователейUSR1N11N21 … Nk1USR1N12N22 … Nl2Рис.
94.Модель двухуровневой файловой системы.173USR1…N1MN2M … NnMИ, наконец, последняя модель, которую мы рассмотрим, — иерархическая файловаясистема (4.1.3). Современные многопользовательские файловые системы основываются наиспользовании иерархических структур данных, в частности, на использовании деревьев.Вся информация в файловой системе представляется в виде дерева, имеющего корень. Этот.н. корневая файловая система. В узлах дерева, отличных от листьев, находятся каталоги,которые содержат информацию о размещенных в них файлах.
Иерархические файловые системыобычно имеют специальный тип файлов-каталогов. Т.е. каталог представляется не как отдельнаявыделенная структура данных, а как файл особого типа. Листом дерева может быть либо файлкаталог, либо любой файл файловой системы./AA…B…BC… F…D…BРис. 95.Модель иерархической файловой системы.Иерархическая (или древообразная) организация файловой системы предоставляетвозможность использования уникального именования файлов. Оно основывается на том, что вдереве существует единственный путь от корня до любого узла.
Приведенная схема именования(от корня до конкретного узла дерева) является принципиальной схемой именования файлов виерархических файловых системах. При этом обычно используются следующие характеристики.Текущий каталог — это каталог, на работу с которым в данный момент настроена файловаясистема. Текущим каталогом может стать любой каталог файловой системы, и обозреваниефайлов в файловой системе происходит относительно этого каталога. Файлы, находящиесянепосредственно в текущем каталоге доступны «просто» по имени.
Таким образом, имя файла —это имя файла, находящего в текущем каталоге, а полное имя файла — это перечень всех именфайлов от корня до узла с данным файлом. Признаком полного имени обычно являетсяприсутствие специального префиксного символа, обозначающего корневой каталог (например, вОС Unix в качестве корневого каталога выступает символ “/”).Иерархическая файловая система позволяет использовать т.н. относительные именафайлов — это путь от некоторого каталога до данного файла. Для данного способа именованиянеобходимо указать явно или неявно каталог, относительно которого строится это именование.Например, если существует файл с полным именем /A/B/F/D, то относительно каталога B файлбудет иметь имя C/D.
Чтобы использовать это относительное имя, необходимо либо явно задатькаталог B (по сути это означает задание полного имени), либо сделать каталог B текущим.Иерархические файловые системы обычно используют еще одну характеристику — т.н.домашний каталог.
Суть его заключается в том, что для каждого зарегистрированного в системепользователя (или для всех пользователей) задается полное имя каталога, который должен статьтекущим каталогом при входе пользователя в систему.1744.1.4Подходы в практической реализации файловой системыРассмотрим некоторые подходы в практической реализации файловой системы. Сновавернемся к понятию системного устройства — устройства, на котором, как считаетсяаппаратурой компьютера, должна присутствовать операционная система.
Почти в любомкомпьютере можно определить некоторую цепочку внешних устройств, которые при загрузкекомпьютера рассматриваться как системные устройства. В этой цепочке имеется определенныйприоритет. Во время старта вычислительная система (компьютер) перебирает данную цепочку впорядке убывания приоритета до тех пор, пока не обнаружит готовое к работе устройство.Система предполагает, что на этом устройстве имеется необходимая системная информация ипытается загрузить с него операционную систему.
Например, допустим, что компьютерсконфигурирован таким образом, что первым системным устройством является флоппи-дисковод,вторым — дисковод оптических дисков (CDROM), а третьим — жесткий диск. Мы поместили вофлоппи-дисковод дискету и включили компьютер. Аппаратный загрузчик обращается к первомусистемному устройству, поскольку в дисководе присутствует дискета, то считается, что дисководготов к работе.