Основы операционной системы UNIX



         

Создание процесса


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

Порожденный процесс наследует от родительского процесса следующие основные характеристики:

  • Способы обработки сигналов (адреса функций обработки сигналов).
  • Реальные и эффективные идентификаторы пользователя и группы.
  • Значение поправки приоритета.
  • Все присоединенные разделяемые сегменты памяти.
  • Идентификатор группы процессов.
  • Терминальную линию.
  • Текущий каталог.
  • Корневой каталог.
  • Маска создания файлов (umask).
  • Ограничения ресурсов (ulimit).
  • Порожденный процесс отличается от родительского процесса следующими основными характеристиками:

  • Порожденный процесс имеет свой уникальный идентификатор.
  • Порожденный процесс имеет другой идентификатор родительского процесса, равный идентификатору породившего процесса.
  • Порожденный процесс имеет свои собственные копии дескрипторов файлов (в частности, стандартных потоков), открытых родительским процессом. Каждый дескриптор файла порожденного процесса имеет первоначально такое же значение текущей позиции в файле, что и соответствующий родительский.
  • У порожденного процесса обнуляются счетчики времени, потраченного системой для его обслуживания.
  • Системный вызов fork завершается неудачей и новый процесс не порождается, если:

  • Создать процесс запрещает системное ограничение на общее количество процессов.
  • Создать процесс запрещает системное ограничение на количество процессов у одного пользователя.



  • Содержание  Назад  Вперед