守护进程

守护进程的工作原理

守护进程就是一个在后台运行的一个程序,主要功能就是提供一些系统的服务。

这些守护进程都是在后台一直运行并等待用户提出要求以便提供服务。

在后台运行的一个守护进程时刻等待一个请求(用UNIX术语就是等待事件的发生)。当这个守护进程收到一个请求时,通常它会为这个请求再生成一个子进程来专门为这个请求服务,而原来那个守护进程(父进程)继续等待下一个请求。

守护进程分为两种类型:

独立(Standalone)守护进程临时(Transient)守护进程,由超级守护进程(super daemon)控制的守护进程。

两种守护进程的差别

独立守护进程的工作方式是:当用户或程序提出需求时,独立守护进程会自己为用户或程序提供所需的服务。

临时守护进程的工作方式是:当用户或程序提出需求时会向 xinetd 超级守护进程要求服务,之后,xinetd 再调用相应的临时守护进程,最后再由这个临时守护进程为用户或程序提供所需的服务。

守护进程

这两种类型的守护进程的最大差别就是 Transient 类型的守护进程必须要通过 xinetd 超级守护进程的调用才能向用户或程序提供所需的服务,也就是说,Transient 类型的守护进程不能不能自己直接向用户或程序提供服务。而独立守护进程是不需要通过 xinetd 超级守护进程的调用,它直接向用户或程序提供服务。xinetd 进程之所以叫超级守护进程,是因为所有 Transient 守护进程都由它管理。

为什么要引入 xinetd 超级守护进程和 Transient 守护进程

如果在一个系统上有许多不常用的服务,如果完全采用独立守护进程来提供服务就会浪费许多系统资源并可能影响到系统整体的效率,因为不管有没有连接请求,这些独立守护进程都要在后台一直运行着,时刻等待着提供服务。有了xinetd 超级守护进程和 Transient 守护进程就完全不一样了,因为平时只有xinetd 超级守护进程在运行以监听来自用户或程序的服务请求。

在Linux系统中,独立守护进程又分为两种:

在开机时由 init 进程直接启动的,如虚拟终端控制台(Virtual console).System V的守护进程,如httpd和 vsftpd 就是 System V 的守护进程。

守护进程