Архитектура операционной системы UNIX :: Бах Морис Дж.
Страница:
190 из 715
алгоритм mount
входная информация:
имя блочного специального файла
имя каталога точки монтирования
опции («только для чтения»)
выходная информация: отсутствует
{
if (пользователь не является суперпользователем) return (ошибку);
получить индекс для блочного специального файла (алгоритм namei);
проверить допустимость значений параметров;
получить индекс для имени каталога, где производится монтирование (алгоритм namei);
if (индекс не является индексом каталога или счетчик ссылок имеет значение › 1) {
освободить индексы (алгоритм iput);
return (ошибку);
}
найти свободное место в таблице монтирования;
запустить процедуру открытия блочного устройства для данного драйвера;
получить свободный буфер из буферного кеша;
считать суперблок в свободный буфер;
проинициализировать поля суперблока;
получить корневой индекс монтируемой системы (алгоритм iget), сохранить его в таблице монтирования;
сделать пометку в индексе каталога о том, что каталог является точкой монтирования;
освободить индекс специального файла (алгоритм iput);
снять блокировку с индекса каталога точки монтирования;
}
Рисунок 5.23. Алгоритм монтирования файловой системы
На Рисунке 5.23 показан алгоритм монтирования файловой системы. Ядро позволяет монтировать и демонтировать файловые системы только тем процессам, владельцем которых является суперпользователь. Предоставление возможности выполнять функции mount и umount всем пользователям привело бы к внесению с их стороны хаоса в работу файловой системы, как умышленному, так и явившемуся результатом неосторожности. Суперпользователи могут разрушить систему только случайно.
|< Пред. 188 189 190 191 192 След. >|