進程是一個動態(tài)的實體,所以他是有生命的。從創(chuàng)建到消亡,是一個進程的整個生命周期。在這個周期中,進程可能會經(jīng)歷各種不同的狀態(tài)。一般來說,所有進程都要經(jīng)歷以下的3個狀態(tài):
- 就緒態(tài)。指進程已經(jīng)獲得所有所需的其他資源,正在申請?zhí)幚硖幚砥髻Y源,準備開始執(zhí)行。這種情況下,稱進程處于就緒態(tài)。
- 阻塞態(tài)。指進程因為需要等待所需資源而放棄處理器,或者進程本不擁有處理器,且其他資源也沒有滿足,從而即使得到處理器也不能開始運行。這種情況下,進程處于阻塞態(tài)。阻塞狀態(tài)也稱休眠狀態(tài)或者等待狀態(tài)。
- 運行態(tài)。進程得到了處理器,并不需要等待其他任何資源,正在執(zhí)行的狀態(tài),稱之為運行態(tài)。只有在運行態(tài)時,進程才可以使用所申請到的資源。
在Linux系統(tǒng)中,將各種狀態(tài)進行了重新組織,由此得到了Linux進程的幾個狀態(tài):
- RUNNING:正在運行或者在就緒隊列中等待運行的進程。也就是上面提到的運行態(tài)和就緒態(tài)進程的綜合。一個進程處于RUNNING狀態(tài),并不代表他一定在被執(zhí)行。由于在多任務系統(tǒng)中,各個就緒進程需要并發(fā)執(zhí)行,所以在某個特定時刻,這些處于RUNNING狀態(tài)的進程之中,只有一個能得到處理器,而其他進程必須在一個就緒隊列中等待。即使是在多處理器的系統(tǒng)中,Linux也只能同時讓一個處理器執(zhí)行任務。
- UNINTERRUPTABLE:不可中斷阻塞狀態(tài)。處于這種狀態(tài)的進程正在等待隊列中,當資源有效時,可由操作系統(tǒng)進行喚醒,否則,將一直處于等待狀態(tài)。
- INTERRUPTABLE:可中斷阻塞狀態(tài)。與不可中斷阻塞狀態(tài)一樣,處于這種狀態(tài)的進程在等待隊列中,當資源有效時,可以有操作系統(tǒng)進行喚醒。與不可中斷阻塞狀態(tài)有所區(qū)別的是,處于此狀態(tài)中的進程亦可被其他進程的信號喚醒。
- STOPPED:掛起狀態(tài)。進程被暫停,需要通過其它進程的信號才能被喚醒。導致這種狀態(tài)的原因有兩種。其一是受到相關(guān)信號(SIGSTOP,SIGSTP,SIGTTIN或SIGTTOU)的反應。其二是受到父進程ptrace調(diào)用的控制,而暫時將處理器交給控制進程。
- ZOMBIE:僵尸狀態(tài)。表示進程結(jié)束但尚未消亡的一種狀態(tài)。此時進程已經(jīng)結(jié)束運行并釋放掉大部分資源,但尚未釋放進程控制塊。

轉(zhuǎn)自:
posted on 2010-01-11 22:01
chatler 閱讀(424)
評論(0) 編輯 收藏 引用 所屬分類:
Linux_Coding