Архитектура операционной системы UNIX :: Бах Морис Дж.
Страница:
209 из 715
")
увеличить значение счетчика ссылок в индексе;
else получить индекс для файла с удаляемой связью (алгоритм iget);
if (файл является каталогом, но пользователь не является суперпользователем) {
освободить индексы (алгоритм iput);
return (ошибку);
}
if (файл имеет разделяемый текст и текущее значение счетчика связей равно 1)
удалить записи из таблицы областей;
в родительском каталоге:
обнулить номер индекса для удаляемой связи;
освободить индекс родительского каталога (алгоритм iput);
уменьшить число связей файла;
освободить индекс файла (алгоритм iput);
/* iput проверяет, равно ли число связей 0, если да, освобождает блоки файла (алгоритм free) и освобождает индекс (алгоритм ifree); */
}
Рисунок 5.31. Алгоритм удаления связи файла с каталогом
5.16.1 Целостность файловой системы
Ядро посылает свои записи на диск для того, чтобы свести к минимуму опасность искажения файловой системы в случае системного сбоя. Например, когда ядро удаляет имя файла из родительского каталога, оно синхронно переписывает каталог на диск — перед тем, как уничтожить содержимое файла и освободить его индекс. Если система дала сбой до того, как произошло удаление содержимого файла, ущерб файловой системе будет нанесен минимальный: один из индексов будет иметь число связей, на 1 превышающее число записей в каталоге, которые ссылаются на этот индекс, но все остальные имена путей поиска файла останутся допустимыми.
|< Пред. 207 208 209 210 211 След. >|