殭屍進程,孤兒進程是如何產生

     通過pstree我們可以查詢當前進程的樹形結構圖,無疑init進程是所有進程的直接或者間接地老子;所有的進程都不是全新的創建,而是通過現有的進程來創建的,所以所有的進程的關係不是兄弟便是直接或間接地父子關係;init進程是所有進程的祖先,其他的進程都是由init直接或者間接fork出來的;

     進程有哪些狀態:

    D:不可中斷的sleep
     R:運行狀態
     S:可中斷睡眠
     T:暫停
     W:分頁狀態
     X:死亡狀態
     Z:殭屍進程
     <:高優先級別
     N:低優先級別
     L:頁鎖定
     s:Session Leader
     l:多線程
     +:前臺進程

殭屍進程:

     有時候我們會發現,有的已經實際不存在的進程卻佔着一個進程樹的節點,它沒有佔用內存和CPU資源;它就是我們說的殭屍進程;殭屍進程是由於子進程先於父進程退出,子進程的資源已經釋放,但子進程在系統的進程管理樹種佔用一個節點;系統保留此節點的意義在於,讓父進程處理子進程的退出;子進程退出時發送信號給父進程,便於父進程處理子進程完成的數據,做到多任務協調工作;

孤兒進程:

     父進程先於子進程結束,那麼子進程就沒有了父進程,時候系統釋放了父進程的所有資源,子進程就會成爲init進程,也就是跟進程的子進程,此時子進程稱爲孤兒進程;孤兒進程沒有任何危害,父進程的退出也會通過信號的方式通知子進程;

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章