守护进程
在一个多工的电脑作业系统中,守护进程(英语:daemon,/ˈdiːmən/或/ˈdeɪmən/)[2]是一种在后台执行,而不由用户直接交互控制的电脑程序。此类程序会被以进程的形式初始化。守护进程程序的名称通常以字母d结尾,以指明这个进程实际是守护进程,并与普通的电脑程序区分开来。例如,syslogd就是指管理系统日志的守护进程,sshd是接收传入SSH连接的守护进程。
“守护进程”的各地常用名称 | |
---|---|
中国大陆 | 守护进程 |
台湾 | 常驻程式、守护程式[1][1] |
港澳 | 常驻程式、守护程式 |
在Unix环境下,守护进程的父进程通常(但不一定)是init进程,且在UNIX系统进程层级中直接位于init之下。守护进程通常由如下方法创建:一个进程执行fork生成一个子进程然后立即终止,使得这个子进程能在init下运行;或者直接由init启动守护进程。另外,通过“fork并终止”产生的守护进程一般还需要执行其他操作,如解除此进程与任何控制终端(tty)之间的关联。这类流程在Unix上的daemon(3)已有实现。
系统通常在启动时一同启动守护进程。守护进程会执行一些任务以响应网络请求、硬件活动或其他应用程序的请求。像cron这样的守护进程还会在指定时间运行指定任务。
术语
“守护进程”这个概念由麻省理工学院MAC项目的程序员发明。费南多·柯巴托于1963年在MAC项目工作。根据他的说法,他的团队最早采用daemon这个概念,其灵感来源于麦克斯韦妖——一种物理学和热力学中虚构的媒介,能帮助排列分子。他对此表示:“我们别出心裁地开始使用daemon这个词来描述后台进程,它们不知疲倦地处理系统中的杂务。”[3] Unix系统继承了这个术语。作为一种在后台起作用的超自然存在,麦克斯韦妖与古希腊神话中的代蒙一致。
通常来讲,daemon是单词“demon”较早的拼写形式,源于希腊语δαίμων。伊维·尼梅斯在Unix系统管理手册中对守护进程有如下阐释:[4]
许多人将“daemon”与“demon”这两个词等同,借此暗示UNIX与阴间的某种邪恶联系。这是一种极坏的误解。“Daemon”事实上是“demon”另一种早得多的写法;daemon并无善或恶的倾向,相反,它定义一个人的品质或性格。古希腊的“个人代蒙”概念类似于现代的“守护神”概念——快乐即是得到友好灵魂帮助或保护的状态。通常地,UNIX系统看起来充斥着守护神和恶鬼。
现代语境下,daemon一词发音为/ˈdiːmən/ DEE-mən。而在计算机软件的语境下,原本的发音/ˈdiːmən/在一些人那里变为/ˈdeɪmə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 start和net stop命令或PowerShell脚本系统,用户可配置或手动启动/停止Windows服务。
然而,任何Windows应用程序可以行使守护进程的角色,而不仅仅是一个服务;一些Windows守护进程也有以普通进程运行的选项。
Classic Mac OS及macOS
在Classic Mac OS上,可选功能与服务由启动时加载的文件提供,它们会修补操作系统;这些文件称为“系统扩展”和“控制面板”。后期版本的Classic Mac OS利用成熟的“无面孔”后台应用程序——运行于后台的常规应用程序增强了这些功能。对于用户而言,系统仍然将这类程序描述为常规系统扩展。
作为一种Unix系统,macOS采用守护进程。注意macOS的“服务”指服务菜单中指定的、行使特定功能的软件,与Windows上这个词所指的守护进程并不相同。
参考文献
- ^ 1.0 1.1 daemon - 常駐程式. 中华民国国家教育研究院双语词汇、学术名词暨辞书资讯网. [2022-05-07]. (原始内容存档于2022-05-07).
- ^ 2.0 2.1 Eric S. Raymond. daemon. 新黑客词典. [2008-10-22]. (原始内容存档于2010-11-03).
- ^ The Origin of the word Daemon. [2013-03-15]. (原始内容存档于2022-06-14).
- ^ The BSD Daemon. Freebsd.org. [2008-11-15]. (原始内容存档于2019-05-15).
- ^ IBM Knowledge Center - Glossary of z/OS terms and abbreviations. IBM.
- ^ Daemon Definition. www.linfo.org. [2022-09-05]. (原始内容存档于2022-01-20).