The design of the UNIX Operating System 81 страница



Помимо описанных методов поиска имени файла, в директории существуют и другие. В качестве приме-ра можно привести организацию поиска в каталогах файловой системы NTFS при помощи так называе-мого B-дерева, которое стало стандартным способом организации индексов в системах баз данных (см. [Ахо, 2001]).

 

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

 

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

 

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

 

Процедура монтирования состоит в следующем. Пользователь (в Unix это суперпользователь) сообщает ОС имя устройства и место в файловой структуре (имя пустого каталога), куда нужно присоединить фай-ловую систему (точка монтирования) (см. рис. 12.9 и рис. 12.10). Hапример, в ОС Unix библиотечный вызов mount имеет вид:

 

mount(special pathname,directory pathname,options);

 

где special pathname - имя специального файла устройства (в общем случае имя раздела), соответствую-щего дисковому разделу с монтируемой файловой системой, directory pathname - каталог в существую-щей иерархии, где будет монтироваться файловая система (другими словами, точка или место монтиро-вания), а options указывает, следует ли монтировать файловую систему "только для чтения" (при этом не будут выполняться такие функции, как write и create, которые производят запись в файловую систему).

 

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


Основы операционных систем 118

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

 

Рис. 12.9. Две файловые системы до монтирования

 

Рис. 12.10. Общая файловая система после монтирования

 

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

 

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


Дата добавления: 2021-01-21; просмотров: 141; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!