僵尸进程和孤儿进程

目录

  • 引言
  • 僵尸进程
    • 僵尸进程的状态
    • 僵尸进程周边知识
  • 孤儿进程
    • 孤儿进程的状态
  • 进程中的其他状态
    • ①.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).频繁地换入换出会导致效率问题。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

国家留学基金委(CSC)2024-2025年度中加学者交换项目开始申报

4月3日&#xff0c;国家留学基金委&#xff08;CSC&#xff09;发布了2024-2025年度中加学者交换项目遴选通知。根据通知精神&#xff0c;选派规模&#xff1a;100人月&#xff0c;留学及资助期限&#xff1a;4-12个月&#xff0c;网上报名截止日期至2024年6月30日。以下知识人…

Docker 学习笔记(六):挑战容器数据卷技术一文通,实战多个 MySQL 数据同步,能懂会用,初学必备

一、前言 记录时间 [2024-4-11] 系列文章简摘&#xff1a; Docker学习笔记&#xff08;二&#xff09;&#xff1a;在Linux中部署Docker&#xff08;Centos7下安装docker、环境配置&#xff0c;以及镜像简单使用&#xff09; Docker 学习笔记&#xff08;三&#xff09;&#x…

基于ssm同学录网站论文

摘要 本文介绍了同学录网站的开发全过程。通过分析企业对于同学录网站的需求&#xff0c;创建了一个计算机管理同学录网站的方案。文章介绍了同学录网站的系统分析部分&#xff0c;包括可行性分析等&#xff0c;系统设计部分主要介绍了系统功能设计和数据库设计。 本同学录网站…

造船业的重要工具之一(火工平台)——河北北重厂家

火工平台是造船业的重要工具之一&#xff0c;它是用于火焰切割和焊接的设备。在造船过程中&#xff0c;需要对金属材料进行切割和焊接&#xff0c;以构建船体结构。火工平台可以提供高温火焰&#xff0c;使得金属材料可以被切割或焊接。 火工平台通常由两个主要部分组成&#…

vue2响应式原理----发布订阅模式

很多人感觉vue2的响应式其实用到了观察者发布订阅。我们先来看一下简单的发布订阅的代码&#xff1a; // 调度中心 class Dep {static subscribes {}// 订阅所有需求static subscribe (key, demand) {// 对需求分类收集if (!Dep.subscribes[key]) Dep.subscribes[key] []Dep…

Windows安装MongoDB结合内网穿透轻松实现公网访问本地数据库

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

基于SpringBoot的“银行OA系统的设计与实现”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“银行OA系统的设计与实现”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 用户登录界面 管理员主界面 员工基本档…

武汉星起航顺应政策东风,打造跨境电商孵化新标杆

在国家政策的鼎力支持下&#xff0c;跨境电商行业迎来了蓬勃发展的黄金时期。武汉星起航电子商务有限公司作为行业的佼佼者&#xff0c;积极响应国家政策号召&#xff0c;凭借专业的运营团队和丰富的经验&#xff0c;成功打造了一站式的跨境电商亚马逊孵化平台&#xff0c;为合…

element-ui form表单自定义label的样式、内容

element-ui form表单自定义label的样式、内容 效果截图 代码 <el-form size"small" :inline"true" label-width"120px"><el-form-item prop"name"><div slot"label"><i style"color: red;"…

JavaWeb--JavaScript-事件绑定/BOM/DOM编程

目录 1. 事件绑定 1.1. 什么是事件 1.2. 常见事件 1.3. 事件的绑定 1.3.1. 属性绑定 1.3.2. DOM编程绑定 1.4. 事件的触发 1.4.1. 行为触发 1.4.2. DOM编程触发 2. BOM 编程 2.1. 什么是 BOM 2.2. window对象的常见属性(了解) 2.3. window对象的常见方法(了解) 2…

【中文医疗词嵌入模型】SMedBERT:结构化知识图谱 + 混合注意力机制 + 提及-邻居上下文建模

【中文医疗词嵌入模型】SMedBERT&#xff1a;结构化知识图谱 混合注意力机制 提及-邻居上下文建模 提出背景SMedBERT 具体到点的设计逻辑SMedBERT的背景SMedBERT的工作原理 SMedBERT 具体实现细节3.1 符号和模型3.2 Top-K Entity Sorting3.3 提及-邻居混合注意力3.4 提及-邻居…

Android - 安卓概述

什么是安卓? Android 是一种基于 Linux 的开源操作系统&#xff0c;适用于智能手机和平板电脑等移动设备。 Android 是由 Google 和其他公司领导的 Open Handset Alliance 开发的。 Android 为移动设备的应用程序开发提供了统一的方法&#xff0c;这意味着开发人员只需为 And…

【JavaWeb】Day42.MySQL概述——多表查询

介绍 多表查询&#xff1a;查询时从多张表中获取所需数据 单表查询的SQL语句&#xff1a;select 字段列表 from 表名; 如果要执行多表查询&#xff0c;只需要使用逗号分隔多张表即可&#xff0c;如&#xff1a; select 字段列表 from 表1, 表2; 例如&#xff1a;查询…

C++11的更新介绍(新的类功能、可变参数模板)

&#x1fa90;&#x1fa90;&#x1fa90;欢迎来到程序员餐厅&#x1f4ab;&#x1f4ab;&#x1f4ab; 主厨&#xff1a;邪王真眼 主厨的主页&#xff1a;Chef‘s blog 所属专栏&#xff1a;c大冒险 总有光环在陨落&#xff0c;总有新星在闪烁 新的类功能 默认成员函数&…

《师兄啊师兄》:玄机科技打造国漫新高峰,IP运营再显神力

在这个国漫蓬勃发展的时代&#xff0c;玄机科技再次以其超凡的制作水准和出色的IP运营能力&#xff0c;为我们带来了一部国漫新经典——《师兄啊师兄》。这部作品不仅在画面、剧情上达到了行业新高度&#xff0c;更在IP运营上展现出了其强大的实力与前瞻性。 《师兄啊师兄》的画…

构建智能连接的未来:物联网平台系统架构解析

随着科技的不断进步和互联网的普及&#xff0c;物联网&#xff08;Internet of Things, IoT&#xff09;已成为连接世界的新方式。物联网平台作为实现物联网应用的核心基础设施&#xff0c;其系统架构的设计和实施至关重要。本文将深入探讨物联网平台系统架构的关键要素和最佳实…

【七 (2)FineBI-平台新增用户留存分析】

目录 文章导航一、字段解释1、用户平台登录信息表格2、用户平台激活信息表格 二、需求三、操作步骤1、建立用户平台登录信息表格和用户平台激活信息表格的关联关系2、将用户平台激活信息表格的激活日期添加到用户平台登录信息表格3、新增公式列&#xff0c;计算激活时间和登录时…

P4119 [Ynoi2018] 未来日记

它来了&#xff01; 分析一下第一个操作&#xff0c;不是写过嘛&#xff0c;并查集 分析一下第二个操作&#xff0c;二分套二分答案 拿下了这题 仔细分析&#xff0c;貌似时间复杂度是错的 我们考虑块套块 时间复杂度 对1e5的值域进行分块 求k值我们可以先找是第几个块&…

word并排比较

Word并排比较是一种在Microsoft Word文档中同时显示两个文本内容并进行比较的功能。这种比较通常用于查看文档的不同版本之间的差异&#xff0c;或者比较两个不同来源的文本内容。 在Word中进行并排比较通常可以通过以下步骤实现&#xff1a; 通过这种方式&#xff0c;Word的并…

2024阿里云学生服务器申请图文全流程,学生机免费续费攻略

2024年阿里云学生服务器免费申请&#xff0c;完成学生认证可以领取1个月免费学生机&#xff0c;完成任务可以再免费学费6个月时长&#xff0c;还可以领取高校计划学生300元无门槛优惠代金券&#xff0c;阿里云服务器网aliyunfuwuqi.com整理2024年最新阿里云大学生服务器申请入口…