- 进程首先在 cpu 初始化或者 sys_fork 的时候被创建,当为该进程分配了一个进程控制块之后,该进程进入 uninit态(在proc.c 中 alloc_proc)。
- 当到达调度点时,由调度器 sched_class 根据运行队列rq的内容来判断一个进程是否应该被运行,即把处于runnable态的进程转换成running状态,从而占用CPU执行。
- sleeping态的进程被wakeup变成runnable态的进程。
- 所有从runnable态变成其他状态的进程都要出运行队列,反之,被放入某个运行队列中。