进程和线程的状态
一、進(jìn)程的基本狀態(tài)
進(jìn)程經(jīng)常討論的基本狀態(tài)為:就緒狀態(tài)(Ready)、運(yùn)行狀態(tài)(Running)、阻塞狀態(tài)(Blocked)。此外,還包括不常討論的創(chuàng)建和結(jié)束。
就緒狀態(tài):當(dāng)進(jìn)程已分配到除CPU以外的所有必要資源后,只要再獲得CPU,便可立即執(zhí)行,進(jìn)程這時(shí)的狀態(tài)稱為就緒狀態(tài)。在一個(gè)系統(tǒng)中處于就緒狀態(tài)的進(jìn)程可能有多個(gè),通常將它們排成一個(gè)隊(duì)列,稱為就緒隊(duì)列。
運(yùn)行狀態(tài):進(jìn)程已獲得CPU,其程序正在執(zhí)行。在單處理機(jī)系統(tǒng)中,只有一個(gè)進(jìn)程處于執(zhí)行狀態(tài); 在多處理機(jī)系統(tǒng)中,則有多個(gè)進(jìn)程處于執(zhí)行狀態(tài)。
阻塞狀態(tài):正在執(zhí)行的進(jìn)程由于發(fā)生某事件而暫時(shí)無(wú)法繼續(xù)執(zhí)行時(shí),便放棄處理機(jī)而處于暫停狀態(tài),亦即進(jìn)程的執(zhí)行受到阻塞,把這種暫停狀態(tài)稱為阻塞狀態(tài),有時(shí)也稱為等待狀態(tài)或封鎖狀態(tài)。致使進(jìn)程阻塞的典型事件有:請(qǐng)求I/O,申請(qǐng)緩沖空間等。通常將這種處于阻塞狀態(tài)的進(jìn)程也排成一個(gè)隊(duì)列。有的系統(tǒng)則根據(jù)阻塞原因的不同而把處于阻塞狀態(tài)的進(jìn)程排成多個(gè)隊(duì)列。
三種狀態(tài)的切換如下圖所示:
二、線程的基本狀態(tài)
線程的基本狀態(tài)包括:派生,阻塞,激活,調(diào)度,結(jié)束。
派生(New):線程在進(jìn)程內(nèi)派生出來(lái),它即可由進(jìn)程派生,也可由線程派生。
阻塞(Block):如果一個(gè)線程在執(zhí)行過(guò)程中需要等待某個(gè)事件發(fā)生,則被阻塞。
激活(Unblock):如果阻塞線程的事件發(fā)生,則該線程被激活并進(jìn)入就緒隊(duì)列。
調(diào)度(Schedule):選擇一個(gè)就緒線程進(jìn)入執(zhí)行狀態(tài)。
結(jié)束(Finish):如果一個(gè)線程執(zhí)行結(jié)束,它的寄存器上下文以及堆棧內(nèi)容等將被釋放。
五種狀態(tài)的切換如下圖所示:
總結(jié)
- 上一篇: 小葱头的功效与作用、禁忌和食用方法
- 下一篇: 进程间通信的方式总结