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

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

Она похожа на версию алгоритма, приведенную на Рисунке 4.11. Однако, после обнаружения в каталоге номера индекса для данной компоненты пути поиска ядро проверяет, не указывает ли номер индекса на то, что это корневой индекс файловой системы. Если это так и если текущий рабочий индекс так же является корневым, а компонента пути поиска, в свою очередь, имеет имя «..», ядро идентифицирует индекс как точку монтирования. Оно находит в таблице монтирования запись, номер устройства в которой совпадает с номером устройства для последнего из найденных индексов, получает индекс для каталога, в котором производится монтирование, и продолжает поиск компоненты с именем «..», используя только что полученный индекс в качестве рабочего. В корне файловой системы, тем не менее, корневым каталогом является «..»

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

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

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

{

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

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

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

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

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

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

поиск компоненты:

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

|< Пред. 194 195 196 197 198 След. >|

Java книги

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