linux任务的几种状态

Linux任务状态详解

linux任务的几种状态

而我们用ps,top看到的任务状态还需要转一下

R:任务正在CPU上运行,或已获取除CPU外所有的资源,正在等待调度运行,当linux任务无法获取所需资源时,如通过软中断陷入内核态调用会引起阻塞的系统调用read,accept,epoll_wait,select等,不能继续运行下去时会在内核态改变自己的状态为阻塞态,然后进行任务切换

S:当阻塞可以被信号中断如net read,net write,accept,epoll_wait,select时就设状态为TASK_INTERRUPTIBLE也就是top看到的S状态

D:当陷入到内核态后完成相关操作时的阻塞不可以被信号中断,如当由于读写磁盘无法立即满足时,磁盘等待队列已经很长了,这时一个linux任务再发起一个disk read,而恰好此read所需的数据所在的磁盘block未被cache在文件系统的高速缓冲区,此linux任务就会被设为TASK_UNINTERRUPTIBLE等待磁盘驱动程序IO完成,也就是top看到的D状态,而此时iowait及系统负载也是很高的,而此状态其实并不只是包含disk sleep,disk sleep只是我们常见到的导致务状态是D一种情况,可能是历史原因最初OS只有磁盘读写会被设为TASK_UNINTERRUPTIBLE

T:被SIGSTOP信号暂停,strace跟踪,gdb调试时的状态

Z:当父进程未退出,子进程退出但父进程未忽略SIGCLD信号,时子进程的状态,在父进程收尸后状态会转变为X,如果父进程不及时调用wait收尸,系统会存在僵尸进程占用进程描述符

X:当父进程忽略SIGCLD信号,子进程退出时的状态

当一个S,D状态的linux任务已获取到所需资源如read到数据,accept到新连接,获取到锁时,就会从S,D状态转变为R状态,状态R代表任务正在CPU上运行或已经获取到所有除CPU外的所有资源,万事俱备只欠东风,只待被调度器选中调度到CPU上运行了

同样是read write,为什么net read wirte阻塞后是TASK_INTERRUPTIBLE,而被disk read wirte阻塞后是TASK_UNINTERRUPTIBLE?

Linux 中的进程状态是操作系统用来描述进程当前行为的一种机制,进程状态可以反映其是否正在运行、等待资源或已经终止等信息。以下是 Linux 中常见的进程状态及其含义: - **R(Running)**:表示进程正在运行或者处于运行队列中,等待 CPU 资源。这是进程活跃状态的一种体现,意味着进程随时可以执行或正在执行中[^3]。 - **S(Sleeping / Interruptible Sleep)**:表示进程处于可中断睡眠状态,正在等待某些事件的完成,例如等待 I/O 操作结束或者信号量的释放。在此状态下,进程可以被信号中断并重新调度执行[^3]。 - **D(Disk Sleep / Uninterruptible Sleep)**:表示进程处于不可中断睡眠状态,通常发生在等待 I/O 操作完成时,例如等待磁盘响应。在此状态下,进程不能被信号中断,必须等待资源释放才能继续运行[^4]。 - **T(Stopped)**:表示进程被暂停执行,通常是因为收到了 `SIGSTOP` 信号。该状态下的进程可以通过发送 `SIGCONT` 信号恢复执行。 - **t(Traced)**:表示进程正在被调试器追踪。当进程被调试时,它会在执行过程中暂停,等待调试器的进一步指示[^2]。 - **X(Dead / Exit)**:表示进程已经终止,即将被操作系统销毁。这是一个瞬时状态,通常不会在任务列表中看到处于此状态进程,因为系统会迅速清理这些进程[^3]。 - **Z(Zombie / Zombie State)**:表示进程已经执行完毕,但其父进程尚未读取其退出状态。僵尸进程不会消耗系统资源,但会占用进程表中的条目,直到父进程回收其状态为止。如果父进程没有回收,僵尸进程可能会一直存在。 此外,还有一些理论上的状态分类,如“运行”、“阻塞”、“挂起”等,这些状态是操作系统中通用的进程状态模型,但在 Linux 中具体实现时会有所不同。例如,运行状态对应于 R,阻塞状态可能对应于 S 或 D,而挂起状态则可能涉及 T 或 Z 状态[^1]。 以下是一个简单的代码示例,展示如何使用 `ps` 命令查看 Linux 中的进程状态: ```bash ps -eo pid,stat,comm ``` 该命令将列出所有进程的 PID、状态和名称。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值