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