Архитектура операционной системы UNIX :: Бах Морис Дж.
Страница:
170 из 715
Для индекса корневого каталога нулевой процесс выполняет алгоритм iget, сохраняет этот индекс в пространстве процесса в качестве индекса текущего каталога и снимает с индекса блокировку. Когда с помощью функции fork создается новый процесс, он наследует текущий каталог старого процесса в своем адресном пространстве, а ядро, соответственно, увеличивает значение счетчика ссылок в индексе.
алгоритм смены каталога
входная информация: имя нового каталога
выходная информация: отсутствует
{
получить индекс для каталога с новым именем (алгоритм namei);
if (индекс не является индексом каталога или же процессу не разрешен доступ к файлу) {
освободить индекс (алгоритм iput);
return (ошибку);
}
снять блокировку с индекса;
освободить индекс прежнего текущего каталога (алгоритм iput);
поместить новый индекс в позицию для текущего каталога в пространстве процесса;
}
Рисунок 5.14. Алгоритм смены текущего каталога
Алгоритм chdir (Рисунок 5.14) изменяет имя текущего каталога для процесса. Синтаксис вызова системной функции chdir:
chdir(pathname);
где pathname — каталог, который становится текущим для процесса. Ядро анализирует имя каталога, используя алгоритм namei, и проверяет, является ли данный файл каталогом и имеет ли владелец процесса право доступа к каталога.
|< Пред. 168 169 170 171 172 След. >|