Linux 进程状态

Linux进程状态详解

1.Linux系统的的主要状态

Linux进程的主要态度分为

"R (running)", /* 0 /

"S (sleeping)", / 1 /

"D (disk sleep)", / 2 /

"T (stopped)", / 4 /

"t (tracing stop)", / 8 /

"X (dead)", / 16 /

"Z (zombie)", / 32 */

1.Running

running 也就是运行态

我们先来写一个代码让他跑起来

我们发现这个代码在跑的时候 是running状态

也就是运行状态

2.Sleeping

sleeping状态也就是可中断休眠状态状态

我们把代码做一点改变

再运行我们发现这个时候跑的这个代码的的进程不是running态而是sleeping态了

为什么这个时候代码是sleeping态

我们printf本质上是从内存读取数据输入到显示器

但是每次输出到显示器上

显示器需要准备一点时间  

所以这个时候进程是可中断休眠的状态

等显示器准备好再输出到显示器上

我们运算器的速度很快所以我们基本很难查看到

内存输入到显示器的那一刻(也就是running态)

所以我们读到的大多数是进程可中断休眠显示器准备的时候

也就是sleeping态

3.Disk sleep

Disk sleep状态也就是不可中断睡眠状态

这个状态不好演示

举个例子

我们从内存往磁盘内写如数据

但是磁盘是外存速度比内存慢很多

这个时候磁盘要写入(期间进程属于休眠状态)

写入完后 要告诉进程 结束进程

但是这个时候呢 操作系统发现进程太多 快要爆掉了

于是操作系统就把这个进程杀死

但是这个时候磁盘写完了 回去找进程 找不到进程

这个时候会出现问题

就是这个数据丢失了 如果说这个数据特别重要怎办???

所以就有了 disk sleep这个状态 就是告诉操作系统

我这个进程很重要 虽然在休眠 但是你也不能杀死我

不然会出大事

正常情况下非常罕见(IO 完成速度快,进程很快会退出 D 状态)。

若长期存在 D 状态进程,通常暗示 IO 子系统异常(如磁盘故障、远程文件系统挂载失效),需排查硬件或存储问题(如用 iostat 分析磁盘 IO 瓶颈)。

4.Stopped

我们之前学过杀死进程kill  -9 是杀死进程

但是kill还要有其他很多作用

我们可以通过kill -l查看

其中 18 和  19分别是暂停进程和开始进程

当进程被暂停的时候状态就是stopped(T)

至于+号后面会解释

5.Tracing stop

当我们使用gdb调试代码的时候

在断点的时候停下来 进程就是tracing_stop态

6.Dead

当一个进程运行结束的时候

父进程要对这个进程的数据进行处理

处理结束后这个进程就是dead态也就是死亡态

由于死亡态是一个瞬间的状态 不方便演示

7.Zombie

Zombie态 也就是将亡态 当一个进程结束后未处理的时候就是Zombie态

我们来写一个验证的代码 当子进程结束后  父进程没结束 这个时候子进程的状态是不是zombie态

exit(0)的意思是退出进程

我们发现和我们预想的一模一样

当子进程结束后 父进程未对子进程进行处理 此时子进程的状态是zombie态

那么如果父进程先exit 子进程会怎么样???

我们发现 当父进程结束的时候 子进程不会死亡

但是子进程的父进程会变成PID为1的进程

也成为孤儿进程

zombie进程的危害

进程的退出状态必须被维持下去,因为他要告诉关心它的进程(父进程),你交给我的任务,我办的怎么样了。

可父进程如果一直不读取,那子进程就一直处于 Z 状态?是的! 维护退出状态本身就是要用数据维护,也属于进程基本信息,所以保存在 task_struct (PCB) 中,换句话说,Z 状态一直不退出,PCB 一直都要维护?

是的! 那一个父进程创建了很多子进程,就是不回收,是不是就会造成内存资源的浪费?是的!因为数据结构对象本身就要占用内存,想想 C 中定义一个结构体变量(对象),是要在内存的某个位置进行开辟空间!

内存泄漏?是的!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值