【Linux】程序狀態。重點殭屍程序,孤兒程序
我們都知道程序可以認為是一個執行的程式,那麼為了弄明白正在執行的程序是什麼意思,我們需要先了解程序的狀態。。。下面的狀態在kernel原始碼中定義:
1.程序狀態
R執行狀態:並不意味著程序一定在執行中,它表明程序要麼在執行中要麼在執行佇列裡。 S睡眠狀態(可中斷睡眠):意味著程序在等待事件完成。 D磁碟休眠狀態(不可中斷睡眠):這個狀態的程序通常會等待IO的結束。 T停止狀態:可以傳送SIGSTOP給程序來停止程序,這個被暫停的程序可以傳送SIGCONT訊號讓程序繼續執行。 t跟蹤狀態: X死亡狀態:這個狀態只是一個返回狀態,你不會在任務列表中看到這個狀態。 Z殭屍狀態: 2.殭屍程序: 2.1產生原因: 2.10.子程序先於父程序退出。 2.1.1.子程序退出,為了儲存自己的退出原因,因此這個退出後資源不會被完全釋放,等待父程序來獲取退出狀態,然後釋放子程序所有資源。 2.1.2假如父程序沒有關心子程序的退出,那麼這時候這個退出的子程序將成為殭屍程序,佔用著系統資源而不釋放,造成資源洩露。 2.2危害:資源洩露,正常程序可能無法建立。 子程序先於父程序退出,父程序沒有關心子程序的退出狀態,所以【形成殭屍狀態】。 殭屍程序退出:kill -9強制殺死 3.孤兒程序:
3.1產生原因:父程序先於子程序退出,那麼子程序就成為孤兒程序,那麼這個子程序將被孤兒院init程序所領養,釋放由init釋放