守護進程
編輯在多任務計算機操作系統中,守護進程(/?di?m?n/ 或 /?de?m?n/)是作為后臺進程運行的計算機程序,而不是在交互式用戶的直接控制下。 傳統上,守護進程的進程名稱以字母 d 結尾,以澄清該進程實際上是一個守護進程,以及區分守護進程和普通計算機程序。 例如,syslogd 是一個實現系統日志功能的守護進程,而 sshd 是一個為傳入的 SSH 連接提供服務的守護進程。
在 Unix 環境中,守護進程的父進程通常(但不總是)是 init 進程。 守護進程通常是由一個進程派生一個子進程然后立即退出,從而導致 init 采用子進程,或者由 init 進程直接啟動守護進程來創建的。 此外,通過分叉和退出啟動的守護進程通常必須執行其他操作,例如將進程與任何控制終端 (tty) 分離。 此類過程通常在各種便利例程中實現,例如 Unix 中的 daemon(3)。
系統通常會在啟動時啟動守護進程,這些守護進程將通過執行某些任務來響應網絡請求、硬件活動或其他程序。 諸如 cron 之類的守護進程也可以在預定的時間執行定義的任務。
術語
編輯該術語是由麻省理工學院 MAC 項目的程序員創造的。 根據 1963 年參與 MAC 項目的 Fernando J. Corbató 的說法,他的團隊是xxx個使用守護進程這個詞的人,靈感來自麥克斯韋妖,這是物理學和熱力學中幫助分選分子的虛構xxx,他說,我們 異想天開地開始使用守護進程這個詞來描述不知疲倦地執行系統雜務的后臺進程。 Unix 系統繼承了這個術語。 麥克斯韋的惡魔與希臘神話中對守護進程的解釋是一致的,它是在后臺工作的超自然存在。
在一般意義上,守護進程是惡魔一詞的舊形式,來自希臘語 δα?μων。 在 Unix 系統管理手冊中,Evi Nemeth 陳述了以下關于守護進程的內容:
許多人將 daemon 這個詞等同于 demon,暗示 UNIX 與地下世界之間存在某種邪惡的聯系。 這是一個令人震驚的誤解。 守護進程實際上是一種更古老的惡魔形式。 守護進程對善惡沒有特別的偏見,而是用來幫助定義一個人的性格或個性。 古希臘人的個人守護神概念類似于現代守護天使的概念——eudaemonia 是一種被善良的精神幫助或保護的狀態。 通常,UNIX 系統似乎充斥著守護進程和惡魔。
神話象征主義的進一步特征是,守護進程是不可見但始終存在并按其意志行事的東西。 在歸因于柏拉圖的 Theages 中,蘇格拉底將他自己的個人守護神描述為類似于道德良心的現代概念:眾神的恩惠給了我一個奇妙的禮物,從我的童年開始就從未離開過我。 這是一種聲音,當它自己被聽到時,就會阻止我去做我將要做的事情,而且從不催促我去做。
在現代用法中,daemon 一詞發音為 /?di?m?n/ DEE-m?n。 在計算機軟件的上下文中,原始發音 /?di?m?n/ 對于某些說話者來說已經漂移為 /?de?m?n/ DAY-m?n。
守護進程的替代術語是服務(在 Windows 中使用,從 Windows NT 開始,后來也在 Linux 中使用)、啟動任務 (IBM z/OS) 和幽靈作業 (XDS UTS)。
在該術語被用于計算機之后,它被合理化為磁盤和執行xxx器的反義詞。
連接到計算機網絡的守護進程是網絡服務的示例。
實施
編輯類 Unix 系統
從嚴格的技術意義上講,當類 Unix 系統進程的父進程終止并且守護進程被分配 init 進程(進程號 1)作為其父進程并且沒有控制終端時,類 Unix 系統進程是一個守護進程。 然而,更一般地,守護進程可以是任何后臺進程,無論是否是 init 進程的子進程。
在類 Unix 系統上,當進程從命令行或啟動腳本(如 init 腳本或 SystemStarter 腳本)啟動時,進程成為守護進程的常用方法包括:
- 可選擇從環境中刪除不必要的變量。
- 通過分叉和退出(在分叉的父部分中)作為后臺任務執行。 這允許守護進程的父進程(shell 或啟動進程)接收退出通知并繼續其正常執行。
- 從調用會話中分離,通常通過單個操作 setsid() 完成:
- 脫離控制終端。
- 創建一個新會話并成為該會話的會話負責人。
- 成為流程組領導。
- 如果守護進程想確保它不會獲取
內容由匿名用戶提供,本內容不代表www.gelinmeiz.com立場,內容投訴舉報請聯系www.gelinmeiz.com客服。如若轉載,請注明出處:http://www.gelinmeiz.com/203874/