Дочерний процесс - Child process

А дочерний процесс в вычислениях это процесс созданный другим процессом ( родительский процесс ). Этот метод относится к многозадачные операционные системы, и иногда его называют подпроцесс или традиционно подзадача.

Существует две основных процедуры создания дочернего процесса: системный вызов fork (предпочтительно в Unix-подобный системы и POSIX стандарт) и порождать (предпочтительно в современное (NT) ядро из Майкрософт Виндоус, а также в некоторых исторических операционных системах).

История

Дочерние процессы датируются концом 1960-х годов с ранней формой в более поздних версиях Мультипрограммирование с фиксированным количеством задач Версия II (MFT-II) форма IBM OS / 360 операционная система, которая представила подзадачи (видеть задача ). Текущая форма в Unix основана на Мультики (1969), а форма Windows NT основана на VAX / VMS, из RSX-11 (1972).

Дети, созданные вилкой

Дочерний процесс наследует большую часть своего атрибуты, Такие как файловые дескрипторы, от своего родителя. В Unix, дочерний процесс обычно создается как копия родительского с использованием вилка системный вызов. Затем дочерний процесс может перекрыть себя другой программой (используя exec) как требуется.

Каждый процесс может создавать множество дочерних процессов, но иметь не более одного родительского процесса; если у процесса нет родителя, это обычно означает, что он был создан непосредственно ядро. В некоторых системах, в том числе Linux -системы, самый первый процесс (называемый в этом ) запускается ядром в загрузка время и никогда не заканчивается (см. Процесс запуска Linux ); другие процессы без родительского контроля могут быть запущены для выполнения различных демон задачи в пространство пользователя. Другой способ остаться без родителя для процесса - это смерть его родителя, в результате чего сиротский процесс; но в этом случае он будет вскоре принят в этом.

SIGCHLD сигнал отправляется родительскому процессу дочернего процесса, когда он выходы, прерывается или возобновляется после прерывания. По умолчанию сигнал просто игнорируется.[1]

Дети, созданные спавном

Конец жизни

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

Когда дочерний процесс завершается до того, как родитель вызвал ждать, ядро ​​сохраняет некоторую информацию о процессе, такую ​​как его статус выхода, чтобы его родитель мог вызвать ждать потом.[2] Поскольку дочерний элемент все еще потребляет системные ресурсы, но не выполняет его, он известен как зомби процесс. В ждать системный вызов обычно вызывается в обработчике SIGCHLD.

POSIX.1-2001 позволяет родительскому процессу выбрать для ядра автоматическое получение дочерних процессов, которые завершаются путем явной установки для SIGCHLD значения SIG_IGN (хотя по умолчанию используется игнорирование, автоматическое получение происходит только в том случае, если для расположения задано явно игнорировать[3]), или установив флаг SA_NOCLDWAIT для сигнала SIGCHLD. Ядра Linux 2.6 придерживаются этого поведения, и FreeBSD поддерживает оба этих метода начиная с версии 5.0.[4] Однако из-за исторических различий между Система V и BSD поведения в отношении игнорирования SIGCHLD, вызова ждать остается наиболее переносимой парадигмой очистки после разветвленных дочерних процессов.[5]

Смотрите также

  • выход
  • pstree, чтобы UNIX могла найти дочерний процесс (pstree PID, где PID - это идентификатор процесса).

Примечания

Статья основана на материалах, взятых из Бесплатный онлайн-словарь по вычислительной технике до 1 ноября 2008 г. и зарегистрированы в соответствии с условиями «перелицензирования» GFDL, версия 1.3 или новее.

Рекомендации

  1. ^ signal.h - Справочник по базовым определениям, Единая спецификация UNIX, Выпуск 7 из Открытая группа
  2. ^ ждать (2): дождитесь изменения состояния процесса -Linux Программиста Руководство - Системные вызовы
  3. ^ «Ядро Linux: сигналы». Win.tue.nl. Получено 2014-04-30.
  4. ^ [1] В архиве 29 сентября 2011 г. Wayback Machine
  5. ^ sigaction (2): проверить и изменить сигнальное действие -Linux Программиста Руководство - Системные вызовы

внешняя ссылка