僵尸进程、孤儿进程和守护进程
僵尸进程、孤儿进程和守护进程的详细信息如下:
僵尸进程
僵尸进程是指执行已完成但仍在进程表中保留条目的进程。僵尸进程通常发生在子进程中,因为父进程仍然需要读取其子进程的退出状态。一旦使用 wait 系统调用完成此操作,僵尸进程就会从进程表中删除。这称为“回收”僵尸进程。
演示僵尸进程创建和终止的图表如下所示:
僵尸进程不使用任何系统资源,但会保留其进程 ID。如果存在大量僵尸进程,则所有可用的进程 ID 都会被它们独占。这会阻止其他进程运行,因为没有可用的进程 ID。
孤儿进程
孤儿进程是指即使其父进程已终止或完成仍在运行的进程。孤儿进程可以有意或无意地创建。
有意创建的孤儿进程在后台运行,无需任何手动支持。这通常用于启动无限运行的服务或在无人值守的情况下完成长时间运行的作业。
无意创建的孤儿进程是在其父进程崩溃或终止时创建的。可以使用进程组机制避免无意创建的孤儿进程。
守护进程
守护进程是用户无法直接控制的后台进程。此进程通常在系统引导时启动,并在系统关闭时终止。
通常,守护进程的父进程是 init 进程。这是因为在父进程派生守护进程并终止后,init 进程通常会采用守护进程。
守护进程名称通常以 d 结尾。Unix 中的一些守护进程示例如下:
- crond
这是一个在后台运行作业的作业调度程序。
- syslogd
这是系统记录器,它实现了系统记录功能并收集系统消息。
- httpd
这是处理超文本传输协议的 Web 服务器守护进程。
- dhcpd
此守护进程动态配置用户的 TCP/IP 信息。
广告