Зомби-процесс

Зомби-процесс

Проце́сс-зо́мби, зо́мби (англ. zombie process, англ. defunct process) — дочерний процесс в Unix-системе, завершивший своё выполнение, но еще присутствующий в списке процессов операционной системы, чтобы дать родительскому процессу считать код завершения.

Содержание

Этимология

Происходит от слова «зомби», означающего «живой мертвец» (оксюморон, англ. undead). Термин является яркой метафорой о том, что процесс «умер», но не «погребён».

Возникновение зомби

Процесс при завершении освобождает все свои ресурсы (за исключением PID — идентификатора процесса) и становится «зомби» — пустой записью в таблице процессов, хранящей код завершения для родительского процесса.

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

Если родительский процесс игнорирует SIGCHLD (а он игнорируется по умолчанию), то зомби остаются до его завершения.

Проблемы зомби

Игнорирование

Зомби не занимают памяти (как процессы-сироты), но блокируют записи в таблице процессов, размер которой ограничен для каждого пользователя и системы в целом.

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

Если же процесс выполнялся от имени суперпользователя, то проблему может решить только перезагрузка (причем зачастую - только аппаратным рестартом). Некоторые операционные системы (например, Sun Solaris) при возникновении такой ситуации аварийно завершают часть выполняющихся процессов, восстанавливая работоспособность системы. Одна из компьютерных баек утверждает, что Solaris может таким образом аварийно завершить выполнение корневого родительского процесса

Примеры программ, создающих зомби, на разных языках программирования

Си:

#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
 
int main ()
{
  pid_t child_pid;
 
  child_pid = fork ();
  if (child_pid > 0) {
    sleep (60);
  }
  else {
    exit (0);
  }
  return 0;
}

Разное

См. также


Wikimedia Foundation. 2010.

Игры ⚽ Нужно решить контрольную?

Полезное


Смотреть что такое "Зомби-процесс" в других словарях:

  • Процесс-зомби — Процесс зомби, зомби (англ. zombie process, англ. defunct process)  дочерний процесс в Unix системе, завершивший своё выполнение, но ещё присутствующий в списке процессов операционной системы, чтобы дать родительскому процессу… …   Википедия

  • Процесс-сирота — (англ. orphan process)  в семействе операционных систем UNIX вспомогательный процесс, чей основной процесс (или связь с ним) был завершен нештатно (не подав сигнала на завершение работы). Обычно, «сиротой» остается дочерний процесс… …   Википедия

  • Зомби — У этого термина существуют и другие значения, см. Зомби (значения). В этой статье не хватает ссылок на источники информации. Информация должна быть проверяема, иначе она может быть поставлена под сомнен …   Википедия

  • Зомби (значения) — Зомби: Зомби  оживший мертвец, не способный мыслить, существующий только для того, чтобы исполнять приказы своего создателя Зомбирование применение манипулятивных методов при попытке изменить мышление, поведение, верования, эмоции или… …   Википедия

  • Порошок зомби — Рыцарь печального образа у диких островных негров Зомби (от банту конголезского «nzambi»  «бог»)  в общем случае обозначение живого человека, полностью потерявшего контроль над собой и своим телом и подчиняющимся чьим то приказам (будь то в… …   Википедия

  • Образ зомби в искусстве — Эта статья предлагается к удалению. Пояснение причин и соответствующее обсуждение вы можете найти на странице Википедия:К удалению/15 ноября 2012. Пока процесс обсуждения не завершён, статью можно …   Википедия

  • Zombie — Процесс зомби, зомби (англ. zombie process, англ. defunct process) дочерний процесс в Unix системе, завершивший своё выполнение, но еще присутствующий в списке процессов операционной системы, чтобы дать родительскому процессу считать код… …   Википедия

  • Call of Duty: Black Ops II — Call of Duty: Black Ops 2 Разработчик …   Википедия

  • Plants vs. Zombies — Разработчик PopCap Games Издатель …   Википедия

  • Resident Evil 2 — Обложка ПК издания игры Разработчик …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»