Answer:
A zombie (or defunct) process is one that has ended but for whatever reason the process information has not been removed from the process table. No code or data segments are allocated to the process anymore but the system has not removed it from the process list, so it appears to be still in the system (but isn't because it doesn't have any resources).
In the past the only way to get rid of zombie processes was to reboot the system to restore the system proc table. It is possible to try and get a parent process to execute a 'wait' system call to try and remove it - see related links.