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

进程控制

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

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

创建进程

撤销进程

进程创建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. 父进程异常终止:在某些情况下,父进程可能由于错误或异常而意外终止,而未能处理子进程的退出状态。

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

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

相关文章

HarmonyOS 应用开发案例

本帖下方集中了HarmonyOS Next应用开发时,会遇到的常见应用案例。后续会持续更新大量案例,帮助开发者快速学习。欢迎感兴趣的同学加入Q:454901491 72.手写绘制及保存图片案例(0319更新)(点此查看源码实现&…

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

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

Nginx:部署及配置详解(linux)

Nginx:部署及配置详解(linux) 1、nginx简介2、安装编译工具及库文件3、安装 pcre4、nginx安装5、nginx配置文件nginx.conf组成6、nginx配置实例-反向代理7、nginx 配置实例-负载均衡 💖The Begin💖点点关注&#xff0c…

计算机组成原理 双端口存储器原理实验

一、实验目的 1、了解双端口静态随机存储器IDT7132的工作特性及使用方法 2、了解半导体存储器怎样存储和读出数据 3、了解双端口存储器怎样并行读写,产生冲突的情况如何 二、实验任务 (1)按图7所示,将有关控制信号和和二进制开关对应接好,…

Umi-OCR:开源、免费的离线OCR软件,一键解码万物语言,图像转文本轻松搞定!

Umi-OCR:瞬间捕获,字句跃然眼前!精准识别图文信息,让数据提取无限拓展! - 精选真开源,释放新价值。 概览 Umi-OCR是一款强大的开源光学字符识别(OCR)工具,致力于打破现实…

Arduino IDE工程代码多文件编程和中文设置

一、esp8266模块信息 二、中英文切换 点击文件( File )–选择首选项( Preference )—选择语言( Language )—选择中文–点击确定( OK ) 三、多文件编程 在Arduino编程中,将代码分割成多个文件是一种很好的做法,特别是项目变得越来越大和复杂时。这样…

SAP HCM 0008信息类型间接评估与直接评估

如果在间接评估模块输入就是间接评估(tarif是读取下图中的数据 a代表不需要输入工资项,b表示需要找工资相) 不输入就是直接评估需要客户自己输入数字 第2个情况 summe求和 (比如在0008中输入9000与9001 那么自动求出9002工资项数…

分布式锁简单实现

分布式锁 Redis分布式锁最简单的实现 想要实现分布式锁,必须要求 Redis 有「互斥」的能力,我们可以使用 SETNX 命令,这个命令表示SET if Not Exists,即如果 key 不存在,才会设置它的值,否则什么也不做。 …

SQLiteC/C++接口详细介绍sqlite3_stmt类(九)

返回:SQLite—系列文章目录 上一篇:SQLiteC/C接口详细介绍sqlite3_stmt类(六) 下一篇: 无 33、sqlite3_column_table_name 函数 sqlite3_column_table_name 用于返回结果集中指定列所属的表的名称。如果查询中列使…

CTK插件框架学习-源码下载编译(01)

1、编译环境 window11、vs17、Qt5.14.0、cmake3.27.4 2、下载链接 cmake:Index of /files/v3.20 qt:Index of / vs22以前的版本需要登录下载:Visual Studio 较旧的下载 - 2019、2017、2015 和以前的版本 vs22下载:下载 Visu…

Eclipse For ABAP:安装依赖报错

1.安装好Eclipse后需要添加依赖,这里的地址: https://tools.hana.ondemand.com/latest 全部勾选等待安装结束; 重启后报错:ABAP communication layer is not configured properly. This might be caused by missing Microsoft Visual C++ 2013 (x64) Runtime DLLs. Consu…

Java-SSM个人博客系统

Java-SSM个人博客系统 1.服务承诺: 包安装运行,如有需要欢迎联系(VX:yuanchengruanjian)。 2.项目所用框架: 前端:JSP、layui、bootstrap、jquery等。 后端:SSM,即Spring、SpringMvc、Mybatis等。 3.项目功能点: 1.前台功能: 1…

十、C#基数排序算法

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

读算法的陷阱:超级平台、算法垄断与场景欺骗笔记17_执法工具

1. 执法工具箱 1.1. 在数据驱动的经济环境中,明智监管潜力无限 1.2. 多年前的司法体系与反垄断执法机构更善于发现市场漏洞,并设计出了直接有效的方式来化解问题 1.2.1. 大型互联网平台的权势凌驾于法律之上 1.2.1.1. 英国上议院 1.3. 反垄断执法机…

显卡基础知识及元器件原理分析

显卡应该算是是目前最为火热的研发方向了,其中的明星公司当属英伟达。 当地时间8月23日,英伟达发布截至7月30日的2024财年第二财季财报,营收和利润成倍增长,均超市场预期。 财报显示,第二财季英伟达营收为135.07 亿美…

【C++】1416. 求长方形的周长和面积

问题:1416. 求长方形的周长和面积 类型: 基本运算、整数运算 题目描述: 从键盘读入2个整数,分别代表一个长方形的长和宽,请计算长方形的周长和面积; 输入: 从键盘读入2个整数,用…

C#中文件操作打印当前目录下的所有文件名

首先,我们采取字符串保存我们当前目录,并且通过创建类来获取这个路径下的所有文件(类下引用方法记得用小灯泡点亮),将文本数据导入数组 string path1 "C:/Users/Desktop"; DirectoryInfo root new Direct…

虚拟机扩展:虚拟机快照

虚拟机快照 在学习阶段我们无法避免的可能损坏Linux操作系统。如果损坏的话,重新安装一个Linux操作系统就会十分麻烦。 那我们就可以通过快照将当前虚拟机的状态保存下来,在以后系统损坏时通过快照恢复虚拟机到保存的状态。 制作并还原快照 在VMware …

浅谈如何自我实现一个消息队列服务器(2)——实现 broker server 服务器

文章目录 一、实现 broker server 服务器1.1 创建一个SpringBoot项目1.2 创建Java类 二、硬盘持久化存储 broker server 里的数据2.1 数据库存储2.1.1 浅谈SQLiteMyBatis 2.1.2 如何使用SQLite 2.2 使用DataBaseManager类封装数据库操作2.3 文件存储消息2.3.1 存储消息时&#…

vue/vite添加地图

最简单的方式&#xff0c;不论vue2、vue3、vite均适用&#xff0c;例如以高德为例&#xff1a; index.html 引入 <scriptsrc"https://webapi.amap.com/maps?v1.4.15&key您的key&pluginAMap.ToolBar,AMap.MouseTool,AMap.DistrictSearch,AMap.ControlBar&quo…