2011. Машбук (1114722), страница 57
Текст из файла (страница 57)
Непротиворечивость файловойсистемы соблюдена.Если же находится блок, о котором нет информации ни в таблице свободных, ни втаблице занятых блоков (т.е. в соответствующих ячейках стоят нули), то считается, чтоэтот блок потерян из списка свободных блоков (Рис. 115). Данная ситуация некатастрофическая, соответственно, не требует оперативного разрешения (т.е. может бытьотложенной): информацию о данном блоке система может внести в таблицу свободныхблоков спустя некоторое время.012345101011Таблица занятых блоков000100Таблица свободных блоковРис. 115.
Проверка целостности файловой системы. Зафиксирована пропажа блока.Если в ходе анализа блок получается свободным, но индекс свободности егобольше 1 (т.е. соответствующая ячейка таблицы свободных блоков хранит значение,большее 1), то считается, что нарушен список свободных блоков, и начинается процесспересоздания таблицы свободных блоков (Рис. 116).012345100011Таблица занятых блоков012100Таблица свободных блоковРис. 116.
Проверка целостности файловой системы. Зафиксировано дублированиесвободного блока.Если же возникает аналогичная ситуация, но уже для таблицы занятых блоков, тоэто означает, что данным файлом владеют несколько файлов, что является ошибкой(Рис. 117). Автоматически определить, какой из файлов ошибочно хранит ссылку на этот214блок, не представляется возможным: необходимо анализировать содержимое этих файлов.Для разрешения данной проблемы файловая система может предпринять следующиедействия. Пусть конфликтуют файлы с именами Name1 и Name2. Тогда файловая системасначала создает копии этих файлов (соответственно, с именами Name12 и Name22), затемудаляет файлы с исходными именами Name1 и Name2, запускает процесс переопределениясписка свободных блоков и, наконец, обратно переименовывает эти копии с фиксациейфакта их возможной некорректности.012345120011Таблица занятых блоков001100Таблица свободных блоковРис. 117.
Проверка целостности файловой системы. Зафиксировано дублированиезанятого блока.И, наконец, для проверки корректности файловой системы может выполнятьсяпроверка соответствия числа реального количества жестких связей тому значению,которое хранится среди атрибутов файла (Рис. 118). Если эти значения совпадают, тосчитается, что данный файл находится в корректном состоянии, иначе происходиткоррекция атрибута-счетчика жестких связей.Name1Name2…NameLАтрибуты файлаNameCount = MСодержимоефайлаif (NameCount != L) { NameCount = L; }Рис. 118. Проверка целостности файловой системы. Контроль жестких связей.4.2Примеры реализаций файловых системВ качестве примеров реализаций файловых систем рассмотрим файловые системы,реализованные в ОС Unix.
Выбор наш объясняется тем, что создатели ОС Unixизначально выбрали удачную архитектуру файловой системы, причем эту файловуюсистему нельзя рассматривать в отрыве от самой ОС: ОС Unix строится на понятии файлакак на одном из фундаментальных понятий (напомним, что вторым важным понятиемявляется понятие процесса). Необходимо заметить, что, как утверждают авторы системы,архитектура файловой системы была заимствована и развита из ОС Multix (файловуюсистему, которую скорее можно назвать экспериментальной, и, как следствие, она не быламассово распространена).В качестве одного из главных достоинств ОС Unix является то, что именно этасистема стала одной из первых систем, в которой была реализована иерархическаяфайловая система. Сама же операционная система строится на понятиях процесса и файла,т.е.
все то, с чем мы работаем, является файлом, а это, в свою очередь, означает, что всистеме реализованы унифицированные интерфейсы доступа и организации информации.Еще одно важное достоинство, которое необходимо отметить у ОС Unix, — это то,что она стала одной из первых операционных систем, открытых для расширения наборакоманд системы. До ее создания практически все команды, которые были доступныпользователю, представлялись в виде набора жестких правил общения человека с215системой (сравнимые с современными интерпретаторами команд); модифицировать этотнабор правил не представлялось возможным.
Если же требовалось внести коррективы всуществующие команды, то необходимо было обратиться к разработчику операционнойсистемы, и тот, по сути, создавал новую систему. В ОС Unix все исполняемые командыпринадлежат одной из двух групп: команды, встроенные в интерпретатор команд(например, pwd, cd и т.д.), и команды, реализация которых представляется в видеисполняемых файлов, расположенных в одном из каталогов файловой системы (это либоисполняемый бинарный файл, либо текстовый файл с командами для исполненияинтерпретатором команд). Данный подход означает, что, варьируя правами доступа кфайлам, уничтожая при необходимости или добавляя новые исполняемые файлы,пользователь способен самостоятельно выстраивать функциональное окружение,необходимое для решения своих задач.Еще одним достоинством этой операционной системы является элегантнаяорганизация идентификации доступа и прав доступа к файлам (об этом речь пойдет ниже).Так или иначе, но обозначенные фундаментальные концепции лежат в основесовременных операционных систем семейства Unix до сих пор.4.2.1 Организация файловой системы ОС Unix.
Виды файлов. ПравадоступаФайл ОС Unix — это специальным образом именованный набор данных,размещенных в файловой системе. Файлы ОС Unix могут быть разных типов:обычный файл (regular file) — это те файлы, с которыми регулярно имеет делопользователь в своей повседневной работе (например, текстовый файл, исполняемыйфайл и т.п.);каталог (directory) — файл данного типа содержит имена и ссылки на атрибуты,которые содержатся в данном каталоге;специальный файл устройств (special device file) — как отмечалось выше, каждомуустройству, с которым работает ОС Unix, должен быть поставлен в соответствие файлданного типа. Через имя файла устройства происходит обращение к устройству, ачерез содержимое данного файла (которое достаточно специфично) можно обратитьсяк конкретному драйверу этого устройства;именованный канал, или FIFO-файл (named pipe, FIFO file) — о файлах этого типашла речь выше при обсуждении базовых средств организации взаимодействияпроцессов в ОС Unix (см.
0);файл-ссылка, или символическая связь (link) — файлы данного типарассматривались выше при изучении вопросов соответствия имени файла и егосодержимого (см. 4.1.7);сокет (socket) — файлы данного типа используются для реализацииунифицированного интерфейса программирования распределенных систем (см. 3.3).Так или иначе, но с файлом каждого из указанных типов возможно осуществлять работу(в той или иной степени) посредством стандартных интерфейсов работы с файлами. Скаждым файлом также ассоциированы такие характеристики, как права доступа к файлу,которые регламентируют чтение содержимого файла, запись и исполнение файла.Подобная интерпретация прав доступа свойственна регулярным файлам, для других типовфайлов интерпретация прав доступа отличается (например, для файлов-каталогов).Права на доступ к файлу разделяются на три категории пользователей — это правапользователя-владельца файла, права группы, к которой принадлежит владелец файла,исключая этого владельца, и, наконец, права всех остальных пользователей системы (безуказанной группы владельца).
Соответственно, для каждой из категорий определяютсявышеперечисленные права доступа.2164.2.2 Логическая структура каталоговОдной из характеристик ОС Unix является характеристика, кажущаяся на первыйвзгляд достаточно странной: система рекомендует размещать системную ипользовательскую информацию по некоторым правилам.
Вообще говоря, эти правиланежесткие, их можно нарушать, но обычно, следуя им, пользователь системы получаетдополнительное удобство.Прежде всего, необходимо отметить, что файловая система ОС Unix являетсяиерархической древовидной файловой системой (Рис. 119), т.е. у нее есть корневойкаталог /, из которого за счет каталогов разных уровней вложенности «вырастает» целоедерево имен файлов./unixbinetctmpmntdevusrlibincludesys…binusersys…Рис. 119. Логическая структура каталогов.Система предполагает, что в корневом каталоге всегда расположен некоторыйфайл, в котором размещается код ядра операционной системы.
Сразу оговоримся, что мырассматриваем некоторую модельную систему: в действительности файл с кодом ядра иупоминаемые в будущем каталоги могут иметь иное расположение в системе и другиеимена. Вообще говоря, в корневом каталоге можно размещать любые файлы (с учетомправ доступа), но система предполагает наличие совокупности каталогов спредопределенными именами. Рассмотрим основные каталоги системы.В каталоге /bin находятся команды общего пользования (точнее говоря,исполняемые файлы, реализующие указанные команды).Каталог /etc содержит системные таблицы и команды, обеспечивающие работу сэтими таблицами. В частности, в этом каталоге хранится таблица (файл) passwd,содержащую информацию о зарегистрированных в системе пользователях.Каталог /tmp является каталогом временных файлов, т.е.