看板 Grad-ProbAsk 關於我們 聯絡資訊
最近在想一個問題 恐龍本的 Process State Machine 應該有五個 分別是 New, Ready(載入記憶體中), Run(搶到CPU), Block (I/O 或者被 OS 搶走CPU) , Terminated(Normal 結束 或是有異常發生) 今天如果有一個Process搶到CPU之後 Call Sleep 的話, 那在他Sleep 的這段時間,Process的狀態會是 1. Ready 2. Run (還是佔住CPU,等時間到再繼續執行) 3. Block (先Blocked 住,等Timer結束之後再發一個Interrupt把他叫醒) 請問大家覺得比較是哪一種可能? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.23.188.78
christianSK:sleep表示他在等某項資源吧 這樣就是到ready了吧 08/08 14:40
christianSK:sorry 說錯應該是block 08/08 14:40
christianSK:我覺得未必是timer結束被叫醒, 應該是資源來了叫他 08/08 14:40
christianSK:回到ready這樣吧 08/08 14:40
bill09218:block 等I/O做完後或是搶他優先的event完成後 再回ready 08/08 16:40
bill09218:queue, 讓short term scheduler排他的順序 08/08 16:45
mingcloud:我這邊的SLEEP是指一般寫code 的sleep喔 08/08 17:59
mingcloud:所以一定要有timer 才會知道sleep結束了 08/08 18:00
bouwhat:blocked~7state裡面好像是這樣寫的 08/10 20:31
wheels:這是看implement要用busy waiting還是不用來決定的,你可以 08/18 04:26
wheels:把你library裡面sleep的code拿出來看阿XD 08/18 04:26