怎樣理解執行緒的睡眠,掛起,和阻塞?

時間 2021-06-03 00:48:34

1樓:「已登出」

補樓上這個問題一定要緊貼棧來看

1.乙個執行緒對應乙個呼叫棧呼叫棧用屁股想想也知道是記憶體當然棧的執行對應一組暫存器

2.函式是否執行就看其是否入棧當然伴隨各種引數和臨時變數

3.是否入棧和是否可以入棧當然是有區別的入棧操作由CPU的執行所以要占用CPU 不入棧就不占用CPU 程式的執行過程實際上就是CPU維護呼叫棧和有關量

4.先不管這些區別有一點是顯而易見的就是這些都不能繼續執行!!!也就是沒有再繼續入棧

6.樓上的圖很明確掛起和記憶體排程沒有關係因為即使你主動暫停了程式執行你的那些量在棧中依然存在如果置出記憶體我TM 訪問硬碟位址去找量? 寫書的是SB 資料結構定義和國際都不同所以你不用來講權威

7.記憶體排程通常發生於記憶體不夠現在的電腦你記憶體不夠嗎你除錯時不用掛起嗎記憶體夠你換來換去圖個啥???

2樓:祖春雷

不算太懂,試著回答一下!

排程的本質就是cpu從執行佇列中選擇乙個執行緒(控制塊)去執行。

如果執行緒由於乙個條件沒有滿足無法執行時,就會從執行佇列中移除加入到乙個等待佇列中,當條件滿足時就會產生乙個事件使執行緒從等待佇列中移除加入到執行佇列中重新開始排程執行。

而我認為:執行緒加入等待佇列的這一操作就是執行緒掛起。

而阻塞和睡眠是執行緒加入兩類等待佇列的結果!

阻塞是等待乙個中斷事件的到來,睡眠是等待乙個超時事件的到來!

3樓:

執行緒從建立、執行到結束總是處於下面五個狀態之一:新建狀態、就緒狀態、執行狀態、阻塞狀態及死亡狀態。

下圖是使用時間片輪轉法的作業系統程序的狀態和它們之間的轉換。

掛起和睡眠是主動的,掛起恢復需要主動完成,睡眠恢復則是自動完成的,因為睡眠有乙個睡眠時間,睡眠時間到則恢復到就緒態。而阻塞是被動的,是在等待某種事件或者資源的表現,一旦獲得所需資源或者事件資訊就自動回到就緒態。

睡眠和掛起是兩種行為,阻塞則是一種狀態。

作業系統中睡眠、阻塞、掛起的區別形象解釋:

首先這些術語都是對於執行緒來說的。對執行緒的控制就好比你控制了乙個雇工為你幹活。你對雇工的控制是通過程式設計來實現的。

掛起執行緒的意思就是你對主動對雇工說:「你睡覺去吧,用著你的時候我主動去叫你,然後接著幹活」。

使執行緒睡眠的意思就是你主動對雇工說:「你睡覺去吧,某時某刻過來報到,然後接著幹活」。

執行緒阻塞的意思就是,你突然發現,你的雇工不知道在什麼時候沒經過你允許,自己睡覺呢,但是你不能怪雇工,肯定你這個雇主沒注意,本來你讓雇工掃地,結果掃帚被偷了或被鄰居家借去了,你又沒讓雇工繼續幹別的活,他就只好睡覺了。至於掃帚回來後,雇工會不會知道,會不會繼續幹活,你不用擔心,雇工一旦發現掃帚回來了,他就會自己去幹活的。因為雇工受過良好的培訓。

這個培訓機構就是作業系統。

沒有床之前人類的睡眠姿勢和環境是怎樣的?

netkiller 相比動物,雖然我們有了床,有了房子,但是人類的睡眠糟透了。我們難以回到動物狀態的自然睡眠,據說全世界有1 3的人有睡眠健康問題。netkiller 程式猿你失眠嗎? 趙泠 260萬 200萬年前,原始人一般是睡在樹上,根據樹的規模趴著或躺著,而且可能會築巢 現代的黑猩猩就可以折下...

怎樣理解生命和生活?他們的關係是怎樣的?

生命似乎無法去選,如上帝擲出的骰子,是什麼就是什麼,如相貌 出身!但生活卻可以選。從居住環境 職業 朋友到觀念 心態 認知都可以選,可以重組 變更 提公升。所以接受那些不可能改變的,成為乙個樂觀豁達的人 改變那些可以改變的,讓自已向上向善,向死而生!活著就擁有生命,活得有尊嚴 有價值,享受世間美好的...

怎樣理解和評價史鐵生的《務虛筆記》

說實話 不好看。前半部分還可以,有些句子還可以,後面就不好看了 不是說作者如何,也不是說語言如何,只是文字,感覺很多廢話 讀到後面可讀性真的很低,感覺沒有邏輯,一片混亂,太過於浪漫主義,讀著讓人心浮氣躁,讓人厭煩。 安靜 或許那只白色的鳥兒,是我們每個人內心的孤獨。而那根飄逸冷峻的白色羽毛,是由孤獨...