Процес-зомбі - це

Етимологія

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

виникнення зомбі

Процес при завершенні звільняє всі свої ресурси (за винятком PID - ідентифікатор процесу) і стає «зомбі» - порожній записом в таблиці процесів, що зберігає код завершення для батьківського процесу.

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

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

проблеми зомбі

Ігнорування SIGCHLD в принципі не є правильним, але може бути прийнятно для короткоживучих програм (деякі програми можуть робити це навмисно, наприклад, для виключення повторення PID). Але для довгоживучих і часто створюють дочірні процеси програм це неприйнятно, тому що накопичення зомбі призводить до «витоку ресурсів» (тобто до їх поступового блокування).

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

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

Якщо ж процес виконувався від імені суперкористувача, то проблему може вирішити тільки перезавантаження (причому часто - тільки апаратним рестартом). Деякі операційні системи (наприклад, Sun Solaris) при виникненні такої ситуації аварійно завершують частина процесів, що виконуються, відновлюючи працездатність системи. Одна з комп'ютерних байок стверджує, що Solaris може таким чином аварійно завершити виконання кореневого батьківського процесу init (що призведе до зупинки системи).

Приклади програм, що створюють зомбі, на різних мовах програмування

Увага! Виконання даних прикладів може привести до втрати Незбережені даних. Не рекомендується виконувати їх без застосування належних запобіжних заходів.

  • Зомбі не можуть приймати сигнали, і тому їх не можна прибрати за допомогою утиліти або виклику kill. Прибрати їх може або батьківський процес, або його завершення.
  • Всі процеси в Unix мають своїх батьків - процеси, які не мають або втратили батьків ( «осиротілі» процеси; англ. Orphan process), є дочірніми для init (процес з PID = 1), який в свою чергу є дочірнім для ядра (процесу з PID = 0). init завжди обробляє SIGCHLD, тому від таких процесів ніколи не залишається зомбі.
  • Зомбі можна дізнатися в списку процесів (виведених утилітою ps) по прапору «Z» в колонці STAT.
  • Хорошим стилем програмування вважається завжди обробляти SIGCHLD.
  • Мови скриптів Perl і Python неявно обробляють SIGCHLD, якщо програма налаштовує його ігнорування.

Дивитися що таке "Процес-зомбі" в інших словниках:

Процес-сирота - (англ. Orphan process) в сімействі операційних систем UNIX допоміжний процес, чий основний процес (або зв'язок з ним) був завершений нештатно (не подав сигналу при вимкненні). Зазвичай, «сиротою» залишається дочірній процес ... ... Вікіпедія

Зомбі - Цей термін має також інші значення див. Зомбі (значення). У цій статті не вистачає посилань на джерела інформації. Інформація повинна бути проверяема, інакше вона може бути поставлена ​​під Зімніть ... Вікіпедія

Зомбі (значення) - Зомбі: Зомбі ожилий мрець, не здатний мислити, що існує тільки для того, щоб виконувати накази свого творця Зомбування застосування маніпулятивних методів при спробі змінити мислення, поведінку, вірування, емоції або ... ... Вікіпедія

Зомбі-процес - Процес зомбі, зомбі (англ. Zombie process, англ. Defunct process) дочірній процес в Unix системі, який завершив своє виконання, але ще присутній в списку процесів операційної системи, щоб дати батьківського процесу вважати код ... ... Вікіпедія

Порошок зомбі - Лицар сумного образу у диких острівних негрів Зомбі (від банту конголезького «nzambi» «бог») в загальному випадку позначення живої людини, повністю втратив контроль над собою і своїм тілом і підпорядковується чиїм наказам (будь то в ... ... Вікіпедія

SIGCHLD - Опис: Стан дочірнього процесу змінилося За замовчуванням: ігнорується коди SA SIGINFO CLD EXITED нормальне завершення CLD KILLED аварійне завершення (без дампа пам'яті) CLD DUMPED аварійне завершення з дампом пам'яті CLD TRAPPED ... ... Вікіпедія

SIGKILL - Опис: Сигнал зупинки За замовчуванням: завершення процесу коди SA SIGINFO (не має специфічних кодів) У POSIX системах, SIGKILL сигнал, що посилається процесам для їх негайного завершення. SIGKILL целочисленная константа, ... ... Вікіпедія

  • Зомбі. Серена Валентино. Від видавця: Ти помітив, що розумовий процес у тебе трохи сповільнилося? Можливо, ти, як ніколи раніше, прагнеш людської плоті? А тобі не приходило в голову, що ти, можливо, ... Детальніше Купити за 81 грн (тільки Україна)
Інші книги по запросу «процес-зомбі» >>

Схожі статті