一、运行状态相关
进程在被CPU调度运行,等待CPU资源分配以及等待外部事件时会属于不同的状态。
通常进程活动时的状态以就绪态(TASK_RUNNING,进程能够运行但没得到许可,因为CPU分配为给另一个进程;调度器可以在下一次任务切换时选择该进程)、运行态(TASK_RUNNING,此进程正在执行)和睡眠等待(TASK_INTERRUPTIBEL或TASK_UNINTERRUPTIBLE,进程正在睡眠无法运行,因为它正在等待一个外部事件;调度器无法在下一次切换任务时选择该进程)居多。
一般来说,可运行的进程组织在运行队列中,而睡眠等待的进程根据不同的情况专门组织在针对某类事件的等待队列中(不等待任何事件的“纯睡眠”进程不进入任何等待队列,但一定会离开运行队列)。有一系列睡眠函数可以让进程从可运行状态变更为睡眠状态,也有另外一些唤醒函数可以让进程从睡眠状态变更为可运行状态(如果睡眠的进程没有进入等待队列,则不需要专门的唤醒操作)。
除了“睡眠”和“唤醒”,在进程管理里还有“冻结”和“解冻”的概念。冻结(freeze)就是一种非主动的强