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

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



алгоритм создания новой вершины

входная информация:

 вершина (имя файла)

 тип файла

 права доступа

 старший, младший номера устройства (для блочных и символьных специальных файлов)

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

{

 if (новая вершина не является поименованным каналом и пользователь не является суперпользователем)

  return (ошибку);

 получить индекс вершины, являющейся родительской для новой вершины (алгоритм namei);

 if (новая вершина уже существует)  {

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

  return (ошибку);

 }

 назначить для новой вершины свободный индекс из файловой системы (алгоритм ialloc);

 создать новую запись в родительском каталоге;

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

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

 if (новая вершина является блочным или символьным специальным файлом)

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

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

}

Рисунок 5.13. Алгоритм создания новой вершины

Ядро просматривает файловую систему в поисках имени файла, который оно собирается создать. Если файл еще пока не существует, ядро назначает ему новый индекс на диске и записывает имя нового файла и номер индекса в родительский каталог. Оно устанавливает значение поля типа файла в индексе, указывая, что файл является каналом, каталогом или специальным файлом. Наконец, если файл является специальным файлом устройства блочного или символьного типа, ядро записывает в индекс старший и младший номера устройства. Если функция mknod создает каталог, он будет существовать по завершении выполнения функции, но его содержимое будет иметь неверный формат (в каталоге будут отсутствовать записи с именами «.» и «..»). В упражнении 5.33 рассматриваются шаги, необходимые для преобразования содержимого каталога в правильный формат.



5.9 СМЕНА ТЕКУЩЕГО И КОРНЕВОГО КАТАЛОГА



Когда система загружается впервые, нулевой процесс делает корневой каталог файловой системы текущим на время инициализации.

|< Пред. 167 168 169 170 171 След. >|

Java книги

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