Cả hai liên quan tới cách Unix quản lý quan hệ cha–con.
Zombie (defunct): tiến trình con đã kết thúc (exit) nhưng cha CHƯA gọi wait()/waitpid() để đọc exit status. Con đã giải phóng hầu hết tài nguyên nhưng entry trong process table vẫn còn để giữ exit code → hiển thị trạng thái Z. Zombie không dùng CPU/RAM đáng kể, nhưng nếu tích nhiều sẽ cạn PID. Khắc phục: cha phải wait() (thường trong handler của SIGCHLD).
Orphan: tiến trình con vẫn đang chạy nhưng cha đã chết trước. Con được init/systemd (PID 1) nhận làm cha nuôi (re-parent); PID 1 sẽ tự wait() khi con kết thúc nên orphan không đọng lại thành zombie.
Hình dung: zombie = đã chết mà chưa ai ký giấy khai tử; orphan = còn sống nhưng mất cha, được nhà nước nhận nuôi.