【lesson10】进程状态

news2024/11/24 1:25:42

文章目录

  • 认识进程状态
    • 新建
    • 运行
    • 阻塞
    • 挂起
  • Linux具体的进程状态
    • R
    • S
    • D
    • t
    • T
    • X
    • Z
    • 是什么
    • 为什么

认识进程状态

在这里插入图片描述
上面就是各种进程状态,上面都是理论进程状态理论进程状态放在哪个操作系统中都是正确的,但是具体的操作系统实现可能又会有所不同。
下面我们来理解进程状态:

其实进程状态就是进程PCB结构体中定义的一个status变量,我们知道改变status就是改变进程的状态。
在这里插入图片描述

新建

字面意思,进程刚刚被创建的状态

运行

task_struct结构体在运行队列中排队的情况,就叫做运行状态。
在这里插入图片描述
有人会有疑问task_struct结构体只是在排队又不是正在被执行,怎么能叫做运行态呢?
例子理解:
比如张三在食堂排队准备吃饭,这是他的舍友李四打电话过来问张三你在干嘛,张三会说我在吃饭啊。
这时候张三正在吃放吗?并没有只是在排队。这也就理解了上面的问题。

阻塞

等待非CPU资源就绪的状态就叫阻塞状态。

系统中一定是存在各种资源的,不仅仅是CPU资源,还有网卡、磁盘、显卡等其它设备。
我们使用CPU资源就需要运行队列,所以可想而知OS中一定不仅仅值存在一种队列。
在这里插入图片描述
例子:
在这里插入图片描述
运行结果:
在这里插入图片描述
我们可以看到,程序一直在等我们键盘输入数据,如果我们一直不输入数据,就是等待键盘数据资源就绪。而这个进程的状态就是阻塞状态。

挂起

在这里插入图片描述
当内存开不足的时候,OS操作系统会将长时间不执行的进程代码和数据换出到磁盘中。也就是SWAP分区中。所以我们自己安装系统的时候,一般我们会自动分出一个SWAP分区。
在这里插入图片描述
例子理解:
假设你们学校旁边发生了山体滑坡,而国家排军队来帮助周边村民保护各种财产。但是这些士兵没有地方住,于是你们学校被政府告知要安排这些士兵的住处,但是学校宿舍不够,于是校领导安排你们先回家,等灾情结束士兵们离开你们再回来。
那么你们离开学校相当于被学校开除了吗?
当然不是,你们的个人信息还在学校的教务处中,你们知识肉体离开了学校。
所以同理推广到挂起。挂起的时候进程的PCB结构体还在内存中,只不过代码和数据被放入到SWAP分区中了。

结论:当内存不足的时候,OS通过适当的置换进程的代码和数据到磁盘中,这个进程的状态就叫挂起。

Linux具体的进程状态

循环监测进程指令:

while :; do ps axj | head -1 && ps axj | grep mytest | grep -v grep; sleep 1; echo "########################"; done

R

R:运行状态
演示:
在这里插入图片描述
运行代码,监测进程:
在这里插入图片描述
我们运行代码的时候监测进程,我们发现进程是S状态,这是为什么呢?不应该是R状态吗?因为printf()需要访问外设,而访问外设速度的慢所以需要等待外设资源就绪,所以就不是运行态。我们接下来把printf去掉看看进程状态。
在这里插入图片描述
在这里插入图片描述
我们发现此时进程的状态就变为R状态

S

S:阻塞状态、等待状态、睡眠状态(可中断睡眠)
演示:
在这里插入图片描述
运行代码和监测:
在这里插入图片描述
我们看到,该进程为S状态。
这里我们看到不管是之前的R还是现在的S后面都跟了+号,那么这个+号表明什么意思呢?
+号说明该进程属于前台进程,在运行是输入任何指令都无效。
我们可以把前台进程变成后台进程,这样进程运行就不影响我们输入指令了。那么如何变成后台进程。
就比如下面这个死循环代码正常情况下它会一直死循环一直占用窗口,我们不能输入任何指令,但是我们把它变成后台进程呢?
在这里插入图片描述
在这里插入图片描述
我们可以看到,还能输入指令并且进程还存在,只不过变为了后台进程。

D

D:磁盘睡眠,也被称为不可中断睡眠。
例子:
当我们进程需要向磁盘写入大量数据的时候,进程需要等待数据写入是否成功的结果。
在这里插入图片描述
假如当前服务器压力过大的时候,OS通过一定的手段,杀掉一些进程,来起节省空间的作用。可就在这时候进程A被杀掉了,这样就导致了大量的数据流失。
所以将这里的进程被设为D状态,并且告知操作系统D状态的进程一定不能杀掉。

dd命令能够演示D状态进程。

t

t:调试状态,当用gdb调试代码的时候,这个进程会被称为t状态。
演示:
在这里插入图片描述

T

T:暂停状态
在这里插入图片描述
我们可以看到T状态就是代码暂停,发送19号信号可以触发T状态,发送18信号可以恢复原状态。
在这里插入图片描述
我们可以看到确实恢复了。

X

X:终止 瞬时性非常强
当进程退出需要操作系统回收资源,而操作系统此时特别忙,进程就会暂时的进入X状态。

Z

Z:僵尸状态

是什么

例子:
假如张三有晨跑的习惯,今天张三正在晨跑,而此时李四飞一样的从张三面前跑过去。但是没跑出去多远,李四就倒在了路上,张三过去查看发现没呼吸和心跳了。于是张三打了120,和110没过多久120和110同时赶来。110立马封锁现场,120查看发现确实已经没救了。于是110立马请来法医调查死者死因,最后发现是经常不规律睡觉然后跑步猝死的。于是110立马通知死者家属,并且拉走死者一天。

上面例子可推广到进程:一个进程已经退出,但是还不允许被OS释放,处于一个被检测的状态,叫做僵尸状态。

为什么会不允许被OS释放呢?
因为父进程或者操作系统可能需要该进程的运行返回值或者其它返回结果,而父进程或者OS还在忙其它事情所以还不允许被释放。

那么该进程一般是谁回收的呢?
一般是父进程或者OS回收。

为什么

那么维持僵尸状态是为什么呢?
维持该状态是为了让父进程或者OS获取该进程运行结果和回收的。
代码演示僵尸进程:
在这里插入图片描述
运行:
在这里插入图片描述
本代码子进程运行几次就退出,而父进程一直在运行,所以子进程就一直处在僵尸状态。

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

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

相关文章

SurroundOcc:用于自动驾驶的多摄像头3D占用网格预测

文章:SurroundOcc: Multi-Camera 3D Occupancy Prediction for Autonomous Driving 作者:Yi Wei, Linqing Zhao, Wenzhao Zheng, Zheng Zhu , Jie Zhou, Jiwen Lu 编辑:点云PCL 代码:https://github.com/weiyithu/SurroundOcc.git…

【AI视野·今日NLP 自然语言处理论文速览 第三十七期】Wed, 20 Sep 2023

AI视野今日CS.NLP 自然语言处理论文速览 Wed, 20 Sep 2023 Totally 64 papers 👉上期速览✈更多精彩请移步主页 Daily Computation and Language Papers SlimPajama-DC: Understanding Data Combinations for LLM Training Authors Zhiqiang Shen, Tianhua Tao, Li…

js惰性函数

看下面这份ts代码 实现的效果也很简单,就是将一份文本,复制到剪切板上,未了兼容更多的浏览器(没错说的就是你>ie !),做了一个兼容性判断, 当浏览器支持navigator.clipboard这个api时,就直接调用这个api将文本复制到剪切板中, 如果不支持这个api的话,就执行else里面的代码,这…

【Kafaka实现高吞吐量、低延迟的底层原理】

文章目录 Kafaka实现高吞吐量、低延迟的底层原理顺序写入Page Cache零拷贝分区分段索引批量读写批量压缩 Kafaka实现高吞吐量、低延迟的底层原理 Kafka虽然是基于磁盘做的数据存储,但却具有高并发、高吞吐量、低延时的特点,其吞吐量动辄几万、几十上百万…

springBoot对接多个mq并且实现延迟队列---未完待续

mq调用流程 创建消息转换器 package com.wd.config;import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter; import org.springframework.amqp.support.converter.MessageConverter; import org.springframework.context.annotation.Bean; import o…

深度解析React 18应用性能提升

众所周知,React 18 引入的一个重要特性就是并发功能,从根本上改变了 React 应用程序的渲染方式。本文将带大家一同探讨这些最新功能的具体作用,特别是如何提高应用程序性能。 一、主线程与长任务 当我们在浏览器中运行 JavaScript 时,JS 引擎会在单线程环境下执行代码内容…

Kubernetes基础(二)-Headless Service

1 简介 Headless Service是一种特殊的服务类型,它不会分配虚拟 IP,而是直接暴露所有 Pod 的 IP 和 DNS 记录。这客户端可以直接访问 Pod IP 地址,并使用这些 IP 地址进行负载均衡。 Headless Services是一种特殊的service,其spec…

封装了一个中间放大效果的iOS轮播视图

效果图 计算逻辑 设定在中间展示的size,即正常size,然后设置水平和竖直方向上的margin, 在view的origin和scrollView的contentoffset相等的时候,即 视图处在正中间的时候,最大,然后通过计算其他视图的origin和scrollV…

计算机基础 堆和栈

首先我们需要知道的是栈和堆是两种数据结构 1.栈和堆的定义 栈:是一种先进后出的数据结构,是一种线性结构 堆是一种树形结构,是一颗完全二叉树, 其存储的元素可以通过指针或引用访问 最大堆【大根堆】 :堆中的每一个…

js-cookie使用 js深度克隆(判断引用类型是数组还是对象的方法)

cookie和深度拷贝的使用 1、js-cookie使用2、js深度克隆 1、js-cookie使用 前端的本地存储分为 localstorage、sesstionstorage、cookie 但是咱们有时候需要做7天免登录的需求时,选择 cookie 作为前端的本地存储是在合适不过的了 直接操作 cookie 可以, …

ModbusTCP 转 Profinet 主站网关在博图配置案例

兴达易控ModbusTCP转Profinet网关,在 Profinet 侧做为 Profinet 主站控制器,接 Profinet 设备,如伺服驱动器;兴达易控ModbusTCP 和 Profinet网关在 ModbusTCP 侧做为 ModbusTCP 从站,接 PLC、上位机、wincc 屏等。 拓扑…

Spring事务1+入门案例(简约银行转账)

0、事务基础概念 1.事务角色: 2.事务相关配置 一、配置文件的书写 1.JDBC配置文件 public class JdbcConfig {Value("${jdbc.driver}")private String driver;Value("${jdbc.url}")private String url;Value("${jdbc.username}")p…

win11安装h3c lab无法启动putty终端的解决方法

文章目录 问题记录作者自己的解决方法第一步:安装MobaXterm第二步:修改h3c lab的终端工具 问题记录 win11可以同时安装vm、virtualBox、typer-v安装,因为在最新的系统中已经兼容但是可能出现win11安装h3c lab无法启动putty终端的问题&#x…

数据结构_顺序表_尾插、尾删、头插、头删(附带详解)

文章目录 前言一. 线性表二. 顺序表 - - - 数组2.1 什么是顺序表2.2 顺序表一般可以分为2.2.1 静态顺序表(使用定长数组存储元素)2.2.2 动态顺序表:使用动态开辟的数组存储2.2.3 顺序表的接口实现 三. SeqList.c 中各个接口的实现。3.1 初始化…

Java实现Modbus Tcp协议读写模拟工具数据

标题 前言一、读写模拟工具中数据(1) 定义Controller层(2) 定义Service层实现 二、调试(1) 读数据(2) 向寄存器写单个数据(3) 向寄存器写多个数据 前言 参考文章:https://www.cnblogs.com/ioufev/p/10831289.html 该文中谈及常见的几种读取设备数据实现&#xff0…

无硬盘的版本 1099,14寸笔记本,而且无硬盘的,特别有有意思,可以自己购买个硬盘,安装linux系统或者windows。

1,千元笔记本,金属外壳 有人进行评测了: https://www.bilibili.com/video/BV1Td4y1K7Cp 1499元的全新笔记本,有什么猫腻? 看了下价格,现在还优惠400,变成了1099。 https://item.jd.com/100851…

Django — 请求和响应

目录 一、请求1、概念2、请求参数方式分类3、案例3.1、URL 路径参数3.2、查询字符串参数3.3、form 表单传参3.4、Json 格式参数3.5、上传文件 二、响应1、HttpResponse2、JsonResponse 三、GET 和 POST 区别1、相同点2、不同点 一、请求 1、概念 请求(Request&…

DDR4 眼图测试方法

DDR的全拼是Double Data Rate SDRAM双倍数据速率同步动态随机存取内存。主要就是用在电脑的内存。他的特点就是走线数量多,速度快,操作复杂,给测试和分析带来了很大的挑战。目前DDR技术已经发展到了DDR5,性能更高,功耗…

【算法练习Day4】 两两交换链表节点删除链表倒数第 N 个结点环形链表 II

​ ​📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:练题 🎯长路漫漫浩浩,万事皆有期待 文章目录 两两交换链表中的节点一…

毫米波雷达 TI IWR1443 在 ROS 中进行 octomap 建图

个人实验记录 /mmwave_ti_ros/ros_driver/src/ti_mmwave_rospkg/launch/1443_multi_3d_0.launch <launch><!-- Input arguments --><arg name"device" value"1443" doc"TI mmWave sensor device type [1443, 1642]"/><arg…