[問題] OS - Process State Machine

作者: mingcloud (逆宇)   2012-08-08 12:22:16
最近在想一個問題
恐龍本的 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 的差別是甚麼?
作者: mars90226 (火星人)   2012-08-08 12:39:00
我覺得是block,維基上寫not runnable state很明顯應該不是ready,而run的話,則浪費CPUusleep一定要停止某段時間,pthread_yield應該是移到ready queue裡面,CPU再從ready queue抓一個來執行
作者: ggg12345 (ggg)   2012-08-08 17:26:00
Call Sleep顯然是system call,就是被OS搶走,答案很明顯啦pthread_yield是讓出cpu給同process裡的其他thread執行.

Links booklink

Contact Us: admin [ a t ] ucptt.com