Thursday, April 4, 2013

Zombie and Orphan Process

Zombie Process : A  child  that terminates, but has not been waited for becomes a "zombie".
 Parent does not grab status of child process using wait() or waitpid() system call.  The kernel maintains a  minimal set of information about the zombie  process  (PID,  termination  status,  resource  usage  information)  in order to allow the parent to later perform a wait to obtain information about the  child.  As long as a zombie is not removed from the system via a wait, it will consume a  slot  in   the  kernel process table, and if this table fills, it will not be possible to create further process   If a parent process terminates, then its  "zombie"  children  (if  any)  are  adopted  by
       init(8), which automatically performs a wait to remove the zombies.


Orphan Process:
In Linux/Unix like operating systems, as soon as parents of any process are dead, re-parenting occurs, automatically. Re-parenting means processes whose parents are dead, means Orphaned processes, are immediately adopted by special process “init” PID: 1 . Thing to notice here is that even after re-parenting, the process still remains Orphan as the parent which created the process is dead.

Orphan process are totally different from Zombie processes. Zombie processes are the ones which are not alive but still have entry in parent table.
Orphan processes take resources while they are in the system, and can potentially leave a server starved for resources. Having too many Orphan processes will overload the init process and can hang-up a Linux system. We can say that a normal user who has access to your Linux server is capable to easily kill your Linux server in a  minute.

No comments: