在Linux中进程有哪几种状态,每种状态代表的含义是什么?
使用top -c 查看
R工作中的进程
S可中断的睡眠状态
I空闲状态(idle)
O进程正在处理器运行
B进程正在等待更多的内存页
D不可中断的睡眠状态
T暂停状态或跟踪状态
X出状态,进程即将被销毁
Z僵尸进程
1、TASK_RUNNING:(R)
进程当前正在运行,或者正在运行队列中等待调度。只有在该状态的进程才可能在CPU上运行,同一时刻可能有多个进程处于可执行状态。
2、TASK_INTERRUPTIBLE:(S)
进程处于睡眠状态,处于这个状态的进程因为等待某事件的发生(比如等待socket连接、等待信号量),而被挂起。当这些事件发生时,对应的等待队列中的一个或多个进程将被唤醒。一般情况下,进程列表中的绝大多数进程都处于TASK_INTERRUPTIBLE状态。进程可以被信号中断。接收到信号或被显式的唤醒呼叫唤醒之后,进程将转变为 TASK_RUNNING 状态。
3、TASK_UNINTERRUPTIBLE:(D)
不可中断的睡眠状态,此进程状态类似于 TASK_INTERRUPTIBLE,只是它不会处理信号。不可中断,指的是进程不响应异步信号,无法用kill命令关闭处于TASK_UNINTERRUPTIBLE状态的进程。中断处于这种状态的进程是不合适的,因为它可能正在完成某些重要的任务。 当它所等待的事件发生时,进程将被显式的唤醒呼叫唤醒。可处理signal, 有延迟
4、TASK_STOPPED:
进程已中止执行,它没有运行,并且不能运行。接收到 SIGSTOP 和 SIGTSTP 等信号时,进程将进入这种状态。接收到 SIGCONT 信号之后,进程将再次变得可运行。
5、TASK_TRACED:(T)
正被调试程序等其他进程监控时,进程将进入这种状态。
6、EXIT_ZOMBIE:(Z)
进程已终止,它正等待其父进程收集关于它的一些统计信息。不可被kill, 即不响应任务信号, 无法用SIGKILL杀死
7、EXIT_DEAD:(X)
最终状态(正如其名)。将进程从系统中删除时,它将进入此状态,因为其父进程已经通过 wait4() 或 waitpid() 调用收集了所有统计信息。EXIT_DEAD状态是非常短暂的,几乎不可能通过ps命令捕捉到。
8、TASK_KILLABLE:
Linux® kernel 2.6.25 引入了这种进程状态,用于将进程置为睡眠状态,它可以替代有效但可能无法终止的 TASK_UNINTERRUPTIBLE 进程状态,以及易于唤醒但更加安全的 TASK_INTERRUPTIBLE 进程状态
原文链接:https://blog.csdn.net/drdairen/article/details/52518035
网友评论