孤兒進程與僵尸進程

孤兒進程與僵尸進程[總結(jié)]

1棚赔、前言

  之前在看《unix環(huán)境高級編程》第八章進程時候,提到孤兒進程和僵尸進程,一直對這兩個概念比較模糊玖姑。今天被人問到什么是孤兒進程和僵尸進程,會帶來什么問題慨菱,怎么解決焰络,我只停留在概念上面,沒有深入符喝,倍感慚愧闪彼。晚上回來google了一下,再次參考APUE协饲,認(rèn)真總結(jié)一下畏腕,加深理解。

2茉稠、基本概念

我們知道在unix/linux中描馅,正常情況下,子進程是通過父進程創(chuàng)建的而线,子進程在創(chuàng)建新的進程流昏。子進程的結(jié)束和父進程的運行是一個異步過程,即父進程永遠(yuǎn)無法預(yù)測子進程 到底什么時候結(jié)束。當(dāng)一個 進程完成它的工作終止之后吞获,它的父進程需要調(diào)用wait()或者waitpid()系統(tǒng)調(diào)用取得子進程的終止?fàn)顟B(tài)况凉。

  孤兒進程:一個父進程退出,而它的一個或多個子進程還在運行各拷,那么那些子進程將成為孤兒進程刁绒。孤兒進程將被init進程(進程號為1)所收養(yǎng),并由init進程對它們完成狀態(tài)收集工作烤黍。

  僵尸進程:一個進程使用fork創(chuàng)建子進程知市,如果子進程退出,而父進程并沒有調(diào)用wait或waitpid獲取子進程的狀態(tài)信息速蕊,那么子進程的進程描述符仍然保存在系統(tǒng)中嫂丙。這種進程稱之為僵尸進程。

3规哲、問題及危害

unix提供了一種機制可以保證只要父進程想知道子進程結(jié)束時的狀態(tài)信息跟啤, 就可以得到。這種機制就是: 在每個進程退出的時候,內(nèi)核釋放該進程所有的資源,包括打開的文件,占用的內(nèi)存等。 但是仍然為其保留一定的信息(包括進程號the process ID,退出狀態(tài)the termination status of the process,運行時間the amount of CPU time taken by the process等)隅肥。直到父進程通過wait / waitpid來取時才釋放竿奏。 但這樣就導(dǎo)致了問題,如果進程不調(diào)用wait / waitpid的話腥放,?那么保留的那段信息就不會釋放泛啸,其進程號就會一直被占用,但是系統(tǒng)所能使用的進程號是有限的秃症,如果大量的產(chǎn)生僵尸進程候址,將因為沒有可用的進程號而導(dǎo)致系統(tǒng)不能產(chǎn)生新的進程. 此即為僵尸進程的危害,應(yīng)當(dāng)避免种柑。

孤兒進程是沒有父進程的進程岗仑,孤兒進程這個重任就落到了init進程身上,init進程就好像是一個民政局莹规,專門負(fù)責(zé)處理孤兒進程的善后工作赔蒲。每當(dāng)出現(xiàn)一個孤兒進程的時候泌神,內(nèi)核就把孤 兒進程的父進程設(shè)置為init良漱,而init進程會循環(huán)地wait()它的已經(jīng)退出的子進程。這樣欢际,當(dāng)一個孤兒進程凄涼地結(jié)束了其生命周期的時候母市,init進程就會代表黨和政府出面處理它的一切善后工作。因此孤兒進程并不會有什么危害损趋。

任何一個子進程(init除外)在exit()之后患久,并非馬上就消失掉,而是留下一個稱為僵尸進程(Zombie)的數(shù)據(jù)結(jié)構(gòu)浑槽,等待父進程處理蒋失。這是每個 子進程在結(jié)束時都要經(jīng)過的階段。如果子進程在exit()之后桐玻,父進程沒有來得及處理篙挽,這時用ps命令就能看到子進程的狀態(tài)是“Z”。如果父進程能及時 處理镊靴,可能用ps命令就來不及看到子進程的僵尸狀態(tài)铣卡,但這并不等于子進程不經(jīng)過僵尸狀態(tài)。 ?如果父進程在子進程結(jié)束之前退出偏竟,則子進程將由init接管煮落。init將會以父進程的身份對僵尸狀態(tài)的子進程進行處理。

  僵尸進程危害場景:

  例如有個進程踊谋,它定期的產(chǎn) 生一個子進程蝉仇,這個子進程需要做的事情很少,做完它該做的事情之后就退出了,因此這個子進程的生命周期很短量淌,但是骗村,父進程只管生成新的子進程,至于子進程 退出之后的事情呀枢,則一概不聞不問胚股,這樣,系統(tǒng)運行上一段時間之后裙秋,系統(tǒng)中就會存在很多的僵尸進程琅拌,倘若用ps命令查看的話,就會看到很多狀態(tài)為Z的進程摘刑。 嚴(yán)格地來說进宝,僵尸進程并不是問題的根源,罪魁禍?zhǔn)资钱a(chǎn)生出大量僵尸進程的那個父進程枷恕。因此党晋,當(dāng)我們尋求如何消滅系統(tǒng)中大量的僵尸進程時,答案就是把產(chǎn)生大 量僵尸進程的那個元兇槍斃掉(也就是通過kill發(fā)送SIGTERM或者SIGKILL信號啦)徐块。槍斃了元兇進程之后未玻,它產(chǎn)生的僵尸進程就變成了孤兒進 程,這些孤兒進程會被init進程接管胡控,init進程會wait()這些孤兒進程扳剿,釋放它們占用的系統(tǒng)進程表中的資源,這樣昼激,這些已經(jīng)僵死的孤兒進程 就能瞑目而去了庇绽。



注:此為轉(zhuǎn)載他人的勞動成果。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末橙困,一起剝皮案震驚了整個濱河市瞧掺,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌凡傅,老刑警劉巖辟狈,帶你破解...
    沈念sama閱讀 222,627評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異像捶,居然都是意外死亡上陕,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評論 3 399
  • 文/潘曉璐 我一進店門拓春,熙熙樓的掌柜王于貴愁眉苦臉地迎上來释簿,“玉大人,你說我怎么就攤上這事硼莽∈埽” “怎么了煮纵?”我有些...
    開封第一講書人閱讀 169,346評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長偏螺。 經(jīng)常有香客問我行疏,道長,這世上最難降的妖魔是什么套像? 我笑而不...
    開封第一講書人閱讀 60,097評論 1 300
  • 正文 為了忘掉前任酿联,我火速辦了婚禮,結(jié)果婚禮上夺巩,老公的妹妹穿的比我還像新娘贞让。我一直安慰自己,他們只是感情好柳譬,可當(dāng)我...
    茶點故事閱讀 69,100評論 6 398
  • 文/花漫 我一把揭開白布喳张。 她就那樣靜靜地躺著,像睡著了一般美澳。 火紅的嫁衣襯著肌膚如雪销部。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,696評論 1 312
  • 那天制跟,我揣著相機與錄音舅桩,去河邊找鬼。 笑死凫岖,一個胖子當(dāng)著我的面吹牛江咳,可吹牛的內(nèi)容都是我干的逢净。 我是一名探鬼主播哥放,決...
    沈念sama閱讀 41,165評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼爹土!你這毒婦竟也來了甥雕?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,108評論 0 277
  • 序言:老撾萬榮一對情侶失蹤胀茵,失蹤者是張志新(化名)和其女友劉穎社露,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體琼娘,經(jīng)...
    沈念sama閱讀 46,646評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡峭弟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,709評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了脱拼。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瞒瘸。...
    茶點故事閱讀 40,861評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖熄浓,靈堂內(nèi)的尸體忽然破棺而出情臭,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布俯在,位于F島的核電站竟秫,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏跷乐。R本人自食惡果不足惜肥败,卻給世界環(huán)境...
    茶點故事閱讀 42,196評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望愕提。 院中可真熱鬧拙吉,春花似錦、人聲如沸揪荣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽仗颈。三九已至佛舱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間挨决,已是汗流浹背请祖。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留脖祈,地道東北人肆捕。 一個月前我還...
    沈念sama閱讀 49,287評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像盖高,于是被迫代替她去往敵國和親慎陵。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,860評論 2 361