Linux——进程状态

 我们都知道进程信息被放到了PCB(task_struct)中,可以理解为进程属性的集合。

PCB中包含了进程的ID,时间片,pc指针,所有的寄存器,进程状态、优先级、I/O状态信息等等...有兴趣的可以去看看源码,也可以去看看这篇文章https://www.cnblogs.com/tongyan2/p/5544887.html

PCB是内核中很重要的一个数据结构,每一个在系统中运行的进程,都是以PCB的链表形式存在内核中,它管理起了OS的内核。

在OS中,弄明白进程的不同状态是很重要的,在内核中,有以下几种状态:

R(运行状态 running):R状态并不意味着运行中,也有可能在运行队列中。

S(可中断状态 sleeping):也叫做睡眠状态,意味着进程在等待事件完成。

D(不可中断状态 Disk sleep): 有时候也叫做不可中断睡眠状态,在这个状态的进程通常会等待IO的结束。

T(停止状态 stopped):可以通过SIGSTOP信号来暂停T进程,当然也可以通过信号来让进程继续运行。

X(死亡状态 dead): 这个状态只有一个返回状态,你不会在任务列表中看到这个进程。

运行状态(R):

我们用下面的代码来模拟一下R状态,

可以发现,这与我们的想法不一样?  这是为什么呢??
我们都知道在内存很快,当sleep函数的时候,OS会很快将它执行完,这时就由R -> S

僵尸状态(Z):

int main()
{int time = 0;int ret = fork();if (ret < 0){perror("fork fail\n");exit(-1);}if (ret == 0){// childwhile(1){cout << "我是子进程:pid:" << getpid() << "  " << "ppid:" << getppid() << " " << ++time << endl;sleep(1);if(time == 10){return 1;}} }else{// fatherwhile(1){cout << "我是父进程:pid:" << getpid() << "  "<< "ppid:" << getppid()  <<" " << ++time << endl;sleep(1);}}return 0;
}

我们可以发现,第10s的时候,由于子进程退出先于父进程退出,并且父进程没有读取到子进程的退出码,就会造成僵尸状态。

危害:这非常消耗资源,因为子进程的代码和数据,进程ID...都在PCB中,如果父进程没有读取退出状态代码,那么子进程会一直以终止状态保持在进程表中。

孤儿进程:

所谓孤儿进程,就是当父进程先于子进程退出,这时子进程就是孤儿进程,但当子进程退出变成Z的时候,会由1号进程来回收子进程。

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

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

相关文章

excel xla文件怎么导入到excel

在Excel中导入XLA文件&#xff08;Excel Add-In&#xff09;的步骤如下&#xff1a; 1. **打开Excel&#xff1a;** 启动 Microsoft Excel 应用程序。 2. **选择“文件”选项卡&#xff1a;** 点击Excel窗口左上角的“文件”选项卡。 3. **选择“选项”&#xff1a;** 在文件…

【计算机网络笔记】物理层——频带传输基础

系列文章目录 什么是计算机网络&#xff1f; 什么是网络协议&#xff1f; 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能&#xff08;1&#xff09;——速率、带宽、延迟 计算机网络性能&#xff08;2&#xff09;…

LAMP和分离式LNMP部署

目录 一.什么是LAMP&#xff1f; 二.安装LAMP 先安装apache&#xff0c;httpd网页服务&#xff1a; 接着安装mysql&#xff1a; 安装php&#xff1a; 创建论坛&#xff1a; 三.安装分布式LNMP&#xff1a; 先安装nginx&#xff1a; 到另一台主机安装php&#xff1a; …

Android 默认打开应用的权限

有项目需要客户要安装第三方软件&#xff0c;但是要手动点击打开权限&#xff0c;就想不动手就打开。 //安装第三方软件&#xff0c;修改方式 frameworks\base\services\core\java\com\android\server\pm\PackageManagerService.java //找到如下源码&#xff1a; //有三种方…

整数二分的建模

当题目能够使用整数二分法建模时&#xff0c;主要有整数二分法思想进行判定&#xff0c;它的基本形式如下&#xff1a; while(left < right) {int ans;//记录答案 int mid left (right - left) / 2;//二分if(check(mid)){//检查条件&#xff0c;如果成立 ans mid;//记录…

Python实现的二叉树的先序、中序、后序遍历示例

一、先序、中序、后序遍历的次序&#xff1a; 创建好一棵二叉树后&#xff0c;可以按照一定的顺序对树中所有的元素进行遍历。按照先左后右&#xff0c;树 的遍历方法有三种&#xff1a;先序遍历、中序遍历和后序遍历。 其中&#xff0c;先序遍历的次序是&#xff1a;如果二叉…

《算法面试宝典》--机器学习常见问题汇总

第二章 机器学习基础 ========================= ​ 机器学习起源于上世纪50年代,1959年在IBM工作的Arthur Samuel设计了一个下棋程序,这个程序具有学习的能力,它可以在不断的对弈中提高自己。由此提出了“机器学习”这个概念,它是一个结合了多个学科如概率论,优化理论,…

用23种设计模式打造一个cocos creator的游戏框架----(一)生成器模式

1、模式标准 模式名称&#xff1a;生成器模式 模式分类&#xff1a;创建型 模式意图&#xff1a;将一个复杂对象的构建与它的表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。 结构图&#xff1a; 适用于&#xff1a; 当创建复杂对象的算法应该独立于该对象的…

[MySQL--基础]事务的基础知识

前言 ⭐Hello!这里是欧_aita的博客。 ⭐今日语录&#xff1a;生活中最重要的决定就是要做出决定。 ⭐个人主页&#xff1a;欧_aita ψ(._. )>⭐个人专栏&#xff1a; 数据结构与算法 MySQL数据库 事务的目录&#x1f4d5; 前言事务简介&#x1f680;事务操作&#x1f680;准…

AV1(AOMedia Video 1) 编程指南

AV1&#xff08;AOMedia Video 1&#xff09;是一种开源、免专利费的视频编码格式&#xff0c;由AOMedia&#xff08;开放媒体联盟&#xff09;开发。AV1旨在提供比现有的视频编解码格式&#xff08;如H.264/AVC和HEVC&#xff09;更高的压缩效率&#xff0c;同时保持高质量视频…

ubuntu apt指令集学习心得

ubuntu apt指令集学习心得 在Ubuntu中&#xff0c;我们可以使用以下apt指令集来管理软件包&#xff1a; 1. 更新软件包列表&#xff1a; sudo apt update 2. 升级已安装的软件包&#xff08;将系统中的所有软件包升级到最新版本&#xff09;&#xff1a; s…

Linux:缓冲区的概念理解

文章目录 缓冲区什么是缓冲区&#xff1f;缓冲区的意义是什么&#xff1f;缓冲区的刷新方式 理解缓冲区用户缓冲区和内核缓冲区缓冲区在哪里&#xff1f; 本篇主要总结的是关于缓冲区的概念理解&#xff0c;以及再次基础上对文件的常用接口进行一定程度的封装 缓冲区 什么是缓…

keil添加了头文件仍然报找不到头文件的原因

如图&#xff0c;我在user分组新建Item&#xff0c;可是keil提示头文件不存在&#xff0c;所有的一切设置都是对的&#xff0c;但就是找不到头文件&#xff0c;找了很久&#xff0c;最后才发现是user分组和文件系统中的文件夹不一致的原因。 如图&#xff0c;在分组的文件系统的…

微服务架构之服务发现

在微服务架构中&#xff0c;服务与服务之间需要通过服务发现来找到对方&#xff0c;以便发起请求。 所谓的服务发现就是一种自动监测并发现网络内的的服务的机制。可以调用者动态感知到网络上服务的变化。DNS就是最典型的服务发现系统了。 在微服务架构中的服务发现的工作原理…

【动态规划】03使用最小花费爬楼梯(easy1)

题目链接&#xff1a;leetcode使用最小花费爬楼梯 目录 题目解析&#xff1a; 算法原理 1.状态表示 2.状态转移方程 3.初始化 4.填表顺序 5.返回值 编写代码 题目解析&#xff1a; 题目让我们求达到楼梯顶部的最低花费. 由题可得&#xff1a; cost[i] 是从楼梯第 i 个…

【附源码】完整版,Python+Selenium+Pytest+POM自动化测试框架封装

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、测试框架简介 …

【VRTK】【VR开发】【Unity】11-甩臂移动

课程配套学习资源下载 https://download.csdn.net/download/weixin_41697242/88485426?spm=1001.2014.3001.5503 【概述】 除了一般的移动能力,VRTK还提供更为沉浸的甩臂移动。 【设定摇杆输入中间件】 在Hierarchy中展开Button Input Actions,其下生成两个新的空子对象…

看图学源码之 CopyOnWriteArraySet源码分析

基本介绍 使用内部CopyOnWriteArrayList进行所有操作的Set 特点 它最适合以下应用程序&#xff1a;集合大小通常较小、只读操作的数量远远多于可变操作&#xff0c;并且您需要在遍历期间防止线程之间的干扰。它是线程安全的。突变操作&#xff08; add 、 set 、 remove等&…

主动而非被动:确保网络安全运营弹性的途径

金融部门处理威胁的经验对网络安全领域的任何人都有启发——没有什么可以替代提前摆脱潜在的风险和问题。 从狂野西部的银行劫匪到勒索软件即服务 (RaaS)&#xff0c;全球金融生态系统面临的威胁多年来发生了巨大变化。技术进步带动了金融业的快速发展&#xff0c;从现金交易到…

基于轻量级MnasNet模型开发构建40种常见中草药图像识别系统

文本是前文的后续&#xff1a; 《python基于轻量级GhostNet模型开发构建23种常见中草药图像识别系统》 前文主要是在小批量小种类数据集上尝试开发构建基于轻量级CNN模型的中草药图像识别系统&#xff0c;本文的初衷是想要构建一个大类别大数据集的基础&#xff0c;但是无奈发…