Архитектура операционной системы 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 След. >|

Java книги

Контакты: [email protected]