[问题] 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