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