更新時間:2022-09-13 08:23:44 來源:動力節點 瀏覽2372次
在Java教程中大家會學到很多關于線程及進程的知識,今天我們來了解一下什么是守護進程。
在計算中,守護進程(讀作 DEE-muhn)是作為后臺進程連續運行并喚醒以處理周期性服務請求的程序,這些請求通常來自遠程進程。守護程序收到操作系統 (OS) 發出的請求的警報,它要么自己響應請求,要么將請求轉發給適當的另一個程序或進程。
常見的守護進程包括打印假脫機程序、電子郵件處理程序和其他管理管理任務的程序。許多 Unix 或 Linux 實用程序作為守護程序運行。例如,在 Linux 上,網絡時間協議 ( NTP ) 守護程序用于測量運行它的計算機上的時鐘與網絡上所有其他計算機的時鐘之間的時間差。每臺主機上都運行一個時間守護程序,其中一個被指定為主計算機,所有其他計算機為輔助計算機。輔助守護程序通過首先向主時間守護程序發送請求以找出正確的網絡時間來重置其主機上的網絡時間。
守護進程在客戶端-服務器模型中扮演服務器的角色。
守護進程最明顯的例子之一是超文本傳輸??協議守護進程 (HTTPd),它在每臺 Web 服務器上運行,持續以休眠模式等待,直到來自 Web 客戶端及其用戶的請求進入。早期版本的 HTTP 守護進程會生成一個新進程來處理每個請求。新進程(守護進程的副本)將獲取請求的內容并將其返回給請求的客戶端。然后,新進程就會死掉。
通過產生一個新進程,原始進程可以回到休眠模式以等待其他請求。這種方法用于防止原始進程太忙而無法為新請求提供服務,因為自行處理所有請求的守護進程會使系統更容易受到黑客攻擊。拒絕服務攻擊通常基于使守護進程忙于處理傳入請求的策略。
更現代的 HTTP 守護進程,例如 Apache,使用線程而不是產生新進程來處理請求。線程在第一代 HTTP 守護進程實施和部署之后就開始普遍使用,它使同一進程的不同部分能夠并行運行。守護進程的主要部分可以等待新請求,而其他線程處理舊請求。與生成新進程相比,線程需要更少的開銷,這需要時間來完成,并且新進程需要內存才能運行。
第三種方法以Nginx HTTP守護程序為例,它基于在單線程中運行的事件驅動架構。請求被移交給在后臺持續運行的工作進程——也就是說,它們不是僅僅為了處理請求而產生的,只是在之后立即消失。管理員決定創建多少工作進程。
由于守護進程需要操作系統的特殊服務,它們的行為在一個操作系統和另一個操作系統之間略有不同。第一個守護進程是在 Unix 操作系統上運行的,并且是圍繞 Unix 的特性設計的。
守護進程在 Unix 命令行或啟動文件中啟動;這些文件包含在系統啟動或某些其他事件(例如用戶登錄或生成新的shell 腳本時)執行的腳本。然后它們在后臺運行并等待來自操作系統的信號喚醒并開始行動。
守護進程只能在多任務操作系統上運行。它們是在 Microsoft Windows 中實現的,從 NT 版本開始,通常被稱為Windows 服務而不是守護進程。
守護進程在某些外部事件(例如網絡上的消息到達)時響應來自操作系統的警報。對于來自網絡的消息,主機上的TCP/IP模塊查找消息的端口號并向分配給該端口號的守護程序發送警報。例如,端口號 80 分配給 HTTP,因此當接收到具有該端口號的消息時,操作系統內置的 TCP/IP 堆棧會向 HTTPd 發送信號。
任何基于 Unix 或 Unix 變體的系統都運行多個守護進程,它們的名稱通常以字母d結尾。以下是守護進程的一些示例:
在里面。這是 Unix 啟動時啟動的第一個守護進程,它會產生所有其他進程。
內特。這個超級守護進程在指定的端口號上偵聽 Internet 請求,并生成適當的服務器程序來處理它們。inetd 處理的服務包括rlogin、telnet、ftp、talk 和finger。
克朗德 這個守護進程執行預定的命令。
dhcpd。此守護程序提供動態主機配置協議服務。
手指。該守護進程通常由 inetd 啟動以響應手指命令。
ftpd。這個守護進程通常由 inetd 啟動以處理文件傳輸協議請求。
httpd。此守護進程充當 Web 服務器。
LPD。此守護程序提供行式打印機協議請求。
命名。該守護進程提供域名協議服務。
nfsd。此守護程序提供網絡文件系統服務。
ntpd。此守護程序提供 NTP 服務,作為主要或次要服務。
端口映射/rpcbind。此守護程序將遠程過程調用程序號轉換為 Internet 端口號。
sshd。此守護程序提供安全 Shell服務。
發郵件。這個簡單的主要傳輸協議或郵件程序守護進程處理傳入的電子郵件消息。
交換者。作為虛擬內存管理的一部分,該內核守護進程在主內存和輔助存儲之間移動整個進程。
系統日志。此守護進程處理來自操作系統內核、同一臺機器上的其他進程和遠程機器上的其他進程的日志記錄請求。
同步。此守護進程同步不同服務器上的文件。
系統化。這個守護進程取代了 Linux 系統上的 init。
手。這個守護進程選擇最近沒有被引用過的頁面,如果需要的話,這些頁面可以從主內存換出到輔助存儲中。
ypbind。此守護程序將網絡信息服務客戶端上的進程綁定到 NIS 服務器上的服務。
以上就是關于“一文讀懂什么是守護進程”的介紹,大家如果對此比較感興趣,想了解更多相關知識,可以關注一下動力節點的Java多線程編程技術文檔,里面有更豐富的知識等著大家去學習,希望對大家能夠有所幫助。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習