linux 进程运行状态
1.运行状态(TASK_RUNNING),在linux中,程序如果正在运行,则为运行态,如果正在执行内核的程序则为内核运行态,如果正在执行
用户程序,则为用户运行态,等待运行的代码叫就绪态,这三个状态(如图中标号为0的状态),归类为TASK_RUNNING状态。当一个进
程刚被创建后就处于本状态中,为就绪态
2.可中断睡眠状态(TASK_INTERRUPTIBLE),可以理解为挂起状态,如果系统产生一个中断或者释放了进程正在等待的资源,或者进程
收到一个信号,都可以唤醒进程
3.不可中断睡眠状态(TASK_INTERRUPTIBLE),除了不会因为收到信号而被唤醒,该状态与可中断睡眠状态类似。但出于该睡眠状态的
进程只有被使用wake_up() 函数明确唤醒时才能转换到就绪态
4.暂停状态(TASK_STOPPED),当进程收到SIGSTOP、SIGTSTP、SIGTTIN、或SIGTTOU时就会进入暂停状态。可向其发送
SIGCONT信号来让进程转换到可运行状态。
5.僵死状态(TASK_ZOMBLE),当进程已经停止运行,但其父进程还没有调用wait()询问其状态时,则该进程处于僵死状态。为了让父进
程能够获取其停止运行的信息,此时子进程的任务数据结构还需要保留着。一旦父进程调用了wait()取得了子进程的信息,则处于该
状态进程的任务数据结构就会被释放