[問題] OS - Process State Machine

看板CSSE (電腦科學及軟體工程)作者 (逆宇)時間11年前 (2012/08/08 12:22), 編輯推噓3(303)
留言6則, 2人參與, 最新討論串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把他叫醒) 請問大家覺得比較是哪一種可能? 另外問一個問題, pthread_yield 跟 usleep 的差別是甚麼? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.23.188.78

08/08 12:39, , 1F
我覺得是block,維基上寫not runnable state
08/08 12:39, 1F

08/08 12:40, , 2F
很明顯應該不是ready,而run的話,則浪費CPU
08/08 12:40, 2F

08/08 12:49, , 3F
usleep一定要停止某段時間,pthread_yield應該是移到
08/08 12:49, 3F

08/08 12:50, , 4F
ready queue裡面,CPU再從ready queue抓一個來執行
08/08 12:50, 4F

08/08 17:26, , 5F
Call Sleep顯然是system call,就是被OS搶走,答案很明顯啦
08/08 17:26, 5F

08/08 20:31, , 6F
pthread_yield是讓出cpu給同process裡的其他thread執行.
08/08 20:31, 6F
文章代碼(AID): #1G8UbxMe (CSSE)
文章代碼(AID): #1G8UbxMe (CSSE)