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