Linux进程概念(2)

一、进程状态

Linux的进程状态实际上就是 struct task_struct 结构体中的一个变量

1.1状态汇总

其中,Linux 状态是用数组储存的,如下:

static const char * const task_state_array[] =
{
        "R (running)",        // 0
        "S (sleeping)",       // 1
        "D (disk sleep)",    // 2
        "T (stopped)",        // 4
        "t (tracing stop)",   // 8
        "X (dead)",            // 16
        "Z (zombie)",         // 32
};

R运行状态(running) : 并不意味着进程一定在运行中,它表明进程要么是在运行中要么在运行队列里。
S睡眠状态(sleeping): 意味着进程在等待事件完成,进程在等待资源就绪。

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

1.2 睡眠状态


我们的 printf 是让代码输出到显示器上,而我们的CPU每次从内存中读取数据,我们查看实时进程时,进程每次都在SLEEP的原因是:CPU处理速度太快,导致我们每次查看时CPU都已经完成工作,等待下一次资源就绪!而我们都已经打印数十行却未观察到RUN状态,足以说明CPU运行速度之快。

睡眠状态还有一个是 [D] 状态,处于D状态下的进程处于深度睡眠,不可以被杀,不可中断睡眠

1.3暂停状态

记得之前我们聊了 [kill] 命令,我们现在来看看 [kill] 中的符号,我们先提个别,其他部分以后会讲
这里的19号符号 [SIGSTOP] 可以让我们的进程停下来,18号符号 [SIGCONT] 可以让暂停的进程重新跑起来。

[kill -19 [pid]] 可以暂停程序,我们通过之前的进程信息查询也可以看到进程的 status 处于 T 状态

此时出入代码[kill -18 [pid]] 即可让进程重新启动:

其实我们很早就接触过[暂停状态],当我们在VS下调试程序时,我们的断点就是让进程进入到了暂停状态。

二、僵尸进程[Z]

2.1概念

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

我们未来会用 [waitpid] 命令读取僵尸进程,使用该命令时,僵尸进程就会由 [Z] 状态变为 [X] 状态,最后由操作系统释放。

我们之前说过 Linux 下使用的大部分执行操作,本质上都是运行进程,那我们使用过那么多命令,为什么没有产生过僵尸呢?
原因是直接在命令行中启动的进程,它们的父进程是 bash ,bash 会自动回收新进程的僵尸。

2.2弊端

1.如果父进程不读取子进程,那么子进程就一直处于Z状态
2.Z状态若一直不退出,那么储存它的PCB将一直被维护
3.如果父进程创建了很多子进程且不读取子进程,那么会造成内存资源浪费和内存泄露!

三、孤儿进程

子进程如果先退出,而父进程没有进行任何操作,那么子进程就会变成僵尸进程。
如果父进程先退出,子进程就称之为“孤儿进程”。

为了保证子进程正常被回收,孤儿进程一般都会被1号进程(又称 init 进程,即OS)所领养。

四、进程优先级

4.1基本概念

cpu资源分配的先后顺序,就是指进程的优先权。
优先权高的进程有优先执行权利。
还可以把进程运行到指定的CPU上,把不重要的进程安排到某个CPU,可以大大改善系统。

4.2查看系统进程

在 linux 系统中,用 [ps –l] 命令则会类似输出以下几个内容:

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

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

相关文章

OceanBase4.2版本 Docker 体验

📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&am…

Unity开发中Partial 详细使用案例

文章目录 **1. 分割大型类****2. 与 Unity 自动生成代码协同工作****3. 团队协作****4. 共享通用逻辑****5. 自定义编辑器相关代码****6. 配合 Unity 的 ScriptableObjects 使用****7. 多人协作与版本控制系统友好** 在 Unity 开发中, partial 关键字是 C# 语言提供…

ChatGPT提问技巧——问题解答提示

ChatGPT提问技巧——问题解答提示 问题解答提示是一种允许模型生成回答特定问题或任务的文本的技术。要做到这一点,需要向模型提供一个问题或任务作为输入,以及与该问题或任务相关的任何附加信息。 一些提示示例及其公式如下: 示例 1&…

低代码开发平台-企业级可视化快速开发工具

一、你们是否也遇到了以下问题 (1)作为传统型的软件公司,你们是否也遇到以下困扰: (2)作为大型企业软件开发部,你们是否也遇到以下困扰: 二、低代码平台介绍 MSPF快速开发平台是一…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的障碍物检测系统(深度学习代码+UI界面+训练数据集)

摘要:开发障碍物检测系统对于道路安全性具有关键作用。本篇博客详细介绍了如何运用深度学习构建一个障碍物检测系统,并提供了完整的实现代码。该系统基于强大的YOLOv8算法,并对比了YOLOv7、YOLOv6、YOLOv5,展示了不同模型间的性能…

Elasticsearch使用Kibana进行基础操作

一、Restful接口 Elasticsearch通过RESTful接口提供与其进行交互的方式。在ES中,提供了功能丰富的RESTful API的操作,包括CRUD、创建索引、删除索引等操作。你可以用你最喜爱的 web 客户端访问 Elasticsearch 。事实上,你甚至可以使用 curl …

国内新闻媒体排行,如何邀约媒体现场造势?

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 国内新闻媒体排行可以根据多个维度进行,例如影响力、发行量、网站流量等。以下是一些常见的国内新闻媒体排名方式: 综合影响力排名:人民日报、新华社、…

RocketMQ 面试题及答案整理,最新面试题

RocketMQ的消息存储机制是如何设计的? RocketMQ消息存储机制的设计原理: 1、CommitLog文件: 所有的消息都存储在一个连续的CommitLog文件中,保证了消息的顺序写入,提高写入性能。 2、消费队列: 为每个主…

honle电源维修UV电源控制器维修EVG EPS60

好乐UV电源控制器维修;honle控制器维修;UV电源维修MUC-Steuermodul 2 LΛmpen D-82166 主要维修型号: EVG EPS 60/120、EVG EPS 100、EVG EPS200、EVG EPS 220、EVG EPS 340、EVG EPS40C-HMI、EVG EPS60 HONLE好乐uv电源维修故障包括&#…

理论学习 BatchNorm2d

import torch import torch.nn as nn# With Learnable Parameters m nn.BatchNorm2d(100) # Without Learnable Parameters m nn.BatchNorm2d(100, affineFalse) input torch.randn(20, 100, 35, 45) output m(input)print(output) print(output.shape)这段代码展示了如何使…

Unity制作马赛克效果

大家好,我是阿赵。   之前在玩怒之铁拳4里面,看到了马赛克场景转换的效果,觉得很有趣,于是也来做一下。 一、2D版本的马赛克转场效果 先看看视频效果: 马赛克转场 这里我是直接写shader实现的,我这里是把…

案例分析篇14:信息系统安全设计考点(2024年软考高级系统架构设计师冲刺知识点总结系列文章)

专栏系列文章推荐: 2024高级系统架构设计师备考资料(高频考点&真题&经验)https://blog.csdn.net/seeker1994/category_12593400.html 【历年案例分析真题考点汇总】与【专栏文章案例分析高频考点目录】(2024年软考高级系统架构设计师冲刺知识点总结-案例分析篇-…

Unity WebGL服务器标头的问题

目录 现象: 报错文本: 原因: 解决方案: 现象: 打包前,ProjectSetting 压缩选项设置为Brotli, 将打包的WebGL部署到阿里云OSS环境后,运行弹框提示错误. 报错文本: Unable to parse Build/WebGL.framework.js.br! This canha…

凡得首席战略官蔡聪,将出席“ISIG-流程挖掘技术与应用发展峰会”

3月16日,第四届「ISIG中国产业智能大会」将在上海中庚聚龙酒店拉开序幕。本届大会由苏州市金融科技协会指导,企智未来科技(RPA中国、AIGC开放社区、LowCode低码时代)主办。大会旨在聚合每一位产业成员的力量,深入探索R…

【报错】File ‘xxx.ui‘ is not valid

Q: Pysider6中设计好的ui转py时,出现File ‘xxx.ui’ is not valid A: 重新配置外部工具 $FileName$ -o $FileNameWithoutExtension$.py $FileDir$

抢先了解:阿里巴巴面试必问!Spring设计思想解析

大家好,我是小米!今天,我要和大家一起探讨阿里巴巴面试中常见的一个热门话题:“Spring设计思想”!如果你也对这个话题感兴趣,那就跟着我一起来了解一下吧! IOC 控制反转 首先,我们来聊聊IOC 控制反转。在软件开发中,IOC(Inversion of Control)即控制反转,是一种重…

第42期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区,集成了生成预训练Transformer(GPT)、人工智能生成内容(AIGC)以及大语言模型(LLM)等安全领域应用的知识。在这里,您可以找…

【20240309】WORD宏设置批量修改全部表格格式

WORD宏设置批量修改全部表格格式 引言1. 设置表格文字样式2. 设置表格边框样式3. 设置所有表格边框样式为075pt4. 删除行参考 引言 这两周已经彻底变为office工程师了,更准确一点应该是Word工程师,一篇文档动不动就成百上千页,表格图片也是上…

php.exe运行时,提示缺少VCRUNTIME140.dll

php.exe运行时,提示缺少VCRUNTIME140.dll 下载地址 https://www.microsoft.com/zh-cn/download/details.aspx?id48145根据需要选择下载3.运行安装后,再次运行php.exe。

【Javase基础语法】String类常见的字符串操作方法

引言 个人主页:努力学编程-CSDN博客 学习领域:C语言进阶,javase基础语法 每日鸡汤:爱意随风起,人生不言弃 字符串的定义: public static void main(String[] args) { // 使用常量串构造 String s1 "h…
最新文章