解釋
挂起狀态是一種靜止的狀态,相當于把某個進程從執行的流水線上拿出來,等到需要的時候再把它放進去繼續執行。我們來看前三種基本狀态,就緒->執行->阻塞,阻塞完畢又回到就緒。
由于線程的異步性,阻塞是會在不确定的有限時間内結束的。就是說,三種基本狀态是動态的,通常不存在一個線程一直處于某種狀态。挂起狀态相對于它們來說,是靜止的,因為它是被控制的,是對以不可預知的速度前進的線程的一種幹擾。
原因
引起挂起狀态的原因有如下幾方面:
(1)終端用戶的請求。當終端用戶在自己的程序運行期間發現有可疑問題時,希望暫停使自己的程序靜止下來。亦即,使正在執行的進程暫停執行;若此時用戶進程正處于就緒狀态而未執行,則該進程暫不接受調度,以便用戶研究其執行情況或對程序進行修改。我們把這種靜止狀态稱為“挂起狀态”。
(2)父進程的請求。有時父進程希望挂起自己的某個子進程,以便考察和修改子進程,或者協調各子進程間的活動。
(3)負荷調節的需要。當實時系統中的工作負荷較重,已可能影響到對實時任務的控制時,可由系統把一些不重要的進程挂起,以保證系統能正常運行。
(4)操作系統的需要。操作系統有時希望挂起某些進程,以便檢查運行中的資源使用情況或進行記賬。