什么是僵尸进程或线程?


11

什么是僵尸进程或线程,是什么造成它们?我只是杀死它们,还是可以做一些诊断以了解它们的死因?


13
你砍了他们的头。否则你会烧掉它们。那是唯一的方法。
西蒙·贝格

“击败他们或燃烧他们,他们走起来很容易”……
TMN 2012年

Answers:


17

什么是僵尸进程或线程,是什么造成它们?

僵尸进程是一个死进程。
OS只是保留信息,因此父级可以在以后的某个时刻检查进程的退出代码,因为OS会保留有关它们的信息,因此在查看进程时它们会出现。

我会杀了他们吗

不,他们已经死了。
父母死亡或从操作系统获取状态代码时,操作系统将清理操作系统。

或者我可以做些什么来诊断它们的死因?

不可以。父级可以但不能。


4

僵尸线程是已终止执行但并未干净终止的线程。它释放线程使用的资源,但在线程/进程表中保留一个条目。

从理论上讲,僵尸线程通过执行_join(POSIX)退出此状态。这意味着当您完成主程序后,僵尸进程将被程序杀死。


2

僵尸进程是既已终止执行又已从计划进程列表中删除但尚未删除的进程。根据操作系统的不同,tt可能会或可能不会一直分配有各种资源,可能会被查询,但它不会运行。

某些OS(通过设计)不允许动态创建或删除超出特定事件点的资源(例如VxWorks Cert)。此类系统通常通过使用预分配的资源池(从中检索,返回和重用项目)来解决此限制。但是,当此类系统上的进程终止时,无法将其删除,而将变为僵化状态(已终止并从调度列表中删除)。

希望这可以帮助。


0

当线程/进程被杀死时,但是在相应的表中仍然有关于它的记录,它变成了僵尸。

例如,当父进程创建子进程但在子进程之前终止时,可能会发生这种情况。当子进程终止时,它告诉父进程终止。然后,将子进程的记录从相应的表中删除。但是它的父项已经终止,因此记录仍保留在表中。

没有办法摆脱僵尸,而是重新启动


1
不需要重新启动。只需杀死父进程,系统将自动清理僵尸。
凯文·潘科
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.