常駐程式

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

在一個多工的電腦作業系統中,守護進程(英語: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). 

外部連結