作者mingcloud (逆宇)
看板CSSE
标题[问题] OS - Process State Machine
时间Wed Aug 8 12:22:16 2012
最近在想一个问题
恐龙本的 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
1F:推 mars90226:我觉得是block,维基上写not runnable state 08/08 12:39
2F:→ mars90226:很明显应该不是ready,而run的话,则浪费CPU 08/08 12:40
3F:推 mars90226:usleep一定要停止某段时间,pthread_yield应该是移到 08/08 12:49
4F:→ mars90226:ready queue里面,CPU再从ready queue抓一个来执行 08/08 12:50
5F:推 ggg12345:Call Sleep显然是system call,就是被OS抢走,答案很明显啦 08/08 17:26
6F:→ ggg12345:pthread_yield是让出cpu给同process里的其他thread执行. 08/08 20:31