进程的三种基本状态
    进程在运行中不断地改变其运行状态。通常,一个运行进程必须具有以下三种基本状态。

    就绪(Ready)状态
    当进程已分配到除CPU以外的所有必要的资源,只要获得处理机便可立即执行,这时的进程状态称为就绪状态。

    执行(Running)状态
    当进程已获得处理机,其程序正在处理机上执行,此时的进程状态称为执行状态。

    阻塞(Blocked)状态
    正在执行的进程,由于等待某个事件发生而无法执行时,便放弃处理机而处于阻塞状态。引起进程阻塞的事件可有多种,例如,等待I/O完成、申请缓冲区不能满足、等待信件(信号)等。

    image.png

    在Linux下,PCB是一个叫做task_struct的结构体之中。
    在Linux下,一个进程可以有七种不同的状态。

    R运行状态(running):并不意味着进程一定在运行中,它表明进程要么是在运行要么是在运行队列里。

    S睡眠状态(sleeping):意味着进程在等待事件完成(可中断睡眠)。

    D磁盘休眠状态(Disk sleep):也叫不可中断睡眠状态,在这个状态进程通常会等待IO的结束。

    T停止状态(stopped):可以通过发送SIGSTOP信号给进程来停止(T)进程。这个暂停的进程可以通过发送SIGCONT信号让进程继续运行(关于信号后面还会继续更新到相关内容)。

    X死亡状态(dead):这个状态只是一个返回状态,你不会在任务列表里看到这个状态。

    还有t(tracing stop)跟踪状态和Z(zombie)僵尸状态。

    僵尸状态是进程已经终止,但是还占用着系统中的资源没有释放,通常是父进程对其资源没有进行清理,这种状态对系统是有害的。直接使用kill杀不了僵尸进程,可以kill其父进程。

    原文链接:https://blog.csdn.net/zym1348010959/article/details/80644459