Linux 进程(三)

Linux进程状态的查看:

        这是Linux内核源代码对于进程状态的定义:

         R运行状态(running): 并不意味着进程一定在运行中,它表明进程要么是在运行中要么在运行队列里。
        S睡眠状态(sleeping): 意味着进程在等待事件完成(这里的睡眠有时候也叫做可中断睡眠,也叫浅度睡眠(interruptible sleep))。

        D磁盘休眠状态(Disk sleep)有时候也叫不可中断睡眠状态(uninterruptible sleep),在这个状态的进程通常会等待IO的结束。
        T停止状态(stopped): 可以通过发送 SIGSTOP 信号给进程来停止(T)进程。这个被暂停的进程可以通过发送 SIGCONT 信号让进程继续运行。
        X死亡状态(dead):这个状态只是一个返回状态,你不会在任务列表里看到这个状态。

         注意:状态后面有无+ 号说明这个进程是否为前台进程,有+就是前台进程可以通过ctrl+c终止掉,没有就需要通过 指令(kill -9 pid) 来杀死进程。

 R运行状态、 S睡眠状态(浅度睡眠)

        

        写一段简单的代码:

        这是一个死循环,但是我们经过多次的命令来查看该进程的状态发现,其都是s+ 的状态,难道是因为sleep的原因吗?但是经过实验发现即使是把sleep去掉,查看进程也是处于s+状态,原因是,cpu的处理速度极快(相对于外设来说,可能cpu已经处理完进程了,但是还没有打印在屏幕上),加上还有时间片的概念,导致一个进程在cpu上可能运行几毫秒就结束了,所以说即使查看死循环,也是s+的状态。

        那么怎么样才能查看到死循环,只有跑一个什么都不干的死循环!!

        只有这样的死循环才会出现R状态。

        D磁盘休眠状态

        当内存内存吃紧时,操作系统会杀死一些进程,避免操作系统挂掉,那么有些进程正在和设备之间互动,或者等待设备的反馈信息,或者等待设备的资源,如果杀死该进程,就会造成一些损失,那么D状态就是避免操作系统在内存吃紧的情况下“滥杀无辜”给予进程的“免死金牌”。

        但是系统一旦出现D的情况,说明操作系统距离挂掉也就不远了,说明当前磁盘反应的速度十分缓慢,缓慢到还被操作系统察觉到!!

        所以说一般情况下D状态是不会出现的。

         T、t停止状态(stopped)

                以上两个命令就是停止和重新运行进程:

        注意:ctrl + z 也是停止进程,ctrl+ c是中断程序,注意区别! 

        gdb调试模式下会出下 “t”。

        在系统中有时也会出现 T 大部分原因是 操作系统为了保护某些有害的进程对硬件的访问,而停止了进程。

          X死亡状态(dead):

        运行五秒后子进程显示出defunct(失效的;死人)转台!

        僵尸进程

        僵死状态(Zombies)是一个比较特殊的状态。当进程退出并且父进程(使用wait()系统调用)没有读取到子进程退出的返回代码时就会产生僵死(尸)进程
        僵死进程会以终止状态保持在进程表中,并且会一直在等待父进程读取退出状态代码。
        所以,只要子进程退出,父进程还在运行,但父进程没有读取子进程状态,子进程进入Z状态

        还是上面的代码!

为什么会有僵尸进程呢?

        创建进程是给用户完成工作的,进程结束时需要有数据结果!保存到pcb中,只有父进程读取了之后,拿到数据后,该进程才能销毁。

        如果父进程不读取子进程,那么子进程会一直处于僵尸状态,pcb也是一直会存在的,会占据内存,造成内存泄露!!!

        孤儿进程:

        父进程如果提前退出,那么子进程后退出,进入Z之后,那该如何处理呢?
        父进程先退出,子进程就称之为“孤儿进程”
        孤儿进程被1号init进程领养,当然要有init进程回收喽。

        代码:

        1号进程也可以是操作系统。同时子进程变成后台进程,只能通过指令来杀死。

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

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

相关文章

ipvlan介绍

最近使用docker,涉及到需要跨多台物理机部署系统,查了好多资料,最后查到了ipvlan。那什么是vlan,什么又是ipvlan。 交换机层面的vlan,是按802.1Q规范,在链路层中加了4字节的标识vlan的数据,交换…

如何在WordPress中批量替换图片路径?

很多站长在使用WordPress博客或者搬家时,需要把WordPress文章中的图片路径进行替换来解决图片不显示的问题。总结一下WordPress图片路径批量替换的过程,方便有此类需求的站长们学习。 什么情况下批量替换图片路径 1、更换了网站域名 有许多网站建设初期…

灯光开不了了,是不是NVIDIA的问题

如果你跟我一样灯光亮度调节不了了,然后显示适配器又没有了,你看一下是不是和我这个大怨种一样把NVIDIA卸了,为了这个东西,这屏幕亮瞎我的眼镜😢😢。只需要进入官网,你就可以直接找到&#xff0…

SSM框架(五):Maven进阶

文章目录 一、分模块开发1.1 分模块开发的意义1.2 步骤 二、依赖管理2.1 依赖传递2.2 可选依赖和排除依赖 三、继承与聚合3.1 聚合3.2 继承3.3 聚合和继承区别 四、属性4.1 pom文件的依赖使用属性4.2 资源文件使用属性 五、多环境开发六、跳过测试七、私服7.1 下载与使用7.2 私…

前端面试灵魂提问(1)

1.自我介绍 2.在实习中,你负责那一模块 3.any与unknow的异同 相同点:any和unkonwn 可以接受任何值 不同点:any会丢掉类型限制,可以用any 类型的变量随意做任何事情。unknown 变量会强制执行类型检查,所以在使用一个…

Redis RDB

基于内存的 Redis, 数据都是存储在内存中的。 那么如果重启的话, 数据就会丢失。 为了解决这个问题, Redis 提供了 2 种数据持久化的方案: RDB 和 AOF。 RDB 是 Redis 默认的持久化方案。当满足一定条件的时候, 会把当前内存中的数据写入磁盘, 生成一个快照文件 dump.rdb。Redi…

各类声音数据集大合集—乐器、车辆、鸟鸣、蜜蜂声音、歌曲、喇叭、人类声音不同等类型的声音数据集

最近收集了一大波关于各类声音的数据集,包含乐器、车辆、鸟鸣、蜜蜂声音、歌曲、喇叭、人类声音不同等类型的声音数据集,废话不多说,给大家逐一介绍!! 1、吉他和弦大调、小调数据集 吉他和弦大调、小调数据集&#x…

Hive数据倾斜之:数据类型不一致导致的笛卡尔积

Hive数据倾斜之:数据类型不一致导致的笛卡尔积 目录 Hive数据倾斜之:数据类型不一致导致的笛卡尔积一、问题描述二、原因分析三、精度损失四、问题解决 一、问题描述 如果两张表的jion,关联键分布较均匀,没有明显的热点问题&…

无桌面版docker在Ubuntu系统上安装

目录 注意 系统要求 卸载旧版本 安装 使用apt存储库安装 1. 设置 Docker 的apt存储库。 2. 安装Docker软件包 3. 通过运行镜像来验证Docker Engine安装是否成功 hello-world。 从包中安装 1. 进入 https://download.docker.com/linux/ubuntu/dists/。 2. 在列表中选择…

阿里云MySQL从 2003->1251->1396

目的 由于需要在阿里云的实例中装MySQL数据库,安装前期(本地访问)还是挺顺利的,但是到了远程连接的时候,却出现了一系列的Bug,以为是没有 实名认证没有备案 的原因导致的,但是后来…

在Spring Boot中使用@Async实现一个异步调用

在使用异步注解之前,我们需要先了解,什么是异步调用? 异步调用对应的事同步调用,同步调用是值程序按照我们定义的顺序依次执行,每一行程序都必须等待上一行的程序执行完成之后才执行,而异步是指在顺序执行…

动态规划------方法汇总

核心: 状态定义 状态转移方程 启发思路(两种情况):选 或 不选 / 选哪个 DP三步:先写回溯,时间复杂度 指数级别;递归的过程中会重复计算,要保存计算结果,递归搜索…

uniapp是否可以用elementUI等前端UI库、使用步骤以及需要注意的问题

文章目录 uniapp是否可以用elementUI等前端UI库使用方法和步骤问题如何解决 uniapp是否可以用elementUI等前端UI库 在PC端开发uniapp,可以用elementUI,因为elementUI就是PC端的。 在使用uniapp,选择vue2.0时,实测可以用nodejs16的…

Linux部署HDFS集群

(一)VMware虚拟机中部署 ps、其中node1、node2、node3替换为自己相应节点的IP地址,或者host文件中配置过的主机名,或者看前置准备 或者查看前置准备:Linux部署HDFS集群前置准备 1.下载压缩包 https://www.apache.or…

管理类联考-性质

性质 ——性质—— 一、是什么 (1)本质:判断一定范围内的对象是否具备某个性质的命题就是性质命题(直言命题)。直言命题是断定事物/对象是否具有某种性质的命题。直言命题在结构上由主项、谓项、联项和量项组成。 &am…

对Spring框架的一些总结

对Spring框架的一些总结 在文章开头我真心推荐大家一个优秀的编程老师:孙帅老师(孙哥suns),孙帅老师在哔哩哔哩的Spring5教学视频时长接近33个小时,从0基础到一步一步手把手的教你抽丝剥茧分析Spring框架的所有知识,孙帅老师的教…

打印元素绘制协议Java实现

我一直提倡的面向接口和约定编程,而打印元素绘制协议一直是我推荐的打印实现方式,我以前只是强调按打印元素绘制协议输出数据就行了,有实现程序按协议控制打印,说是可以用任何语言实现客户端程序而不影响打印业务,那么…

《opencv实用探索·八》图像模糊之均值滤波简单理解

1、前言 什么是噪声? 该像素与周围像素的差别非常大,导致从视觉上就能看出该像素无法与周围像素组成可识别的图像信息,降低了整个图像的质量。这种“格格不入”的像素就被称为图像的噪声。如果图像中的噪声都是随机的纯黑像素或者纯白像素&am…

【动态规划】LeetCode-91.解码方法

🎈算法那些事专栏说明:这是一个记录刷题日常的专栏,每个文章标题前都会写明这道题使用的算法。专栏每日计划至少更新1道题目,在这立下Flag🚩 🏠个人主页:Jammingpro 📕专栏链接&…

leetcode-160-相交链表(C语言实现)

题目: 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,…