從程序員的角度來看,進(jìn)程有3種狀態(tài)。
1、進(jìn)行中
進(jìn)程正在運(yùn)行,或者等待被執(zhí)行。
2、掛起(也叫停止)
臨時(shí)掛起, 比如執(zhí)行了sleep(),wait()函數(shù)等。 直到收到SIGCONT信號(hào)接著運(yùn)行進(jìn)程。
3、終止
進(jìn)程已經(jīng)永遠(yuǎn)結(jié)束,等待父進(jìn)程回收或已經(jīng)被回收。 常見的代碼中執(zhí)行exit函數(shù),或者cli下ctrl+c。
注:有些童鞋可能覺得 “運(yùn)行狀態(tài)下的等待被運(yùn)行”和“掛起”有什么區(qū)別呢?
答:
掛起狀態(tài)是收到一個(gè)信號(hào),比如SIGSTOP,SIGISTP等,變?yōu)閽炱馉顟B(tài)。在這期間直到收到繼續(xù)執(zhí)行進(jìn)程的 SIGCONT信號(hào),否則不會(huì)被內(nèi)核執(zhí)行。它告訴內(nèi)核大哥, 我還在等待 “SIGCONT信號(hào)“的通知, 內(nèi)核你還不能調(diào)度我。 而“進(jìn)行狀態(tài)下的等待被運(yùn)行”是 進(jìn)程告訴內(nèi)核大哥我已經(jīng)準(zhǔn)備好了, 你可以隨時(shí)調(diào)度我了。
原文地址:https://learnku.com/articles/70147