2016-11-02 5 views
1

Состояние зомби необходимо для случая, когда завершился дочерний процесс, и в состоянии зомби его значение выхода сохраняется до тех пор, пока его родительский процесс не вызовет wait().Действительно ли процесс состояния зомби необходим в Linux?

Но почему бы не сохранить это значение выхода в дескрипторе родительского процесса, когда ребенок выйдет и немедленно освободит ресурсы ребенка целиком?

Скажем, например, мы добавляем в дескриптор процесса стек значений выхода своих дочерних элементов.

ответ

2

Ключ с вилкой -> модель ожидания - это не то, что вы можете получить статус выхода (и некоторую другую информацию), но pid процесса будет использоваться до тех пор, пока вы не дождитесь его. Это означает, что вы можете быть уверены, что никто другой не будет внезапно развиваться и получить тот же pid, который в некоторых случаях имеет большое значение.

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

0

wikipedia От:

Когда процесс заканчивается через выход, все связанные с ним связанные с памятью и ресурсами освобождаются, поэтому они могут использоваться другими процессами . Однако запись процесса в таблице процессов остается.

Так что здесь нет проблем с ресурсами. Сейчас подходит к вашему вопросу,

почему бы не экономить, что значение выхода в дескрипторе родительского процесса, когда ребенок выходит

Причина заключается в том, что ребенок не может доступа/изменить дескриптор процесса родителя. Он может общаться только с родителем.

Таким образом, ребенок отправляет родительскому объекту SIGCHLD, а для обработки сигнала - до родителя.

 Смежные вопросы

  • Нет связанных вопросов^_^