- Сиротский процесс — Orphan process
- Unix-подобный
- Смотрите также
- Рекомендации
- Процесс-сирота
- См. также
- Полезное
- Смотреть что такое «Процесс-сирота» в других словарях:
- Процесс зомби против сиротского процесса
- Ответы — Процесс зомби против сиротского процесса / Zombie process vs Orphan process
- Русские Блоги
- [Linux] Daemon: сирота, полная позитивной энергии
- предисловие
- Основные характеристики демона
- Правила создания демона
- Две вилки демона
- Интеллектуальная рекомендация
- Используйте Maven для создания собственного архетипа скелета проекта (4)
- Станция интерпретации больших данных B пользуется популярностью среди гигантов района «призрачные животные» Цай Сюкуня.
- Вопрос A: Алгоритм 7-15: алгоритм кратчайшего пути Дейкстры
- Учебный дневник — перелистывание страниц
- Нулевое основание для отдыха-клиента
- Вам также может понравиться
- Подробно объясните, как новички используют sqlmap для выполнения инъекционных атак на базы данных mysql.
- Vue заметки сортируют, пусть вам начать с Vue.js:. 04_3 Сетевое приложение: AXIOS плюс Вью
- Шаблон алгоритма конной повозки
- 35 Line Code, чтобы получить метод исследования событий (ON)
- Образ докера: gitlab
Сиротский процесс — Orphan process
Процесс сироты представляет собой компьютерный процесс , чей процесс родителя закончил или прекращено , хотя он по- прежнему работает на себя.
Unix-подобный
В Unix-подобной операционной системе любой потерянный процесс будет немедленно принят специальным системным процессом init : ядро устанавливает для родительского элемента значение init. Эта операция называется повторным родителем и происходит автоматически. Даже несмотря на то, что технически процесс имеет процесс «init» в качестве своего родителя, он по-прежнему называется сиротским процессом, поскольку процесс, который его изначально создал, больше не существует. В других системах осиротевшие процессы немедленно завершаются ядром. В современных системах Linux сиротский процесс может быть преобразован в процесс «subreaper» вместо init .
Процесс может быть потерян непреднамеренно, например, когда родительский процесс завершается или выходит из строя. Механизм группы процессов в большинстве Unix-подобных операционных систем может использоваться для защиты от случайного отключения, когда в координации с оболочкой пользователя будут пытаться завершить все дочерние процессы с помощью сигнала «зависания» ( SIGHUP ), вместо того, чтобы позволить им продолжают бежать как сироты. Точнее, как часть управления заданиями , когда оболочка завершает работу, поскольку она является «лидером сеанса» (его идентификатор сеанса равен идентификатору процесса), соответствующий сеанс входа в систему завершается, и оболочка отправляет SIGHUP всем своим заданиям (внутреннее представление технологических групп).
Иногда желательно намеренно осиротить процесс, обычно для того, чтобы позволить долго выполняющемуся заданию завершиться без дополнительного внимания пользователя или запустить бессрочно работающую службу или агент; такие процессы (без ассоциированного сеанса) называются демонами , особенно если они выполняются бесконечно. Низкоуровневый подход состоит в том, чтобы дважды выполнить ветвление , запустить требуемый процесс в внуке и немедленно завершить дочерний процесс. Теперь внучатый процесс осиротел и принимается не его дедушкой или дедушкой, а скорее процессом init. Альтернативы более высокого уровня обходят обработку зависания оболочки, либо сообщая дочернему процессу игнорировать SIGHUP (с помощью nohup ), либо удаляя задание из таблицы заданий, либо сообщая оболочке не отправлять SIGHUP в конце сеанса (с помощью disown в любом случае ). В любом случае идентификатор сеанса (идентификатор процесса лидера сеанса, оболочки) не изменяется, а идентификатор процесса завершившегося сеанса все еще используется до тех пор, пока все осиротевшие процессы не завершатся или не изменят идентификатор сеанса (путем запуска новый сеанс через setsid(2) ).
Чтобы упростить системное администрирование, часто желательно использовать оболочку службы, чтобы процессы, не предназначенные для использования в качестве служб, правильно реагировали на системные сигналы. Альтернативой продолжению работы процессов без их осиротения является использование терминального мультиплексора и запуск процессов в отсоединенном сеансе (или сеансе, который отключается), чтобы сеанс не завершался и процесс не оставался сиротским.
Серверный процесс также называется осиротевшим, когда клиент, инициировавший запрос, неожиданно завершает работу после выполнения запроса, оставляя серверный процесс запущенным.
Эти потерянные процессы тратят ресурсы сервера и потенциально могут привести к нехватке ресурсов на сервере. Однако есть несколько решений проблемы сиротского процесса:
- Прекращение приема — наиболее часто используемый метод; в этом случае сироту убивают.
- Реинкарнация — это метод, при котором машины периодически пытаются найти родителей любых удаленных вычислений; в этот момент осиротевшие процессы уничтожаются.
- Истечение срока — это метод, при котором каждому процессу дается определенное время для завершения, прежде чем он будет убит. При необходимости процесс может «попросить» больше времени для завершения до истечения отведенного времени.
Смотрите также
Рекомендации
- « 10.6.4 Осиротевшие группы процессов », Модель процесса разработки приложений Linux , Эрик В. Троан и Майкл К. Джонсон, 8 июля 2005 г.
Определение: потерянный процесс — это запущенный процесс, родительский процесс которого завершен или завершен.
Источник
Процесс-сирота
Процесс-сирота (англ. orphan process ) — в семействе операционных систем UNIX вспомогательный процесс, чей основной процесс (или связь с ним) был завершен нештатно (не подав сигнала на завершение работы).
Обычно, «сиротой» остается дочерний процесс после неожиданного завершения родительского, но возможно возникновение сервера-сироты (локального или сетевого) при неожиданном прерывании связи или завершении клиентского процесса.
Процессы-сироты расходуют системные ресурсы сервера и могут быть источником проблем. Существует несколько их решений:
- Уничтожение (англ.extermination ) — наиболее часто используется, заключается в немедленном завершении процесса (см. SIGKILL)
- Перевоплощение (англ.reincarnation ) — система пытается «воскресить» родителей в состоянии на момент перед их удалением или найти других (например, более старших) родителей.
- Выдача лимита времени (англ.expiration ) — процессу выдаётся временная квота для завершения до момента, когда он будет «убит» принудительно. Отметим, что процессу оставлена возможность запросить дополнительное время для завершения.
В Unix-подобных системах все процессы-сироты немедленно усыновляются специальным системным процессом «init». Эта операция ещё называется (англ. re-parenting ) и происходит автоматически. Хотя технически процесс «init» признаётся родителем этого процесса, его всё равно считают «осиротевшим», поскольку первоначально создавший его процесс более не существует.
См. также
- Найти и оформить в виде сносок ссылки на авторитетные источники, подтверждающие написанное.
Wikimedia Foundation . 2010 .
Полезное
Смотреть что такое «Процесс-сирота» в других словарях:
Процесс-зомби — Процесс зомби, зомби (англ. zombie process, англ. defunct process) дочерний процесс в Unix системе, завершивший своё выполнение, но ещё присутствующий в списке процессов операционной системы, чтобы дать родительскому процессу… … Википедия
Зомби-процесс — Процесс зомби, зомби (англ. zombie process, англ. defunct process) дочерний процесс в Unix системе, завершивший своё выполнение, но еще присутствующий в списке процессов операционной системы, чтобы дать родительскому процессу считать код… … Википедия
Планета-сирота — Необходимо проверить качество перевода и привести статью в соответствие со стилистическими правилами Википедии. Вы можете помочь улучшить эту статью, исправив в ней ошибки … Википедия
Zombie — Процесс зомби, зомби (англ. zombie process, англ. defunct process) дочерний процесс в Unix системе, завершивший своё выполнение, но еще присутствующий в списке процессов операционной системы, чтобы дать родительскому процессу считать код… … Википедия
Узбекская Советская Социалистическая Республика — (Узбекистон Совет Социалистик Республикаси) Узбекистан. I. Общие сведения Узбекская ССР образована 27 октября 1924. Расположена в центральной и северной частях Средней Азии. Граничит на С. и С. З. с Казахской ССР, на Ю.… … Большая советская энциклопедия
Планета — У этого термина существуют и другие значения, см. Планета (значения) … Википедия
Белорусская Советская Социалистическая Республика — (Беларуская Савецкая Сацыялicтычная Рэспублiкa) Белоруссия (Беларусь). I. Общие сведения БССР образована 1 января 1919. С созданием Союза ССР 30 декабря 1922 вошла в его состав как союзная республика. Граничит на З. с… … Большая советская энциклопедия
Русская литература — I.ВВЕДЕНИЕ II.РУССКАЯ УСТНАЯ ПОЭЗИЯ А.Периодизация истории устной поэзии Б.Развитие старинной устной поэзии 1.Древнейшие истоки устной поэзии. Устнопоэтическое творчество древней Руси с X до середины XVIв. 2.Устная поэзия с середины XVI до конца… … Литературная энциклопедия
СССР. Литература и искусство — Литература Многонациональная советская литература представляет собой качественно новый этап развития литературы. Как определённое художественное целое, объединённое единой социально идеологической направленностью, общностью… … Большая советская энциклопедия
Драма — Д. как поэтический род Происхождение Д. Восточная Д. Античная Д. Средневековая Д. Д. Ренессанса От Возрождения к классицизму Елизаветинская Д. Испанская Д. Классическая Д. Буржуазная Д. Ро … Литературная энциклопедия
Источник
Процесс зомби против сиротского процесса
Зомби создается, когда родительский процесс не использует системный вызов wait после смерти ребенка, чтобы прочитать его состояние выхода, а сирота-это дочерний процесс, который восстанавливается init, когда исходный родительский процесс завершается раньше дочернего.
С точки зрения управления памятью и таблицей процессов, как эти процессы обрабатываются по-разному, особенно в UNIX?
Каков пример или крайний случай, когда создание зомби или сирот может нанести ущерб большому приложению или системе?
Ответы — Процесс зомби против сиротского процесса / Zombie process vs Orphan process
Нет никаких сирот, кроме процесса, использующего PID 1.
С точки зрения запущенного процесса не имеет значения, был ли он запущен непосредственно и, следовательно, имеет PID 1 в качестве родителя или унаследован PID 1, потому что его исходный родитель (отличающийся от PID 1) закончился. Он обрабатывается, как и любой другой процесс.
Каждый процесс проходит через своего рода зомби-состояние, когда он заканчивается, а именно фазу между объявлением о его завершении путем выпуска SIGCHLD и признанием его обработки (доставки или незнания).
Когда состояние зомби было введено, процесс — это просто запись в списке процессов системы.
Единственным значимым ресурсом зомби исключительно с помощью является допустимым идентификатором.
Когда дочерний процесс завершает работу, какой-то процесс должен wait его, чтобы получить код завершения. Этот код выхода хранится в таблице процессов до тех пор, пока это не произойдет. Акт чтения этого кода выхода называется «пожатием» ребенка. Между тем, как ребенок выходит и пожинается, его называют зомби. (Вся эта номенклатура выглядит немного отвратительно, когда вы думаете об этом; я рекомендую не думать об этом слишком много.)
Зомби занимают только место в таблице процессов. Они не берут ни памяти, ни процессора. Однако таблица процессов-это конечный ресурс, и избыточные зомби могут заполнить ее, а это означает, что никакие другие процессы не могут запуститься. Кроме того, они представляют собой надоедливый беспорядок, и их следует всячески избегать.
Если процесс завершается с детьми, которые все еще работают (и не убивают своих детей; метафора продолжает быть странной), эти дети-сироты. Дети-сироты немедленно «усыновляются» init (на самом деле, я думаю, что большинство людей называют это «перевоспитанием», но «усыновление», кажется, лучше переносит метафору). Сирота-это просто процесс. Он будет использовать любые ресурсы, которые он использует. Разумно сказать, что это вовсе не «сирота», поскольку у него есть родитель, но я часто слышал, как их так называют.
init автоматически пожинает своих детей (усыновленных или нет). Так что если вы выйдете, не убрав своих детей, то они не станут Зомби (по крайней мере, не более чем на мгновение).
Но долгоживущие зомби существуют. Что это такое? Они-бывшие дети существующего процесса, который не пожинал их. Процесс может быть приостановлен. Или же она плохо написана и забывает пожинать плоды своих детей. Или, может быть, он перегружен и до него еще не дошло. Или еще что-нибудь. Но по какой-то причине родительский процесс продолжает существовать (так что они не сироты), и их никто не обслуживал, поэтому они живут как зомби в таблице процессов.
Так что если вы видите зомби дольше, чем на мгновение, то это означает, что с родительским процессом что-то не так, и что-то нужно сделать, чтобы улучшить эту программу.
Когда процесс завершается, его ресурсы освобождаются операционной системой. система. Однако его запись в таблице процессов должна оставаться там до тех пор, пока Родительский вызов wait (), так как таблица process содержит статус завершения процесса. Процесс, который завершился, но чей родитель еще не вызвал wait (), является известный как процесс зомби . Все процессы переходят в это состояние, когда они кончаются, но в целом они существуют как зомби лишь недолго. Однажды родитель вызывает wait (), идентификатор процесса зомби-процесса и его запись в поле таблица процессов освобождается.
Теперь рассмотрим, что произойдет, если родитель не вызовет wait () и вместо этого прекращается, тем самым оставляя свои дочерние процессы сиротами . Линукс и UNIX решает этот сценарий, назначая процесс init в качестве нового родителя для бесхозных процессов. Процесс init периодически вызывает wait(), что позволяет статус выходе все потерянные процесса собрал и выпустил идентификатор процесса сироты и запись таблицы процессов.
Источник: концепции операционных систем Авраама, Питера, Грега
Источник
Русские Блоги
[Linux] Daemon: сирота, полная позитивной энергии
предисловие
После процесса зомби и сирот, мы наконец-то открыли процесс, полный позитивной энергии, но, к сожалению, это все еще процесс сирот. Но процесс демона очень универсален: большинство серверов Linux реализованы с помощью процессов демона, таких как inetd интернет-сервера, httpd веб-сервера и т. Д.
Основные характеристики демона
Демон также называется Эльфийский процесс (Daemon) — это специальный процесс, работающий в фоновом режиме. Он не зависит от терминала управления и периодически выполняет определенные задачи или ожидает определенных событий.
При запуске системы Linux запускаются многие процессы системных служб, которые не имеют управляющего терминала и не могут напрямую взаимодействовать с пользователями. Эти процессы системной службы не зависят от входа и выхода пользователя из системы. Они всегда работают. Эти процессы системной службы являются процессами демона.
Давайте проверим демон системы (CentOS) с помощью команды терминала:
ps axj | grep -E «d$»
Интерпретация вышеуказанной команды:
①ps: указывает на мониторинг и контроль процесса.
AПараметр a: означает список не только процессов текущего пользователя, но и всех процессов других пользователей.
XПараметр x: указывает не только процесс управления терминалом, но и процесс всех терминалов без контроля.
JПараметр j: список информации, связанной с управлением заданиями.
Repgrep -E «d $»: указывает на рекурсивное сопоставление информации, заканчивающейся символом d.
Как видно из результатов мониторинга и проверки на приведенном выше рисунке, все вышеперечисленные процессы являются процессами-демонами и имеют следующие характеристики:
Кроме того, имя, заключенное в [] в столбце команды, указывает Нить ядра Эти потоки создаются в ядре, там нет кода пользовательского пространства, поэтому Нет имени файла программы и командной строки , Обычно используя k Имя в начале означает Kernal. udevd отвечает за поддержку файлов устройств в каталоге / dev ; acpid отвечает за управление питанием ; syslogd отвечает за ведение файлов журналов в / var / log.
Правила создания демона
При написании программы-демона вы должны следовать некоторым основным правилам, чтобы предотвратить нежелательные взаимодействия. Создать правило Следующим образом:
Call Сначала вызовите umask, чтобы установить для слова (маски) создания режима файла значение 0.
Причина в том, что создание маскирующего слова из режима унаследованных файлов может отказать в установке определенных разрешений. Например, демон создает читаемый и записываемый файл, а унаследованный файловый режим создает защитное слово, которое может защищать разрешение на запись, что приводит к отсутствию функциональности.
⑵ Вызовите fork (), а затем заставьте родительский процесс завершиться (выйти).
Причина в следующем: во-первых, если демон запускается как простая команда оболочки, то родительский процесс завершается, чтобы заставить оболочку думать, что команда была выполнена. Во-вторых, дочерний процесс наследует идентификатор группы процессов родительского процесса, но имеет новый идентификатор процесса, гарантируя, что дочерний процесс не является лидером группы процессов (причина будет указана ниже).
** ⑶ Вызовите setsid, чтобы создать новый сеанс и стать лидером сеанса. ** Его прототип выглядит следующим образом:
#include
pid_t setsid(void);
Возвращаемое значение: успешный вызов возвращает идентификатор вновь созданного сеанса (идентификатор текущего процесса) или -1 при ошибке.
Примечание. Перед вызовом функции setsid текущему процессу не разрешено быть лидером группы процессов, в противном случае он возвращает -1.
Результат успешного вызова этой функции выглядит следующим образом:
① Создать новый сеанс. Текущий процесс становится лидером сеанса, а текущий идентификатор процесса является идентификатором сеанса.
② Создайте новую группу процессов. Текущий процесс становится лидером группы процессов, а текущий идентификатор процесса является идентификатором группы процессов.
③ Если текущий процесс изначально имел терминал управления, он теряет терминал управления и становится процессом без терминала управления. (Так называемый потерянный управляющий терминал означает, что исходный управляющий терминал все еще открыт и все еще может читать и записывать, но это просто обычный открытый файл вместо управляющего терминала).
⑷ Измените текущий рабочий каталог на корневой каталог. Используйте chdir для изменения текущего рабочего каталога.
Причина в том, что текущий рабочий каталог, унаследованный от текущего родительского процесса, может находиться в файловой системе сборки, поскольку процесс демона обычно существует до перезагрузки системы. Если текущий каталог процесса демона находится в файловой системе сборки, то файл Система не может быть удалена.
⑸ Закройте файловые дескрипторы, которые больше не нужны.
Причина в том, что процесс-демон больше не может содержать определенные файловые дескрипторы, унаследованные от его родительского процесса.
⑹ Другое: игнорировать сигнал SIGCHLD. Когда дочерний процесс завершается, он больше не отправляет сигнал SIGCHLD родительскому процессу.
Ниже мы следуем приведенным выше правилам для создания процесса демона, тестовый код выглядит следующим образом:
Результат соответствует нашим ожиданиям, pid родительского процесса демона равен 1,Автономная группа процессов, автономный сеанс и не имеет ничего общего с управляющим терминалом.
Мы также можем проверить соответствующую информацию в каталоге cd / proc по номеру процесса daemon:
В каталоге / proc содержится много информации о файловой системе, например информация о процессоре (cpuinfo), информация о памяти (meminfo), информация о диске (diskstats) и т. д.
Наш Linux также предоставляет стандартный демон функций для создания процесса демона, его прототип выглядит следующим образом:
#include
int daemon(int nochdir,int noclose);
Параметр nochdir: 0 означает, что текущий рабочий каталог становится корневым, иначе он не изменится.
Параметр noclose: 0 означает, что стандартный ввод, вывод и вывод ошибок перенаправляются в / dev / null. Это черная дыра в Linux. Записанная информация будет отброшена ядром и никогда не будет удовлетворена.
Возвращаемое значение: вернуть 0 при успехе, -1 при ошибке и установить errno.
Ниже мы устанавливаем оба параметра в 0 и наблюдаем эффект:
Две вилки демона
В некоторых открытых источниках по-прежнему используется один форк. Конечно, по соображениям безопасности два форка. Прежде чем начать тему, мы сначала смоделируем два форка и объясним, почему мы должны форкнуть в два раза больше, наблюдая за результатами.
Основное отличие от результатов состоит в том, что pid процесса отличается от gid и sid, что указывает на то, что демон принадлежит сеансу и принадлежит группе процессов. Теория отдельного разговора и группы процессов отделена от форка. Так какова цель этого?
Первая вилка Мы создаем дочерний процесс, называемый независимым сеансом, называемый потерянным процессом, принятый init, а затем отсоединенный от терминала управления.
Вторая вилка : Текущий подпроцесс уже был назван лидером сеанса. Вы можете открыть управляющий терминал. Когда мы снова разветвляемся, идентификатор подпроцесса и sid больше не совпадают, то есть они больше не являются лидерами группы диалога, поэтому они не могут открыть новый Терминал управления (Предпосылка открытия терминала управления заключается в том, что процесс должен быть лидером сеанса)。
Интеллектуальная рекомендация
Используйте Maven для создания собственного архетипа скелета проекта (4)
Один, базовое введение в Maven Во-вторых, скачайте и настройте Maven Три, настроить домашнее зеркало на Али В-четвертых, создайте содержимое скелета архетипа В-пятых, создайте проект через архетип 6. .
Станция интерпретации больших данных B пользуется популярностью среди гигантов района «призрачные животные» Цай Сюкуня.
Автор | Сюй Линь Ответственный редактор | Ху Вэйвэй Предисловие Недавно Цай Сюкунь отправил письмо юриста на станцию B. Содержание письма юриста показало, что «на станции B имеется большое кол.
Вопрос A: Алгоритм 7-15: алгоритм кратчайшего пути Дейкстры
Название Описание Во взвешенном ориентированном графе G для исходной точки v задача о кратчайшем пути от v до оставшихся вершин в G называется задачей кратчайшего пути с одной исходной точкой. Среди ш.
Учебный дневник — перелистывание страниц
Используйте плагин Layui.
Нулевое основание для отдыха-клиента
Предисловие: статья, обобщенная, когда я только что связался с тестом API, в дополнение к остальному клиенту этот инструмент сам, некоторые из мелких пониманий API, я надеюсь помочь тому же белую белу.
Вам также может понравиться
Подробно объясните, как новички используют sqlmap для выполнения инъекционных атак на базы данных mysql.
Шаг 1. Откройте для себя инъекцию Со мной все было нормально, когда я был свободен, я случайно нажал на чужой блог и обнаружил, что ссылка заканчивается на id, поэтому я проверил его вручную. Результа.
Vue заметки сортируют, пусть вам начать с Vue.js:. 04_3 Сетевое приложение: AXIOS плюс Вью
В предыдущем разделе мы ввели основное использование AXIOS, по сравнению с нативным Ajax, который при условии, что способ является более простым и, а сетевые данные теперь в состоянии получить его ров.
Шаблон алгоритма конной повозки
Блог гангстеров Тележки, запряженные лошадьми, используются для решения проблемы самой длинной подстроки палиндрома. Основное внимание уделяется подстрокам, а не подпоследовательностям. Если вы хотите.
35 Line Code, чтобы получить метод исследования событий (ON)
Об авторе: Чжу Сяою,Личный публичный номер: языковой класс большой кошки Эта проблема научит вас этой большой классе Cat.Как написать наиболее эффективное метод исследования событий с 35 Line R Code C.
Образ докера: gitlab
GitLab Docker images Both GitLab CE and EE are in Docker Hub: GitLab CE Docker image GitLab EE Docker image The GitLab Docker images are monolithic images of GitLab running all the necessary services .
Источник