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

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