Телекоммуникационные технологии


Краткий справочник по командам UNIX - часть 10


При запуске программы командный интерпретатор порождает процесс, который наследует все 4 идентификатора и имеет те же права, что и shell.Так как в сеансе пользователя прародителем всех процессов является login shell, то их идентификаторы будут идентичны. При запуске программы сначала порождается новый процесс, а затем загружается программа.

Процесс порождается с помощью системного вызова fork:

#include <sys/types.h>

#include <unistd.h>

pid_t fork(void);

Порожденный процесс (дочерний) является точной копией родительского процесса. Дочерний процесс наследует следующие атрибуты:

  • идентификатор пользователя и группы
  • все указатели и дескрипторы файлов
  • диспозицию сигналов и их обработчики
  • текущий и корневой каталог
  • переменные окружения
  • маску файлов
  • ограничения, налагаемые на процесс
  • управляющий терминал

Конфигурация виртуальной памяти также сохраняется (те же сегменты программ, данных, стека и пр.). После завершения вызова fork оба процесса будут выполнять одну и ту же инструкцию. Отличаются эти процессы PID, PPID (идентификатор родительского процесса), дочерний процесс не имеет сигналов, ждущих доставки, отличаются и код, возвращаемый системным вызовом fork (родителю возвращается PID дочернего процесса, а дочернему - 0). Если код =0, то возврат осуществляется только в родительский процесс.

Для загрузки исполняемого файла используется вызов exec (аргумент - запускаемая программа). При этом существующий процесс замещается новым, соответствующим исполняемому файлу.

  • идентификаторы PID и PPID
  • все указатели и дескрипторы файлов, для которых не установлен флаг FD_CLOEXEC
  • идентификаторы пользователя и группы
  • текущий и корневой каталог
  • переменные окружения
  • маску файлов
  • ограничения, налагаемые на процесс
  • управляющий терминал

Процессы могут уведомлять друг друга о произошедших событиях с помощью сигналов, каждый из которых имеет символьное имя и номер. Сигнал может инициировать попытка деления на 0 или обращение по недопустимому адресу.

ОС UNIX создает иллюзию одновременного исполнения процессов, стараясь эффективно распределять между ними имеющиеся ресурсы.




Начало  Назад  Вперед



Книжный магазин