僵尸进程和孤儿进程

目录

  • 引言
  • 僵尸进程
    • 僵尸进程的状态
    • 僵尸进程周边知识
  • 孤儿进程
    • 孤儿进程的状态
  • 进程中的其他状态
    • ①.R---表示进程运行状态。
    • ②.S---表示进程的休眠状态。(进程什么都没做)
    • ③T 和 t
  • 进程的运行、阻塞和挂起
    • 运行
    • 阻塞
    • 挂起状态:

引言

今天我们来将僵尸进程和孤儿进程以及其他的周边知识:进程的状态和进程的运行,阻塞和挂起。

僵尸进程

上个博客我们提到了进程,并且细致了说了什么事进程,所以我们今天就不在赘述了。那么什么又是僵尸进程呢?
定义:僵尸进程指进程已经退出,但资源并没有完全被释放
可能还是很懵,那么我们就用代码演示。
代码分析:
我们要捏造一个代码已经退出了,但是资源没有释放的场景,那么我们就可以用fork()来创建子进程,并且让子进程先退出,查看它的状态。

#include <stdio.h>                        
#include<unistd.h>
#include<sys/types.h>
int main()
{
  pid_t id=fork();
  if(id<0) return -1;//小于0表示创建子进程失败
  if(id==0)
  	{
    //创建子进程成功
	  int cnt=5;
	  while(cnt--)
	   {
		 printf("我是一个子进程,我的pid是%d,ppid%d\n",getpid(),g  etppid());
		sleep(1);
		}
	}else{
 		 //父进程
 		 while(1)
 		{
		  printf("我是一个父进程,我的pid是%d,ppid%d\n",getpid(  ),getppid());
		sleep(1);
 		}
 	}
 }

僵尸进程的状态

如下图,会发现子进程和父进程同时推进,但是在cnt为0的时候,子进程已经结束,但是父进程是死循环,并不会退出,会发现子进程STAT的状态变成了Z+。
Z:表示僵尸进程状态,+号表示在前台运行。
在这里插入图片描述

僵尸进程周边知识

子程序已经运行完毕,但是还需要维持自己的退出信息,在自己的进程task_struct会记录自己退出信息,未来让父进程来读取。如果没有父进程读取,僵尸进程会一直在。如果一直没有回收,就会引起内存泄漏问题僵尸进程不能被杀死,因为僵尸进程已经死了,无法杀死

孤儿进程

孤儿进程我们从他的名字也能看得出来,是父进程先退出,但是子进程没有退出导致的。
定义:它的父进程已经终止(退出),但该进程本身仍在运行。当父进程提前结束时,操作系统内核会自动将孤儿进程的父进程重新设置为init进程(在Unix/Linux系统中,init进程通常是PID为1的进程,现代系统中可能是systemd)。
孤儿进程没有父亲会被init进程领养。

孤儿进程的状态

以下代码,会让父进程先退出。从运行截图,我们发现一开始子进程和父进程都是S+,但是当父进程退出的时候,子进程变成了S。这个时候就表示子进程变成了孤儿进程且已经被领养。孤儿进程会被转到后台运行

#include <stdio.h>                        
#include<unistd.h>
#include<sys/types.h>
int main()
{
  pid_t id=fork();
  if(id<0) return -1;//小于0表示创建子进程失败
  if(id==0)
  	{
    //创建子进程成功
	  int cnt=10;
	  while(cnt--)
	   {
		 printf("我是一个子进程,我的pid是%d,ppid%d\n",getpid(),g  etppid());
		sleep(1);
		}
	}else{
 		 //父进程
 		 int cnt=5;
 		 while(cnt--)
 		{
		  printf("我是一个父进程,我的pid是%d,ppid%d\n",getpid(  ),getppid());
		sleep(1);
 		}
 	}
 }

在这里插入图片描述

问题: 为什么孤儿进程要被领养?
答:因为保证子进程正常被回收。

进程中的其他状态

状态的种类

①.R—表示进程运行状态。

如图他是运行状态,但是大部分当输出一段话的时候会发现是S+,这是为什么呢?原因是我们的CPU太快了,Linux的原则是一切皆文件,显示器也不例外,他也是一个文件,当你的代码将内容显示到屏幕上,CPU一下子就解决了,但是从磁盘到内存到CPU很慢,所以你的CPU一直在等待。
在这里插入图片描述

②.S—表示进程的休眠状态。(进程什么都没做)

所谓的休眠状态就是进程太等待,可能是因为cpu太快了。 本质:进程在等待 “资源” 就绪。 且S是可中断睡眠。(ctrl+c)

③T 和 t

T ---让进程暂停,等待被进一步唤醒。   kill  -19(暂停)/-18(继续) /-9(杀死进程)

在这里插入图片描述
在这里插入图片描述

t ---进程被追踪暂停。(调试情况,遇到断点就暂停)

在这里插入图片描述

④. ./可执行文件 +& —>表示在前台运行。没有+表示在前台。
⑤.x—死亡状态。
⑥.D— 深度睡眠/不可中断睡眠。 D的存在主要是保护重要进程不被干掉。如果非要中断有两种情况:断点重启和等待进程结束。

进程的运行、阻塞和挂起

这张图大家看着都很熟悉,很多教材都有,但是我们这里说的并不全面,只会说运行、阻塞和挂起。
在这里插入图片描述

运行

(1).进程运行时一定是在cpu上运行。每一个cpu都需要维护一个运行队列(数据结构)。
(2).进程在运行队列中,该进程的状态就是R状态(运行状态)。
(3).进程是基于时间片进程轮转调度的。让多个进程以切换的方式进行调度,在一个时间段内同时得以推进代码,这就叫做并发。

阻塞

问题:我们C语言中的scanf在等待你输入是属于什么状态呢?暂停吗?
答:是阻塞状态,S属于阻塞状态。等待某资源是都就绪

(1).不止有CPU才有运行队列,各个设备也有自己的等待队列。
(2).阻塞指一个进程从进程队列里剥离下来,列到其他设备的队列里。
(3).当阻塞结束,把进程从其他设备的队列,在列会进程队列中交唤醒。

挂起状态:

(1).挂起就是将操作系统的暂时不用的进程,交换到磁盘中swap区。你在需要调度的时候,在换出。
(2).频繁地换入换出会导致效率问题。

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

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

相关文章

matlab使用教程(42)—常见的二维图像绘制方法

这个博客用于演示如何在 MATLAB 中创建曲线图、条形图、阶梯图、误差条形图、极坐标图、针状图、散点图。 1.曲线图 plot 函数用来创建 x 和 y 值的简单线图。 x 0:0.05:5; y sin(x.^2); figure plot(x,y) 运行结果&#xff1a; 线图可显示多组 x 和 y 数据。 x 0:0.05:…

如何正确使用数字化仪前端信号调理?(二)

在上期文章如何正确使用数字化仪前端信号调理&#xff1f;&#xff08;一&#xff09;中&#xff0c;我们为大家介绍了数字化仪前端电路所需的特性以及使用过程中需要的输入抗阻和输入耦合&#xff0c;本期文章将为您介绍数字化仪前端信号调理的使用过程中所需的输入电压范围&a…

一键开启Scrum回顾会议的精彩时刻

其实回顾会议作为一个检视、反馈、改进环节&#xff0c;不仅在传统的瀑布管理模式中&#xff0c;还是在Scrum一类的敏捷管理流程中&#xff0c;都是非常重要的活动。一些团队认为它无法产生直接的价值&#xff0c;所以有意忽略了这个会议&#xff1b;一些团队在越来越多的回顾中…

bilibili PC客户端架构设计——基于Electron

众所周知&#xff0c;bilibili是个学习的网站&#xff0c;网页端和粉版移动端都非常的好用&#xff0c;不过&#xff0c;相对其它平台来说bilibili的PC客户端也算是大器晚成了。在有些场景PC客户端的优势也是显而易见的&#xff0c;比如&#xff0c;跓留电脑桌面的快捷、独立的…

Redis搭建主从

Redis搭建主从: 1:拉取Redis镜像 docker pull redis2:创建主从对应的目录结构 3:对redis6379.log,redis6380.log,redis6381.log进行授权 chmod 777 redis6379.log chmod 777 redis6380.log chmod 777 redis6381.log4:修改主(master)的配置文件 5:创建主(master) redis_6379 …

二维数组---刷题

一维数组不想更了&#xff0c;弄点二维数组&#xff01; 1.对角线 已知一个6*6的矩阵&#xff0c;把矩阵两条对角线上的元素加上10&#xff0c;然后输出这个新矩阵。 思路 题目简单&#xff0c;6*636&#xff0c;可以得知有36个元素。数组就定义成a[7][7]&#xff0c;难点在与…

最前沿・量子退火建模方法(1) : subQUBO讲解和python实现

前言 量子退火机在小规模问题上的效果得到了有效验证&#xff0c;但是由于物理量子比特的大规模制备以及噪声的影响&#xff0c;还没有办法再大规模的场景下应用。 这时候就需要我们思考&#xff0c;如何通过软件的方法怎么样把大的问题分解成小的问题&#xff0c;以便通过现在…

哪些因素影响阻抗控制?网格铜的妙用

原文来自微信公众号&#xff1a;工程师看海&#xff0c;与我联系&#xff1a;chunhou0820 看海原创视频教程&#xff1a;《运放秘籍》 大家好&#xff0c;我是工程师看海&#xff0c;原创文章欢迎点赞分享&#xff01; 前文介绍了传输线、特性阻抗以及信号的反射概念&#xff…

【漏洞复现】用友 NC PaWfm SQL注入漏洞

0x01 产品简介 用友NC是用友网络科技股份有限公司开发的一款大型企业数字化平台。它主要用于企业的财务核算、成本管理、资金管理、固定资产管理、应收应付管理等方面的工作&#xff0c;致力于帮助企业建立科学的财务管理体系&#xff0c;提高财务核算的准确性和效率。 0x02 …

在线批量生成URL HTML单页网页程序

输入前缀、开始数字、结束数字、后缀 即可快速生成 几万、十万、百万 条链接。 支持 一键复制、 一键导出本地 txt 文件。 源码免费下载地址抄笔记 (chaobiji.cn)

Spring MVC应用分层(三层架构)

该片文章主要是对 Spring MVC应用分层&#xff08;三层架构&#xff09;进行简单的介绍和学习。 一、介绍 1、什么是应用分层 应用分层 是一种 软件开发设计思想 , 它将应用程序分成N个层次, 这N个层次分别负责各自的职责, 多个 层次之间协同提供完整的功能. 根据项目的复杂…

正则表达式:量词(三)

正则表达式中的量词有以下几种:1. *: 匹配前面的字符0次或多次。2. : 匹配前面的字符1次或多次。3.?: 匹配前面的字符0次或1次。4. {n}: 匹配前面的字符恰好n次。5. {n,}: 匹配前面的字符至少n次。6. {n,m}:匹配前面的字符至少n次&#xff0c;但不超过m次。 以下是使用Python的…

0.1 + 0.2 不等于 0.3 ?这是为什么?一篇讲清楚!!!

0.1 0.2 不等于 0.3 &#xff1f;这是为什么&#xff1f;一篇讲清楚&#xff01;&#xff01;&#xff01; 分类 编程技术 在很多编程语言中&#xff0c;我们都会发现一个奇怪的现象&#xff0c;就是计算 0.1 0.2&#xff0c;它得到的结果并不是 0.3&#xff0c;比如 C、C、…

C语言--结构体大小

基本数据类型占用的字节数分别为:char(1),short(2),int(4),long(4),long long(8),float(4),double(8)。 分析一下下面结构体占用的字节数。 struct A { int a; }; struct B { char a; int b; }; int main() { printf("sizeof(struct A)%d\n", sizeof(struct A));//测…

云计算:OVS 集群 使用 Geneve 流表

目录 一、实验 1.环境 2.OVS 集群 使用 Geneve 流表 二、问题 1.VXLAN与Geneve区别 一、实验 1.环境 (1) 主机 表1 宿主机 主机架构软件IP网卡备注ovs_controller控制端 karaf 0.7.3 192.168.204.63 1个NAT网卡 &#xff08;204网段&#xff09; 已部署ovs_server01服务…

推荐一款轻量级的hosts文件编辑器(免安装版)

在管理和编辑hosts文件时&#xff0c;一款简单而有效的工具是非常重要的。下面推荐一款免安装版的轻量级hosts文件编辑器&#xff0c;让你轻松管理你的hosts文件。 windows系统默认hosts文件位置 下载地址&#xff1a;https://www.alipan.com/s/8kSns9eAi9f

Day23_学点儿Java_多态复习

1 做错的选择题 Java中的多态性是通过以下哪个机制实现的&#xff1f;&#xff08;&#xff09; A. 方法重载 B. 方法覆盖 C. 抽象类 D. 接口2 多态复习 2.1 学点儿Java_Day7_继承、重载、重写、多态、抽象类 2.2 面向对象四大基本特征 封装、抽象、继承、多态 封装 面向…

视频号小店究竟有什么秘密,值得商家疯狂入驻,商家必看!

大家好&#xff0c;我是电商花花。 我们都知道视频号和抖音本身都是一个短视频平台&#xff0c;但是随着直播电商的发展&#xff0c;背后的流量推动逐步显露出强大的红利市场和变现机会。 视频号小店流量大和赚钱之外&#xff0c;还非常适合普通人创业。 这也使得越来越多的…

久菜盒子|可实现需求|Advanced Economic Evaluation(作业,资源免费获取)

数据资源下载地址&#xff1a;https://download.csdn.net/download/weixin_68126662/89101333 R代码参考&#xff1a; ############################################################################# ### ### GLBH0046: Advanced Economic Evaluation ### ### Practical 1…

BUUCTF刷题十一道(12)附-SSTI专题二

文章目录 学习文章[CISCN2019 华东南赛区]Web11【存疑】[RootersCTF2019]I_<3_Flask 学习文章 SSTI-服务端模板注入漏洞 flask之ssti模板注入从零到入门 CTFSHOW SSTI篇-yu22x SSTI模板注入绕过&#xff08;进阶篇&#xff09;-yu22x SSTI模板注入学习-竹言笙熙 全部总结看最…