我对 unistd.h 中声明的 sleep 函数有疑问
假设我们使用 CFS 调度程序。
我们有一个准备好运行的进程(我们称之为“READY”状态),它被选中运行,现在正在运行(所谓的“RUNNING”状态)。
在 RUNNING 状态下执行期间,它遇到了一个 sleep 语句,比如 sleep(10) ,它使它休眠 10 秒或直到信号被传递或以较早者为准。
现在,当 sleep(10) 正在执行时,进程是处于 READY 状态还是将其放回到 RUNNING 队列中的原始优先级,还是放入 WAIT 队列。
我无法想象正确的事件序列。一个思考过程表明它保留在 READY 队列中,而另一个想法是它被放入等待队列等待某种计时器到期。
请让我知道这将如何工作,或者我的问题是否有问题。谢谢