Linux学习之路 -- 进程篇 -- PCB介绍 -- 进程的孤儿和僵尸状态

前面介绍了进程的各种状态,下面介绍比较特殊的两种状态 -- 孤儿和僵尸(僵死)。

一、僵尸状态

我们创建进程的目的其实就是想要进程帮我们执行一些任务,当任务被执行完后,进程的使命其实就已经完成了。此时我们就需要杀死进程,由于进程的代码和数据肯定不会被执行了,所以可以被直接释放掉。但是进程的PCB却不能被立马释放,因为PCB里面记录进程所执行的任务完成情况,系统或其他进程需要读取PCB里的数据来决定判断该进程的执行情况,从而决定下一步操作。而这种代码和数据被释放了,但PCB还存在的情况,就叫僵尸状态。

下面演示一下这个状态,这里exit(0) 就是让子进程退出,在退出后父进程不读取子进程的数据(这里先不介绍怎么读取,下文会介绍)。就可以一直保持僵尸状态(正常状态下,子进程是肯定需要进入僵尸状态,只有进入僵尸状态后被读取才算结束进程)。

这里在子进程运行完后,我们可以发现子进程处于一个Z状态,也就是僵尸状态,这里再COMMAND这一列,我们可以看见子进程对应的COMMAND后存在一个<defunct>,这个单词表示”死亡的,无用的“,这也侧面印证了子进程处于一种僵尸状态。需要注意的是,当一个进程一直处于僵尸状态时,会造成内存泄露的问题。

二、孤儿进程

前面介绍的僵尸进程是子进程先退出,父进程不读取子进程的PCB造成的。但是如果父进程先退出了呢(这里父进程会先立马被bash回收,不存在一直处于僵尸状态的情况)?在这种情况下,子进程的PCB没有进程进行读取,就会一直处于僵尸状态。而系统是不会允许这种事情发生的,所以系统会找到合适的进程对这个子进程进行领养。这个被领养的子进程就叫做孤儿进程。

下面举个例子帮助大家理解(这里让子进程的运行时间超过父进程,让父进程先退出)

运行之后,我们会发现,子进程在不断运行,但是子进程的ppid已经变成了1, 这里的1默认就是系统这个进程。所以在子进程的父进程先行退出时,系统会为子进程找新的父进程,这里是系统进程领养了这个子进程,不过这个不是一定的。同时,我们会发现,在被系统领养后,子进程转到后台运行,我们想要提前结束掉这个进程,只能通过”kill -9 + 指定进程pid “这条命令来停止该进程。

以上就是关于僵尸状态和孤儿状态的两个进程状态,由于这两状态比较特殊一点,所以需要单独注意一下。以上就是所有的内容,如果希望本文对你有些许帮助,文中如有不对之处,还望各位大佬指正,谢谢!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/547628.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

牛客Linux高并发服务器开发学习第一天

Linux开发环境搭建 安装Xshell 7远程连接虚拟机的Ubuntu 安装Xftp 7可以传输文件(暂时还没使用) 安装VMware Tools可以直接从Windows系统向虚拟机Linux系统拖拽文件实现文件交互。 安装CScode可以远程连接Linux系统进行代码的编写。&#xff08;Windows系统与Linxu系统公钥…

(十)C++自制植物大战僵尸游戏设置功能实现

植物大战僵尸游戏开发教程专栏地址http://t.csdnimg.cn/m0EtD 游戏设置 游戏设置功能是一个允许玩家根据个人喜好和设备性能来调整游戏各项参数的重要工具。游戏设置功能是为了让玩家能够根据自己的需求和设备性能来调整游戏&#xff0c;以获得最佳的游戏体验。不同的游戏和平…

【机器学习300问】69、为什么深层神经网络比浅层要好用?

要回答这个问题&#xff0c;首先得知道神经网络都在计算些什么东西&#xff1f;之前我在迁移学习的文章中稍有提到&#xff0c;跳转链接在下面&#xff1a; 为什么其他任务预训练的模型参数&#xff0c;可以在我这个任务上起作用&#xff1f;http://t.csdnimg.cn/FVAV8 …

学习Rust的第三天:猜谜游戏

基于Steve Klabnik的《The Rust Programming Language》一书。今天我们在rust中建立一个猜谜游戏。 Introduction 介绍 We will build a game that will pick a random number between 1 to 100 and the user has to guess the number on a correct guess the user wins. 我们将…

AI音乐,8大变现方式——Suno:音乐版的ChatGPT - 第505篇

悟纤之歌 这是利用AI为自己制作的一首歌&#xff0c;如果你也感兴趣&#xff0c;可以花点时间阅读下本篇文章。 ​ 导读 随着新一代AI音乐创作工具Suno V3、Stable audio2.0、天工SkyMusic的发布&#xff0c;大家玩自创音乐歌曲&#xff0c;玩的不亦乐乎。而有创业头脑的朋友…

C语言 | Leetcode C语言题解之第32题最长有效括号

题目&#xff1a; 题解&#xff1a; int longestValidParentheses(char* s) {int n strlen(s);int left 0, right 0, maxlength 0;for (int i 0; i < n; i) {if (s[i] () {left;} else {right;}if (left right) {maxlength fmax(maxlength, 2 * right);} else if (…

HTML的超链接

前言&#xff1a; 如图&#xff0c;我们在浏览网页时经常可以看到这样的字体&#xff08;点击便跳转到了别的地方了&#xff09;&#xff0c;今日就和各位一起学习一下超链接的相关知识。 相关知识1&#xff1a; 超链接的标签为&#xff1a;a ~使用格式为&#xff1a; <a h…

SS3D翻译

SS3D AbstractIntroductionRelated WorkFully-Supervised 3D Object DetectionWeakly/Semi-Supervised 3D Object DetectionSparsely-Supervised 2D Object Detection MethodOverall FrameworkArchitecture of DetectorMissing-Annotated Instance Mining Module 缺失注释实例挖…

Kubernetes(k8s)集群搭建部署,master节点配置

目录 1.切换为root用户 2.关闭防火墙&#xff0c;关闭swap分区和禁用SElinux 3.安装docker 4.更改daemon.json文件&#xff0c;指定 Docker 守护进程使用的 cgroup 驱动程序 5.重启docker服务 6.配置kubernetes.repo 7.安装Kubelet、Kubeadm、Kubectl 8.设置开机自启 …

流量卡推广怎么申请一级代理

一、号卡推广的重要性 号卡推广对于通信运营商来说具有重要意义。首先&#xff0c;号卡推广是运营商获取新用户、扩大市场份额的重要手段。通过有效的推广策略&#xff0c;运营商可以吸引更多潜在用户&#xff0c;提高品牌知名度和用户黏性。其次&#xff0c;号卡推广有助于运…

java 读取xml文件

1、基本概念 &#xff08;1&#xff09;XML是EXtensible Markup Language 的缩写&#xff0c;翻译过来就是可扩展标记语言。所以很明显&#xff0c;XML和HTML一样都是标记语言&#xff0c;也就是说它们的基本语法都是标签。 &#xff08;2&#xff09;可扩展&#xff1a;XML允…

了解 RISC-V IOMMU

了解 RISC-V IOMMU 个人作为 IOMMU 初学者&#xff0c;从初学者的角度介绍我眼中 RISCV 的 IOMMU 如果有些描述不够专业&#xff0c;还请谅解&#xff0c;也欢迎讨论 部分内容来自 https://zhuanlan.zhihu.com/p/679957276&#xff08;对于 RISCV IOMMU 规范手册的翻译&#xf…

深入理解go语言中的切片

写在文章开头 从一个Java的开发角度来看&#xff0c;切片我们可以理解为Java中的ArrayList即一种动态数组的实现&#xff0c;本文会从源码的角度对切片进行深入剖析&#xff0c;希望对你有帮助。 Hi&#xff0c;我是 sharkChili &#xff0c;是个不断在硬核技术上作死的 java …

前端框架模板

前端框架模板 1、vue-element-admin vue-element-admin是基于element-ui 的一套后台管理系统集成方案。 **功能&#xff1a;**https://panjiachen.github.io/vue-element-admin-site/zh/guide/#功能 **GitHub地址&#xff1a;**GitHub - PanJiaChen/vue-element-admin: :t…

Win 运维 | Windows Server 系统事件日志浅析与日志审计实践

[ 重剑无锋&#xff0c;大巧不工。] 大家好&#xff0c;我是【WeiyiGeek/唯一极客】一个正在向全栈工程师(SecDevOps)前进的技术爱好者 作者微信&#xff1a;WeiyiGeeker 公众号/知识星球&#xff1a;全栈工程师修炼指南 主页博客: 【 https://weiyigeek.top 】- 为者常成&…

【Mamba】医学图像分割的Mamba评估指标参考(更新中...)

医学图像分割的Mamba评估指标参考 VM-UNet&VM-UNetV2LightM-UNetUltraLight-VM-UNetH-vmunetU-MambaLMa-UNetMamba-UNetVM-UNet&VM-UNetV2 DatasetModelmIoU(%)↑DSC(%)↑Acc(%)↑Spe(%)↑Sen(%)↑ISIC17UNet76.9886.9995.6597.4386.82ISIC17UTNetV277.3587.2395.8498.…

Java开发从入门到精通(十):Java常用的API编程接口:String

Java大数据开发和安全开发 (一)Java常用的API1.1 什么是API1.2 什么叫做包1.2.1 如何调用其他包的程序 1.3 JAVA的API&#xff1a;String1.3.1 创建String对象1.3.2 String提供的操作字符串数据的常用方法1.3.3 String练习案例 (一)Java常用的API 1.1 什么是API API(全称 App…

Ubuntu安装VMVare Workstation pro 17.5.1

由于需要装Kali&#xff0c;我电脑是Ubuntu单系统&#xff0c;所以只能使用linux版本的虚拟机&#xff0c;通过这种方式来安装虚拟机和Kali镜像。 参考CSDN博客资料&#xff1a;https://blog.csdn.net/xiaochong0302/article/details/127420124 github代码资料&#xff1a;vm…

2024 CKA 基础操作教程(十二)

题目内容 考点相关内容分析 Pods Pod 是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元。 Pod 是 Kubernetes 中的原子单元&#xff0c;用于封装应用程序的一个或多个容器、存储资源、唯一的网络 IP&#xff0c;以及有关如何运行容器的选项。Pod 提供了一个共享的…

如何实现超大场景三维模型数据立体裁剪

如何实现超大场景三维模型数据立体裁剪 实现超大场景三维模型数据的立体裁剪可以采用如下方法&#xff1a; 数据预处理&#xff1a;将超大场景三维模型数据进行划分和分割&#xff0c;将其拆分成多个小块或网格。这样可以方便进行后续的裁剪操作。 裁剪算法选择&#xff1a;根据…