linux0.11进程是如何进行状态切换的?是如何进入..
时间:2007-04-10 来源:pywj777
linux0.11 进程是如何进行状态切换的?是如何进入某种状态睡眠并又被唤醒的?
(1) 答:进程是通过进程描述符数据结构中任务运行状态字段state来决定当前进程处于何种状态的。当进程切换时,只会选择运行状态为就绪状态的进程(这也解释了为什么睡眠中的进程不会占用CPU时间片)。
(2) 当进程想睡眠在某种状态时它会调用sleep_on()将自己加入到这种状态的队列中,并将状态字段state改为睡眠状态,然后调用schedule()切换至其它进程运行。
(3) 当调用wake_up()唤醒某种状态睡眠等待队列中进程时,只是简单将该队列中第一个进程的状态改为就绪状态后就返回。这样调度函数schedule()在以后会调用这个进程执行。当这个进程被唤醒后仍在sleep_on()中执行,并在返回前将该队列中下一个进程状态改为就绪状态,这样就能将够睡眠在该状态队列中的进程全部都唤醒。
相关阅读 更多 +