守护进程

计算机程序作为后台进程运行

在一个多工的电脑作业系统中,守护进程(英语:daemon/ˈdmən//ˈdmən/[2]是一种在后台执行,而不由用户直接交互控制的电脑程序。此类程序会被以进程的形式初始化。守护进程程序的名称通常以字母d结尾,以指明这个进程实际是守护进程,并与普通的电脑程序区分开来。例如,syslogd就是指管理系统日志的守护进程,sshd是接收传入SSH连接的守护进程。

“守护进程”的各地常用名称
中国大陆守护进程
台湾常驻程式、守护程式[1][1]
港澳常驻程式、守护程式
一些属于守护进程的Linux桌面环境组件,包括D-BusNetworkManager(在这里叫unetwork)、PulseAudiousound)和Avahi

Unix环境下,守护进程的父进程通常(但不一定)是init进程,且在UNIX系统进程层级中直接位于init之下。守护进程通常由如下方法创建:一个进程执行fork生成一个子进程然后立即终止,使得这个子进程能在init下运行;或者直接由init启动守护进程。另外,通过“fork并终止”产生的守护进程一般还需要执行其他操作,如解除此进程与任何控制终端(tty)之间的关联。这类流程在Unix上的daemon(3)已有实现。

系统通常在启动时一同启动守护进程。守护进程会执行一些任务以响应网络请求、硬件活动或其他应用程序的请求。像cron这样的守护进程还会在指定时间运行指定任务。

术语

“守护进程”这个概念由麻省理工学院MAC项目的程序员发明。费南多·柯巴托于1963年在MAC项目工作。根据他的说法,他的团队最早采用daemon这个概念,其灵感来源于麦克斯韦妖——一种物理学和热力学中虚构的媒介,能帮助排列分子。他对此表示:“我们别出心裁地开始使用daemon这个词来描述后台进程,它们不知疲倦地处理系统中的杂务。”[3] Unix系统继承了这个术语。作为一种在后台起作用的超自然存在,麦克斯韦妖与古希腊神话中的代蒙一致。

通常来讲,daemon是单词“demon”较早的拼写形式,源于希腊语δαίμων。伊维·尼梅斯英语Evi NemethUnix系统管理手册中对守护进程有如下阐释:[4]

许多人将“daemon”与“demon”这两个词等同,借此暗示UNIX与阴间的某种邪恶联系。这是一种极坏的误解。“Daemon”事实上是“demon”另一种早得多的写法;daemon并无善或恶的倾向,相反,它定义一个人的品质或性格。古希腊的“个人代蒙”概念类似于现代的“守护神”概念——快乐即是得到友好灵魂帮助或保护的状态。通常地,UNIX系统看起来充斥着守护神和恶鬼。

现代语境下,daemon一词发音为/ˈdmən/ DEE-mən。而在计算机软件的语境下,原本的发音/ˈdmən/在一些人那里变为/ˈdmən/ DAY-mən[2]

守护进程的别名包括服务(用于Windows NT及更高版本,后来也用于Linux),启动任务(IBM z/OS),[5]以及幽灵进程(XDS UTS)。

当这个概念用于计算机领域时,它有了另一种合理解释:磁盘与执行监视器(Disk And Execution MONitor)的逆向首字母缩略词[6]

连接到计算机网络的守护进程就是网络服务

实现

MS-DOS

微软DOS环境下,类似于守护进程的程序以终止及常驻程式(TSR)的形式出现。

Windows NT

Windows NT系统上,名为Windows服务的程序行使守护进程的功能。这些进程在运行时通常不与显示器、键盘、鼠标交互,可以在操作系统启动时由系统启动。 而在Windows 2000及之后的系统上,借助控制面板——一个专用的控制/配置程序、服务控制管理器sc命令)的服务控制器组件、net startnet stop命令或PowerShell脚本系统,用户可配置或手动启动/停止Windows服务。

然而,任何Windows应用程序可以行使守护进程的角色,而不仅仅是一个服务;一些Windows守护进程也有以普通进程运行的选项。

Classic Mac OS及macOS

Classic Mac OS上,可选功能与服务由启动时加载的文件提供,它们会修补操作系统;这些文件称为“系统扩展”和“控制面板”。后期版本的Classic Mac OS利用成熟的“无面孔”后台应用程序——运行于后台的常规应用程序增强了这些功能。对于用户而言,系统仍然将这类程序描述为常规系统扩展。

作为一种Unix系统,macOS采用守护进程。注意macOS的“服务”指服务菜单中指定的、行使特定功能的软件,与Windows上这个词所指的守护进程并不相同。

参考文献

  1. ^ 1.0 1.1 daemon - 常駐程式. 中华民国国家教育研究院双语词汇、学术名词暨辞书资讯网. [2022-05-07]. (原始内容存档于2022-05-07). 
  2. ^ 2.0 2.1 Eric S. Raymond. daemon. 新黑客词典. [2008-10-22]. (原始内容存档于2010-11-03). 
  3. ^ The Origin of the word Daemon. [2013-03-15]. (原始内容存档于2022-06-14). 
  4. ^ The BSD Daemon. Freebsd.org. [2008-11-15]. (原始内容存档于2019-05-15). 
  5. ^ IBM Knowledge Center - Glossary of z/OS terms and abbreviations. IBM. 
  6. ^ Daemon Definition. www.linfo.org. [2022-09-05]. (原始内容存档于2022-01-20). 

外部链接