**:
作業系統中睡眠、阻塞、掛起的區別形象解釋:
首先這些術語都是對於執行緒來說的。對執行緒的控制就好比你控制了乙個雇工為你幹活。你對雇工的控制是通過程式設計來實現的。
掛起執行緒的意思就是你對主動對雇工說:「你睡覺去吧,用著你的時候我主動去叫你,然後接著幹活」。
使執行緒睡眠的意思就是你主動對雇工說:「你睡覺去吧,某時某刻過來報到,然後接著幹活」。
執行緒阻塞的意思就是,你突然發現,你的雇工不知道在什麼時候沒經過你允許,自己睡覺呢,但是你不能怪雇工,肯定你 這個雇主沒注意,本來你讓雇工掃地,結果掃帚被偷了或被鄰居家借去了,你又沒讓雇工繼續幹別的活,他就只好睡覺了。至於掃帚回來後,雇工會不會知道,會不會繼續幹活,你不用擔心,雇工一旦發現掃帚回來了,他就會自己去幹活的。因為雇工受過良好的培訓。這個培訓機構就是作業系統。
掛起程序在作業系統中可以定義為暫時被淘汰出記憶體的程序,機器的資源是有限的,在資源不足的情況下,作業系統對在記憶體中的程式進行合理的安排,其中有的程序被暫時調離出記憶體,當條件允許的時候,會被作業系統再次調回記憶體,重新進入等待被執行的狀態即就緒態,系統在超過一定的時間沒有任何動作.
引起掛起狀態的原因有如下幾方面:
(1)終端使用者的請求。當
終端使用者在自己的程式執行期間發現有可疑問題時,希望暫停使自己的程式靜止下來。亦即,使正在執行的程序暫停執行;若此時使用者程序正處於
就緒狀態而未執行,則該程序暫不接受排程,以便使用者研究其執**況或對程式進行修改。我們把這種靜止狀態成為「
掛起狀態」。
(2)父程序的請求。有時
父程序希望
掛起自己的某個子程序,以便考察和修改子程序,或者協調各子程序間的活動。
(3)負荷調節的需要。當實時系統中的工作負荷較重,已可能影響到對實時任務的控制時,可由系統把一些不重要的程序
掛起,以保證系統能正常執行。
(4)作業系統的需要。作業系統有時希望
掛起某些程序,以便檢查執行中的資源使用情況或進行記賬。
(5)對換的需要。為了緩和記憶體緊張的情況,將記憶體中處於
阻塞狀態的程序換至外存上。
程序的阻塞和掛起的區別
程序的阻塞和掛起的區別 理解一 掛起是一種主動行為,因此恢復也應該要主動完成,而阻塞則是一種被動行為,是在等待事件或資源時任務的表現,你不知道他什麼時候被阻塞 pend 也就不能確切 的知道他什麼時候恢復阻塞。而且掛起佇列在作業系統裡可以看成乙個,而阻塞佇列則是不同的事件或資源 如訊號量 就有自己的...
程序的阻塞和掛起的區別
作業系統中睡眠 阻塞 掛起的區別形象解釋 首先這些術語都是對於執行緒來說的。對執行緒的控制就好比你控制了乙個雇工為你幹活。你對雇工的控制是通過程式設計來實現的。掛起執行緒的意思就是你對主動對雇工說 你睡覺去吧,用著你的時候我主動去叫你,然後接著幹活 使執行緒睡眠的意思就是你主動對雇工說 你睡覺去吧,...
阻塞和掛起的區別
阻塞 如果乙個任務當前正在等待某個外部事件的話就說它處於阻塞態,比如說如果某個任務調 用了函式 vtaskdelay 的話就會進入阻塞態,直到延時週期完成。任務在等待佇列 訊號量 事 件組 通知或互斥訊號量的時候也會進入阻塞態。任務進入阻塞態會有乙個超時時間,當超過 這個超時時間任務就會退出阻塞態,...