进程创建,程序加载运行,以及进程终止,什么是僵尸进程,什么是孤儿进程

news2024/9/20 4:45:00

进程控制

创建进程,撤销进程,实现进程转换(必须一气呵成,使用原语)

原语不被中断是因为有关中断指令

创建进程

撤销进程

进程创建fork

fork()函数会创建一个子进程,子进程会返回0,父进程会返回子进程的id所以才会有ifelse

虽然是复制但是数据是不一样的,进而导致后面的结果不一样

程序的加载和执行

等待和终止进程

exit 子进程完毕,父进程的wait还没完毕,这段时间子进程是半死不活,僵尸状态

祖宗进程会定期扫描 pcb队列看有没有僵尸状态进程

当一个进程创建了一个子进程后,通常会使用等待函数来等待子进程的结束。这样可以确保父进程在子进程执行完毕后再继续执行,或者获取子进程的退出状态。

以下是父进程等待子进程结束的典型执行流程:

  1. 父进程创建子进程。

  2. 子进程执行自己的任务。

  3. 父进程调用等待函数(如wait()waitpid()),进入阻塞状态,等待子进程的结束。

  4. 如果子进程结束了,操作系统会通知父进程,父进程从等待函数返回,并获取子进程的退出状态。

  5. 父进程根据需要处理子进程的退出状态,然后继续执行自己的任务。

  6. 如果父进程在子进程结束前就退出了,子进程将会成为孤儿进程,而不是僵尸进程。孤儿进程将被 init 进程(通常是进程 ID 为 1 的进程)接管,并且在子进程结束后,init 进程会负责回收子进程的资源,这样就避免了僵尸进程的产生。

父进程在子进程结束之前退出可能发生在以下几种情况下:

  1. 父进程意外终止:父进程在创建子进程后,由于某种原因意外终止,例如由于错误或异常而导致父进程崩溃或被终止。在这种情况下,子进程可能会继续执行,而父进程已经退出。

  2. 父进程主动退出:父进程在创建子进程后,执行完自己的任务后主动退出,而不等待子进程结束。这可能是因为父进程的设计或逻辑决定在某一时刻结束执行,而不必等待子进程的完成。

  3. 并行执行:父进程和子进程可能并行执行,而不是串行执行。在这种情况下,父进程不会阻塞等待子进程的完成,而是继续执行自己的任务,最终可能在子进程之前退出。

在父进程仍处于等待状态而子进程已经结束的情况下,通常是由于父进程没有处理子进程退出状态所导致的。这可能出现在以下几种情况下:

  1. 父进程忘记或没有调用等待函数:父进程创建了子进程后,忘记或者没有在合适的时候调用等待函数(如wait()waitpid())来等待子进程的退出状态。这样会导致子进程结束时,其状态被操作系统保留,而父进程仍然处于等待状态。

  2. 父进程被阻塞或无法处理子进程退出状态:父进程可能因为其他原因而被阻塞,无法处理子进程的退出状态。例如,父进程可能在等待某些资源,或者被其他任务占用,无法及时处理子进程的退出。

  3. 父进程异常终止:在某些情况下,父进程可能由于错误或异常而意外终止,而未能处理子进程的退出状态。

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

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

相关文章

C语言例:表达式10<<3+1的值

10的二进制 00001010 10<<3 01010000 十制左移m位&#xff0c;乘以。 0101 0000 十进制80 10<<31 81

C# WPF编程-布局

C# WPF编程-布局 布局WPF布局原则布局过程布局容器布局属性Border控件StackPanel布局WrapPanel布局DockPanel布局Grid布局UniformGrid布局Canvas布局 布局 WPF布局原则 WPF窗口只能包含单个元素。为在WPF窗口中放置多个元素并创建更贴近实用的用户界面&#xff0c;需要在窗口…

信雅纳400/800G网络测试仪之 CDF/ Extended Payload 功能:完全用户自定义的协议报文支持/可编程的协议内容支持

Note# 2024-3-21 今天被一个做芯片测试的客户追着问&#xff0c;应该合作在测试仪上做完全自定义的报文&#xff0c;添加自己的私有协议进去&#xff0c;他觉得每次都导入报头太麻烦了&#xff0c;然后就看了下Application Note关于CDF功能的描述&#xff0c;照着机翻的版本来…

数字孪生与智慧城市:重塑城市生活的新模式

随着信息技术的迅猛发展&#xff0c;数字孪生作为一种新兴的技术理念&#xff0c;正在逐渐改变城市建设和管理的传统模式。智慧城市作为数字孪生技术应用的重要领域&#xff0c;正在以其独特的优势和潜力&#xff0c;重塑着城市生活的方方面面。本文将从数字孪生的概念、智慧城…

工控机在机器人领域的应用丨工业一体机的应用

随着机器人技术的不断发展&#xff0c;机器人在制造、物流等领域得到了广泛应用。而工业控制计算机&#xff08;工控机&#xff09;作为机器人控制系统的核心设备&#xff0c;也在机器人领域发挥着越来越重要的作用。 机器人控制系统是机器人的核心部分&#xff0c;控制系统的…

【文末附gpt升级4.0方案】FastGPT详解

FastGPT知识库结构讲解 FastGPT是一个基于GPT模型的知识库&#xff0c;它的结构可以分为以下几个部分&#xff1a; 1. 数据收集&#xff1a;FastGPT的知识库是通过从互联网上收集大量的文本数据来构建的。这些数据可以包括维基百科、新闻文章、论坛帖子等各种类型的文本。 2…

QT的学习

代码练习 做一个UI登录页面 源文件 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);this->setWindowTitle("洛克启动&#xff01;");this->…

MYSQL索引、事务、存储引擎(一)

目录 一、索引 1、索引的概念 2、索引的作用 3、索引的副作用 4、创建索引的原则依据 二、索引的分类 1、普通索引 1.直接创建索引 2.修改方式创建索引 3.创建表的时候指定索引 2、唯一索引 1.直接创建唯一索引 2.修改表方式创建索引 3.创建表的时候指定索引 3、…

嵌入式驱动学习第四周——设备树

前言 掌握设备树是 Linux 驱动开发人员必备的技能&#xff01;因为在新版本的 Linux 中&#xff0c;ARM 相关的驱动全部采用了设备树。本篇博客重点介绍一下设备树与设备树语法。 嵌入式驱动学习专栏将详细记录博主学习驱动的详细过程&#xff0c;未来预计四个月将高强度更新本…

Leetcode热题100:图论

Leetcode 200. 岛屿数量 深度优先搜索法&#xff1a; 对于这道题来说&#xff0c;是一个非常经典的图的问题&#xff0c;我们可以先从宏观上面来看问题&#xff0c;也就是说在不想具体算法的前提下&#xff0c;简单的说出如何找到所有的岛屿呢&#xff1f; 如图中所示&#x…

C#探索之路基础篇(1):编程中面向过程、数据、对象的概念辨析

文章目录 C#探索之路基础篇(1)&#xff1a;编程中面向过程、数据、对象的概念辨析1 面向过程编程1.1 概念1.2 示例代码&#xff1a;1.3 使用范围与时机&#xff1a;1.4 注意事项&#xff1a;1.5 通俗讲法 2 面向对象编程2.1 概念2.2 示例代码2.3 使用范围2.4 注意事项2.5 通俗讲…

将数据转换成xml格式的文档并下载

现在有一个实体类对象的集合&#xff0c;需要将它们转换为xml文档&#xff0c;xml文档就是标签集合的嵌套&#xff0c;例如一个学生类&#xff0c;有姓名、年龄等&#xff0c;需要转换成一下效果&#xff1a; <student><age>14</age><name>张三</na…

十、C#基数排序算法

简介 基数排序是一种非比较性排序算法&#xff0c;它通过将待排序的数据拆分成多个数字位进行排序。 实现原理 首先找出待排序数组中的最大值&#xff0c;并确定排序的位数。 从最低位&#xff08;个位&#xff09;开始&#xff0c;按照个位数的大小进行桶排序&#xff0c;将…

STL —— string(1)

目录 1. 模板 1.1 泛型编程 1.2 函数模板 1.2.1 函数模板概念 1.2.2 函数模板格式 1.2.3 函数模板的原理 1.2.4 显式实例化 1.2.5 模板参数的匹配原则 1.3 类模板 1.3.1 类模板定义格式 1.3.2 类模板的实例化 2. STL —— string类 2.1 STL 简介 2.2 标准库中的s…

地理信息数据处理-线面数据转化和数据合并(二)

需求 1.数据为LineString&#xff0c;需要转化为Polygon 2.数据为多个分散的线、面数据&#xff0c;需要转化为一条Multi类型数据 解决方案使用&#xff0c;arcgis转化工具。 需求1&#xff1a;线-面数据转化 1.在arcgis中选中对应图层&#xff0c; 然后在“数据管理工具-要…

pcl采样:随机采样

pcl 随机采样,实际上就是抽稀 头文件 代码 结果

阿里云2024最新优惠:WoSign SSL证书首购4折

阿里云SSL证书 2024 最新优惠来啦&#xff01;阿里云SSL证书新用户&#xff0c;wosign SSL证书低至4折&#xff0c;WoSign SSL提供全球信任RSA SSL证书和国密算法SM2 SSL证书&#xff01;阿里云官网官方优惠&#xff0c;需要开年采购SSL证书的用户抓紧申请这波优惠&#xff01;…

mybatis-flex入门体验(一)

shigen坚持更新文章的博客写手&#xff0c;擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长&#xff0c;分享认知&#xff0c;留住感动。 个人IP&#xff1a;shigen 趁着下午的空闲时间&#xff0c;研究了一下mybatis-flex&#xff0c;看着对我还…

【php基础】输出、变量、布尔类型、字符串

php基础补充 1. 输出2.和"的区别3.变量3.1变量的命名规则3.2 两个对象指向同一个值3.3 可变变量 4.变量的作用域5. 检测变量6. 布尔类型7.字符串定义与转义8.字符串常用函数9.常量 1. 输出 echo: 输出 print: 输出&#xff0c;输出成功返回1 print_r(): 输出数组 var_dum…

HarmonyOS入门学习

HarmonyOS入门学习 前言快速入门ArkTS组件基础组件Image组件Text组件TextInput 文本输入框Buttonslider 滑动组件 页面布局循环控制ForEach循环创建组件 List自定义组件创建自定义组件Builder 自定义函数 状态管理Prop和LinkProvide和ConsumeObjectLink和Observed ArkUI页面路由…