Архитектура операционной системы UNIX   ::   Бах Морис Дж.

Страница: 122 из 715



алгоритм namei /* превращение имени пути поиска в индекс */

входная информация: имя пути поиска

выходная информация: заблокированный индекс

{

 if (путь поиска берет начало с корня)  рабочий индекс = индексу корня (алгоритм iget);

 else  индекс = индексу текущего каталога (алгоритм iget);

 выполнить (пока путь поиска не кончился)  {

  считать следующую компоненту имени пути поиска;

  проверить соответствие рабочего индекса каталогу и права доступа;

  if (рабочий индекс соответствует корню и компонента имени «..») continue; /* цикл с условием продолжения */

  считать каталог (рабочий индекс), повторяя алгоритмы bmap, bread и brelse;

  if (компонента соответствует записи в каталоге (рабочем индексе)) {

   получить номер индекса для совпавшей компоненты;

   освободить рабочий индекс (алгоритм iput);

   рабочий индекс = индексу совпавшей компоненты (алгоритм iget);

  }

  else /* компонента отсутствует в каталоге */  return (нет индекса);

 }

 return (рабочий индекс);

}

Рисунок 4.11. Алгоритм превращения имени пути поиска в индекс

Алгоритм namei использует при анализе составного имени пути поиска промежуточные индексы; назовем их рабочими индексами. Индекс каталога, откуда поиск берет начало, является первым рабочим индексом. На каждой итерации цикла алгоритма ядро проверяет совпадение рабочего индекса с индексом каталога.

|< Пред. 120 121 122 123 124 След. >|

Java книги

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