常駐程式

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

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

外部連結