一個進程被喚醒意味著進程變?yōu)榫途w狀態(tài)。進程狀態(tài)反映進程執(zhí)行過程的變化,進程被喚醒就是激活這個進程,意味著它變?yōu)榫途w狀態(tài),也表示該進程具備運行條件,等待系統(tǒng)分配處理器以便運行;但進入就緒狀態(tài)后并不馬上移至就緒隊列隊首,而是在隊尾參加排隊。
本教程操作環(huán)境:windows7系統(tǒng)、Dell G3電腦。
一個進程被喚醒意味著進程變?yōu)榫途w狀態(tài)。
進程:并發(fā)執(zhí)行的程序在執(zhí)行過程中分配和管理資源的基本單位。
進程狀態(tài)反映進程執(zhí)行過程的變化。這些狀態(tài)隨著進程的執(zhí)行和外界條件的變化而轉(zhuǎn)換。
-
在三態(tài)模型中,進程狀態(tài)分為三個基本狀態(tài),即運行態(tài),就緒態(tài),阻塞態(tài)。
-
在五態(tài)模型中,進程分為新建態(tài)、終止態(tài),運行態(tài),就緒態(tài),阻塞態(tài)。
三態(tài)模型
一個進程從創(chuàng)建而產(chǎn)生至撤銷而消亡的整個生命期間,有時占有處理器執(zhí)行,有時雖可運行但分不到處理器、有時雖有空閑處理器但因等待某個事件的發(fā)生而無法執(zhí)行,這一切都說明進程和程序不相同,它是活動的且有狀態(tài)變化的,這可以用一組狀態(tài)加以刻畫。為了便于管理進程,一般來說,按進程在執(zhí)行過程中的不同情況至少要定義三種不同的進程狀態(tài):
(1)運行(running)態(tài):進程占有處理器正在運行。
(2)就緒(ready)態(tài):進程具備運行條件,等待系統(tǒng)分配處理器以便運行。
(3)等待(wait)態(tài):又稱為阻塞(blocked)態(tài)或睡眠(sleep)態(tài),指進程不具備運行條件,正在等待某個事件的完成。
通常,一個進程在創(chuàng)建后將處于就緒狀態(tài)。每個進程在執(zhí)行過程中,任意時刻當且僅當處于上述三種狀態(tài)之一。同時,在一個進程執(zhí)行過程中,它的狀態(tài)將會發(fā)生改變。引起進程狀態(tài)轉(zhuǎn)換的具體原因如下:
(1)運行態(tài)一一等待態(tài):等待使用資源或某事件發(fā)生,如等待外設(shè)傳輸;等待人工干預(yù)。
(2)等待態(tài)一一就緒態(tài):資源得到滿足或某事件己經(jīng)發(fā)生,如外設(shè)傳輸結(jié)束;人工干預(yù)完成。
(3)運行態(tài)一一就緒態(tài):運行時間片到,或出現(xiàn)有更高優(yōu)先權(quán)進程。
(4)就緒態(tài)一一運行態(tài):CPU空閑時被調(diào)度選中一個就緒進程執(zhí)行。
五態(tài)模型
在一個實際的系統(tǒng)里進程的狀態(tài)及其轉(zhuǎn)換比上節(jié)敘述的復雜一些,例如,引入專門的新建態(tài)(new)和終止態(tài)(exit )。
引入新建態(tài)和終止態(tài)對于進程管理來說是非常有用的。新建態(tài)對應(yīng)于進程剛剛被創(chuàng)建的狀態(tài),創(chuàng)建1個進程要通過兩個步驟,首先,是為一個新進程創(chuàng)建必要的管理信息;然后,讓該進程進入就緒態(tài)。此時進程將處于新建態(tài),它并沒有被提交執(zhí)行,而是在等待操作系統(tǒng)完成創(chuàng)建進程的必要操作。必須指出的是,操作系統(tǒng)有時將根據(jù)系統(tǒng)性能或主存容量的限制推遲新建態(tài)進程的提交。
類似地,進程的終止也要通過兩個步驟,首先,是等待操作系統(tǒng)進行善后;然后,退出主存。當一個進程到達了自然結(jié)束點,或是出現(xiàn)了無法克服的錯誤,或是被操作系統(tǒng)所終結(jié),或是被其他有終止權(quán)的進程所終結(jié),它將進入終止態(tài)。進入終止態(tài)的進程以后不再執(zhí)行,但依然保留在操作系統(tǒng)中等待善后。一旦其他進程完成了對終止態(tài)進程的信息抽取之后,操作系統(tǒng)將刪除該進程。引起進程狀態(tài)轉(zhuǎn)換的具體原因如下:
(1)NULL一一新建態(tài):執(zhí)行1個程序,創(chuàng)建一個子進程。
(2)新建態(tài)一一就緒態(tài):當操作系統(tǒng)完成了進程創(chuàng)建的必要操作,并且當前系統(tǒng)的性能和內(nèi)存的容量均允許。
(3)運行態(tài)一一終止態(tài):當1個進程到達了自然結(jié)束點,或是出現(xiàn)了無法克服的錯誤,或是被操作系統(tǒng)所終結(jié),或是被其他有終止權(quán)的進程所終結(jié)。
(4)終止態(tài)一一NULL:完成善后操作。
(5)就緒態(tài)一一終止態(tài):未在狀態(tài)轉(zhuǎn)換圖中顯示,但某些操作系統(tǒng)允許父進程終結(jié)子進程。
(6)等待態(tài)一一終止態(tài):未在狀態(tài)轉(zhuǎn)換圖中顯示,但某些操作系統(tǒng)允許父進程終結(jié)子進程。