Дочерний процесс - 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]
Дети, созданные спавном
Эта секция нуждается в расширении. Вы можете помочь добавляя к этому. (Февраль 2014) |
Конец жизни
Когда дочерний процесс завершается, некоторая информация возвращается родительскому процессу.
Когда дочерний процесс завершается до того, как родитель вызвал ждать, ядро сохраняет некоторую информацию о процессе, такую как его статус выхода, чтобы его родитель мог вызвать ждать потом.[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 или новее.
Рекомендации
- ^ Единая спецификация UNIX, Выпуск 7 из Открытая группа - Справочник по базовым определениям,
- ^ Linux Программиста Руководство - Системные вызовы : дождитесь изменения состояния процесса -
- ^ «Ядро Linux: сигналы». Win.tue.nl. Получено 2014-04-30.
- ^ [1] В архиве 29 сентября 2011 г. Wayback Machine
- ^ Linux Программиста Руководство - Системные вызовы : проверить и изменить сигнальное действие -
внешняя ссылка
- Linux Пользовательские команды Руководство : дерево процессов печати -