| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > *NIX системы: Общие вопросы > Отчего могут рождаться Zombie процессы? |
| Автор: Andrey1 2.11.2005, 17:58 |
| Есть программа (даже система; база данных, если быть точно), во всем хорошая; единственный недостаток - рождает пачками zombie процессы. Прога состоит из нескольких частей (клиент-сервер), которые "живут" в backgroud'e. Части похоже обмениваюся данными через общую память... Отчего могут рождаться Zombie процессы (Zombie в терминалогии top"a)? Andrey |
| Автор: bilbobagginz 2.11.2005, 20:01 |
| Zombie - это статус процесса перед смертью. обычно зомби остаются подолгу из-за того, что процесс родителя был написан через одно место. если процесс А прождает процесс Б, то при смерти Б, А должен вызвать системный вызов wait(). причина такова: в линуксе, как и в других юниксах, при изменении статуса процесса ( для понимания этого выражения, ножно знать что есть "процесс", и что это его "статус".) прежде чем изменить статус, родитель получает сообщение об этом. если это сообщение о смерти сына, то процесс родителя обязан сообщить системе о том, что это нормально, и система может освободить все ресурсы от сына. делается это вызовом wait(). если этого не происходит, процесс остается в промежуточном статусе. ZOMBIE это и есть "предсмертный статус". что за база данных ? |
| Автор: dargaard 2.11.2005, 20:05 |
| Обычно сервера работают по следуюшему принципу: есть главный поток который ждет запрос от клиента. При попытке соединения главный поток создает новый и передает контроль ему. При завершении сессии главный поток должен воссоединится с новосозданным, иначе будут кучами рождаться зомби процессы - при завершении сессии новосозданный процесс умирает , но с родительским потоком не воссоединяется - вот и висит как зомби. |
| Автор: Andrey1 4.11.2005, 11:19 | ||
Всем спасибо, с занесением в личное дело
Ой... лучше не буду говорить. Может разработчики уже скоро поубивают этих zombieв, а пост будет висеть еще долго... |
| Автор: likehood 11.7.2006, 13:04 |
| В системе периодически появляются процессы-зомби, причем это могут быть самые различные проги: xfe, evolution или еще что-нибудь. Обычно в памяти висит один, максимум два зомби. Откуда они могут взяться в принципе? |
| Автор: bilbobagginz 11.7.2006, 23:39 |
| это уже видими имеем дело с нечистой силой... baronp, ВСЕ процессы перед исчезновением из системы находятся в состоянии ZOMBIE. вопрос кого ты успеваешь увидеть в этом малоприятном состоянии, а кого нет. |
| Автор: powerfox 12.7.2006, 00:26 |
Покупаем чеснок, делаем чесночный сок ---> поливаем системник и... Никаких зомби. А есои полить процессор, то зомби НА ЭТОМ процессоре не появятся точно. |
| Автор: BobiKK 12.7.2006, 09:28 |
| Новый голивудский блокбастер: "Атака зомби". Действие картины просходит в заброшенных нейронных сетях мамки Intel Desktop Board 845D. Каждый день на бедных пользователей совершают набеги жестокие зомби из потустороннего мира kernel'a. Отважный герой baronp, вооружившись чесночным экстрактом и плазменым орудием kill, отправляется ликвидировать сам источник нечисти, процессор. Роли зомби исполянют xfe, evolution |
| Автор: bilbobagginz 12.7.2006, 14:29 |
| а чего нас убивать ? мы люди не злые |
| Автор: powerfox 12.7.2006, 21:25 |
| Не помню чья, но была песня, кажется, мёртвый анархист. Сюжет такой: поднялись зомби, а на них крестьяне с вилами. Когда взошло солнышко, то всех добило. А заканчивалась песенка словами: Лишь кто-то в тёмном подвале Гулко сказал Ух. |
| Автор: GrayCardinal 13.7.2006, 11:35 |
| "Мертвый анархист" это песня так называется. Исполняет "Король и Шут". И не "Ух" он сказал а "ХОЙ". Под него даже клип сняли. А kill помогает, только мочить надо не зомби а предков которые их сделали kill -s SIGHUP <parent_pid> Должен угробить всех зомби а означенного parent_pid перезапустить. Или просто угробить, а перезапускать придется ручками. |