Linux-进程(三)进程的孤儿状态和僵尸状态

一、

1、首先创建一个简单的文件,我们来运行

进程状态信息如下图:

但是显示的状态是S。

此时需要改一下源文件,把这个先注释掉。

此时,状态变为了'R',如下图:

原因如下:

如果进程卡顿,输入"kill -9 进程pid"就可以杀掉进程。这是发送信号。

进程状态后的 ' +'的意思是这个进程是前台进程,后台进程不带' + '号。

进程状态:

1、R(运行状态) :running

2、S (sleeping):休眠状态,可被终端休眠(浅度睡眠)---阻塞状态

3、D(disk sleep):Linux特有的状态,休眠状态,不可被中断休眠(深度睡眠);不可以被OS或信号杀掉。---阻塞状态

4、T(stopped)停止 "kill -19 进程pid"---强制暂停/冻结进程,进程状态变为T, :进程立刻不动了;不占CPU;不能被程序忽略。

'kill-18 进程pid"---继续/恢复进程,把刚才的冻住的进程唤醒, 变会R或S状态;继续正常运行。

5、x(dead),消亡状态

,进程彻底没了;内核正在回收它的资源,几乎永远看不到,一闪就没。

6、z(僵尸状态) :zombie

当进程消亡时先进入Z(僵尸)状态,然后才能进入x(死亡)状态,之后delete掉资源

僵尸状态:

子进程已经结束,但是父进程没有调用 wait() ,waitpid(),等函数,去"收尸",内核只能保留他的进程描述符(PCB)。

先建造一个鸡蛋的代码。引出话题

输入:ps axj | head -1 && ps axj | grep myprocess(文件名)。查看进程状态。

杀掉子进程:kill -9

此时只有父进程运行。

如下图,子进程进入z(僵尸状态)。

这个圈住的defunct是无效的意思。

孤儿进程:

父进程提前退出,子进程就是孤儿进程。系统会立刻把它交给Init 领养, init会一直管他,等他结束,自动回收,不会变僵尸。

问题1:进程退出了,退出信息是什么?

main 函数的返回值 或者是进程退出时收到的信号值。

问题2:进程退出了,退出信息保存在哪里?

答:被保存在进程自己的task_struct结构体中。

问题3:检测z状态进程,回收z状态进程,本质是在做什么?

答:本质是在系统中识别出那些已经终止的、但是父进程尚未回收其退出信息的僵尸进程。

问题4:具体怎么回收/谁来回收?

父进程 -> 系统调用

z(僵尸状态)。指的是只保留进程的task_struct,未来让父进程 或 OS帮我们获取到子进程的退出数据。

一直不回收子进程,永远处于Z状态,task_struct 不会被释放,占据内存空间。此时,就会发生内存泄漏。

常驻内存的进程就叫:常驻进程------>会导致内存泄露

相关推荐
DLYSB_6 小时前
存储运维实战:基于 Ceph Event 监听与 Python 适配器的分布式存储健康度物理声光响应架构
运维·ceph·python·报警灯
爱丶狸7 小时前
Grafana_Zabbix_ImageRenderer_部署与前端操作手册
linux·前端·zabbix·grafana·kylin
阿里云云原生8 小时前
可用性从 99.9% 跃升至 99.995%:畅捷通如何用 AI 重塑运维底座?
运维·网络·人工智能
k4m7v2pz8 小时前
把 Bevy 0.14 游戏移植到 R36S 掌机:一场与“无窗口系统“的搏斗
linux·rust·bevy·r36s·rk3326·开源掌机
阿童木写作8 小时前
Python实现Temu图片批量翻译自动化教程
运维·人工智能·python·自动化
iori97king9 小时前
库存不足自动通知:第一次使用自动化
运维·自动化
@insist1239 小时前
信息系统管理工程师-信息系统运维资源、技术与智能运维核心考点解析
运维·软考·信管·软件水平考试·信息系统管理工程师
木子欢儿9 小时前
Intel 架构的 MacBook Pro 运行 Linux 发热量高解决
linux·运维·服务器
KKKlucifer12 小时前
运营商全域安全运维支撑体系落地实践
运维·安全
EAIReport12 小时前
工业电气自动化数据治理破局:多Agent大模型赋能全景智能决策
大数据·运维·自动化