[理工] [OS] Process State Machine

看板Grad-ProbAsk作者 (逆宇)時間13年前 (2012/08/08 12:21), 編輯推噓5(506)
留言11則, 5人參與, 最新討論串1/1
最近在想一個問題 恐龍本的 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

08/08 14:40, , 1F
sleep表示他在等某項資源吧 這樣就是到ready了吧
08/08 14:40, 1F

08/08 14:40, , 2F
sorry 說錯應該是block
08/08 14:40, 2F

08/08 14:40, , 3F
我覺得未必是timer結束被叫醒, 應該是資源來了叫他
08/08 14:40, 3F

08/08 14:40, , 4F
回到ready這樣吧
08/08 14:40, 4F

08/08 16:40, , 5F
block 等I/O做完後或是搶他優先的event完成後 再回ready
08/08 16:40, 5F

08/08 16:45, , 6F
queue, 讓short term scheduler排他的順序
08/08 16:45, 6F

08/08 17:59, , 7F
我這邊的SLEEP是指一般寫code 的sleep喔
08/08 17:59, 7F

08/08 18:00, , 8F
所以一定要有timer 才會知道sleep結束了
08/08 18:00, 8F

08/10 20:31, , 9F
blocked~7state裡面好像是這樣寫的
08/10 20:31, 9F

08/18 04:26, , 10F
這是看implement要用busy waiting還是不用來決定的,你可以
08/18 04:26, 10F

08/18 04:26, , 11F
把你library裡面sleep的code拿出來看阿XD
08/18 04:26, 11F
文章代碼(AID): #1G8Ub6QV (Grad-ProbAsk)