Linux linux下的程序狀態

2021-10-22 16:51:18 字數 1834 閱讀 8617

程序狀態有:就緒 / 執行 / 阻塞

linux下程序的狀態

執行態 r:就緒以及正在執行,執行狀態的程序才會被作業系統排程在cpu上執行

可中斷休眠態 s:當前的阻塞能夠被中斷喚醒的休眠狀態

不可中斷休眠態 d:當前的阻塞不會被中斷喚醒,等待條件滿足自動喚醒

暫停態 t:停止執行,什麼都不做

殭屍態 z:程序已經退出了但是資源沒有完全被釋放的一種狀態 (這是一種等待後續處理的狀態)

可中斷休眠狀態展示s

loop.c**

#include

#include

intmain()

return0;

}

執行後檢視程序狀態pu -aux | grep loop

s表示的就是該程序處於可中斷休眠狀態

經過5秒後自動喚醒

暫停狀態展示t

當你嘗試殺死前面的那個程序,但是在檢視程序資訊時,該程序還是存在,但是是暫停狀態。

執行狀態展示r

loop.c**

#include

intmain()

return0;

}

執行後檢視程序狀態pu -aux | grep loop

殭屍狀態展示z

f.c**

#include

#include

#include

intmain()

return0;

}

執行後檢視程序狀態ps -efl | head -n 1 && ps -efl | grep f

第乙個是父程序,第二個是子程序。我們現在殺死子程序kill 4884

再檢視程序狀態ps -efl | head -n 1 && ps -efl | grep f

可以發現第二個的子程序已經是僵死狀態

命令:kill 程序號殺死程序

kill -9 程序號強制殺死程序

殭屍程序:處於僵死狀態的程序,指的是程序已經退出不在執行,但是資源沒有完全釋放

殭屍程序產生的條件:子程序先於父程序退出,但是父程序沒有進行程序等待,導致無法獲取子程序的退出狀態,因此作業系統無法直接釋放子程序資源

資源沒釋放完是因為要儲存殭屍程序的退出原因

殭屍程序的危害:資源洩漏(佔據記憶體、程序數量等),乙個使用者所能建立的程序數量是有限的,並且資源沒有完全**,會占用記憶體資源。

處理殭屍程序的方法

退出父程序(父程序退出,子程序儲存退出原因就沒有意義了)

避免殭屍程序的方法

程序等待

孤兒程序:父程序先於子程序退出,則子程序稱為孤兒程序,這孤兒程序的父程序成為了1號程序,並且這個孤兒程序執行在後台,並不佔據前台終端。孤兒程序不會成為殭屍程序。

守護程序:是一種特殊的孤兒程序,父程序是1號(init)程序,執行在後台,與終端以及登入會話脫離關係,不再受影響。守護程序通常是一種執行在系統後台的批處理(默默的做一些迴圈往復的事情)

精靈程序:就是守護程序

Linux Linux下的程序排程

在多程序的作業系統中,程序排程是乙個全域性性 關鍵性的問題,他對系統的總體設計 系統的實現和功能設定以及各個方面的效能都有著決定性的作用。本部落格筆者就對程序的排程這一知識點進行總結,不過為了簡單起見,我們先從linux核心2.4中排程介紹起,將原理說清楚後介紹更高階的linux2.6核心排程演算法...

linux linux程序指令

1.linux有哪些程序 linux下的主要程序狀態有 2.1 r task running 可執行狀態 通過將程序的task struct結構放到cpu的可執行佇列中,使程序變成r態。只有處在該狀態的程序才有可能被程序排程器選中在cpu上執行 2.2 s task interruptible 可中...

linux linux程序記憶體分析

在產品的開發中,通過對當前系統消耗記憶體總量的統計,可以對產品所需記憶體總量進行精確的評估,從而選擇合適的記憶體晶元與大小,降低產品的成本。在遇到記憶體洩露類問題時,經常會對此束手無策,本文通過對proc下程序相關的檔案進行分析,精確評估系統消耗記憶體的大小,還可以對記憶體洩露類問題的解決提供一種定...