掛起程序在作業系統中可以定義為暫時被淘汰出記憶體的程序,機器的資源是有限的,在資源不足的情況下,作業系統對在記憶體中的程式進行合理的安排,其中有的程序被暫時調離出記憶體,當條件允許的時候,會被作業系統再次調回記憶體,重新進入等待被執行的狀態即就緒態.
引起掛起狀態的原因有如下幾方面:
(1)終端使用者的請求。當終端使用者在自己的程式執行期間發現有可疑問題時,希望暫停使自己的程式靜止下來。亦即,使正在執行的程序暫停執行;若此時使用者程序正處於 就緒狀態而未執行,則該程序暫不接受排程,以便使用者研究其執**況或對程式進行修改。我們把這種靜止狀態成為「掛起狀態」。
(2)父程序的請求。有時父程序希望掛起自己的某個子程序,以便考察和修改子程序,或者協調各子程序間的活動。
(3)負荷調節的需要。當實時系統中的工作負荷較重,已可能影響到對實時任務的控制時,可由系統把一些不重要的程序掛起,以保證系統能正常執行。
(4)作業系統的需要。作業系統有時希望掛起某些程序,以便檢查執行中的資源使用情況或進行記賬。
(5)對換的需要。為了緩和記憶體緊張的情況,將記憶體中處於阻塞狀態的程序換至外存上。
程序的掛起與阻塞
阻塞是由於程序所需資源得不到滿足,並會最終導致程序被掛起 程序掛起的原因並不一定是由於阻塞,也有可能是時間片得不到滿足,掛起狀態是程序從記憶體排程到外存中的一種狀態,若在就緒態時,從記憶體調出到外存中,就是就緒掛起態,若在阻塞態時,從記憶體調出到外存中,就轉換成了阻塞掛起態 掛起 一般是主動的,由系...
睡眠 掛起 阻塞
執行緒從建立 執行到結束總是處於下面五個狀態之一 新建狀態 就緒狀態 執行狀態 阻塞狀態及死亡狀態。下圖是使用時間片輪轉法的作業系統程序的狀態和它們之間的轉換。掛起和睡眠是主動的,掛起恢復需要主動完成,睡眠恢復則是自動完成的,因為睡眠有乙個睡眠時間,睡眠時間到則恢復到就緒態。而阻塞是被動的,是在等待...
程序 執行緒 阻塞 掛起
阻塞與掛起 非同步訊息對列讀取 object 類中 wait,notify 與 notifyall 方法可以用來實現執行緒之間的排程,比如在阻塞佇列 blockingqueue 的實現中,如果隊列為空,則所有消費者執行緒進行阻塞 wait 如果某乙個時刻佇列中新新增了乙個元素,則需要喚醒某個或所有阻...