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