进程的状态

本文详细解析了Linux进程的不同状态,包括R(运行)、S(睡眠)、D(磁盘休眠)、T(暂停)和Z(僵尸)状态。通过示例代码展示了如何通过命令观察进程状态变化,同时介绍了孤儿进程的处理以及kill命令的使用,如暂停、继续进程等。此外,还讨论了运行队列和等待队列的概念。
摘要由CSDN通过智能技术生成

在这里插入图片描述
如上,这是一幅常见的进程执行状态的示意图,在进程控制块一节中讲过进程的状态信息存储在task_struct也就是PCB 中。

意义

进程状态的意义:方便操作系统快速判断进程,完成特定的功能,比如调度,本质是一种分类

具体状态

R:运行态,不一定正在占用CPU: 并不意味着进程一定在运行中,它表明进程要么是在运行中要么在运行队列里
S:睡眠状态,意味着进程在等待事件完成(这里的睡眠有时候也叫做可中断睡眠
D:磁盘休眠状态:有时候也叫不可中断睡眠状态(uninterruptible sleep),在这个状态的 进程通常会等待IO的结束,进程如果处于D状态,不可被杀掉。
T:暂停状态,彻底的暂时进程的数据不会更新
t:追踪状态
X:死亡状态,死亡需要回收进程资源
Z:僵尸状态,为什么要有僵尸状态,为了辨别退出死亡原因,进程退出的信息(在task_struct),正常程序退出先进入Z状态把进程退出信息保存到PCB当中,再进入X死亡状态退出

状态演示

R状态

测试代码如下:

#include<unistd.h>
#include<unistd.h>
int main()
{
   
  while(1)
  {
   
  }
  return 0;
}

使用
while :; do ps axj | head -1 && ps axj | grep test ; sleep 1; echo "###########################";done,该命令进行监控程序运行情况。
在这里插入图片描述
可以看到当前进程处于运行状态,后面的+代表在前台运行

S状态

测试代码如下:

#include<stdio.h>
#include<unistd.h>
int 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值