Архитектура операционной системы UNIX :: Бах Морис Дж.
Страница:
203 из 715
алгоритм link
входная информация:
существующее имя файла
новое имя файла
выходная информация: отсутствует
{
получить индекс для существующего имени файла (алгоритм namei);
if (у файла слишком много связей или производится связывание каталога без разрешения суперпользователя) {
освободить индекс (алгоритм iput);
return (ошибку);
}
увеличить значение счетчика связей в индексе;
откорректировать дисковую копию индекса;
снять блокировку с индекса;
получить индекс родительского каталога для включения нового имени файла (алгоритм namei);
if (файл с новым именем уже существует или существующий файл и новый файл находятся в разных файловых системах) {
отменить корректировку, сделанную выше;
return (ошибку);
}
создать запись в родительском каталоге для файла с новым именем;
включить в нее новое имя и номер индекса существующего файла;
освободить индекс родительского каталога (алгоритм iput);
освободить индекс существующего файла (алгоритм iput);
}
Рисунок 5.29. Алгоритм связывания файлов
На Рисунке 5.29 показан алгоритм функции link. Сначала ядро, используя алгоритм namei, определяет местонахождение индекса исходного файла, увеличивает значение счетчика связей в индексе, корректирует дисковую копию индекса (для обеспечения согласованности) и снимает с индекса блокировку. Затем ядро ищет файл с новым именем; если он существует, функция link завершается неудачно и ядро восстанавливает прежнее значение счетчика связей, измененное ранее. В противном случае ядро находит в родительском каталоге свободную запись для файла с новым именем, записывает в нее новое имя и номер индекса исходного файла и освобождает индекс родительского каталога, используя алгоритм iput.
|< Пред. 201 202 203 204 205 След. >|