Linux第十三节 — 进程状态详解

        只要一个进程的PCB还存在内存当中,哪怕此时该进程对应的代码和数据已经在磁盘当中,此时依然认为该进程仍然存在!

一、Linux进程的运行状态R

接下来我们看下面这个例子:

当我们执行这个程序的时候,我们认为该进程的状态应该是R,即一直运行,但是实际上却是S! 

如果我们此时将打印注释会变成什么呢?

 此时该进程则会一直变为运行态!

这是因为我们最初的代码包含printf函数,该函数需要访问我们对应的io设备,即显示器设备!此时设备不一致能直接进行打印,因此该进程很大概率需要等待!

R进程和R+进程的区别

  1. R (Running/Runnable)
    表示进程处于可执行状态,即正在CPU上运行或位于运行队列中等待调度。此时进程可能是后台进程,无法直接通过Ctrl+C等终端信号中断。

  2. R+ (Running & Foreground)
    在R的基础上,+符号表示进程属于前台进程组。这类进程可以接收终端的输入(如键盘信号),例如通过Ctrl+C终止或Ctrl+Z暂停。

一般默认的进程是在前台运行的,如果我们想要通过使用后台运行,可以在其增加&;

此时如果我们想要杀死后台程序,ctrl + c已经无效了,只能通过kill -9 来杀死;

二、Linux进程的睡眠状态S

Linux中具体的阻塞状态就是S状态!

上面两个代码对应的进程都需要从对应的IO设备获取相应的资源! 

大部分的情况下bash命令行的状态也是S!

因为要等待资源输入!(等待键盘输入对应的指令!)

S也被称为浅度睡眠 --- 随时可以对外界的动作做出具体的反应:可以唤醒或者kill

三、Linux进程的深度睡眠状态D(disk sleep)

不可中断睡眠状态(D - Uninterruptible Sleep)(deepseek)

  • 含义:进程因关键操作(如磁盘I/O)进入深度休眠,不响应任何信号 。
  • 特点
    • 常见于与硬件交互的短暂过程(如vfork后父进程等待子进程exit) 。
    • 无法通过kill终止,需等待操作完成或重启系统 。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一道秘制的小菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值