Linux学习——进程状态

目录

 一,进程状态

1,进程状态的分类

2.状态的本质

3.进程状态详解

1.运行状态

2.阻塞状态

3.挂起状态

4.Linux内核中的状态分类


 一,进程状态

1,进程状态的分类

如下图:

在计算机中我们的状态的分类便如下图所示!但是我们在这篇博客里只讲三个状态:

1.运行状态,2.阻塞状态,3.挂起状态。

2.状态的本质

其实状态的本质便是在进程PCB里面存放的一个字段,这个字段的名称便是status。那就是说状态其实就是进程PCB里面的一个变量罢了!!!

3.进程状态详解

1.运行状态

在什么情况下进程的状态才能被改为运行状态呢?答案是当我们的进程被放入CPU的运行队列时!在这里补充一个知识点:每一个CPU在系统层面上都会维护一个运行队列!

2.阻塞状态

何为阻塞状态呢?所谓阻塞便是我们当前的进程需要等待!先补充一个小知识便是:在计算机中,我们的底层硬件都会维护一个dev waitqueue。何时会出现阻塞状态呢?比如说:

在运行某些进程时我们必然会有进行IO操作的时候,这个时候需要键盘等设备的输入。所以在我们的进程运行到要执行这些IO操作时我们的进程PCB会从运行队列里剥离出来而连接到dev维护的等待队列中。这个时候便出现了阻塞状态!

3.挂起状态

     所谓挂起状态其实也是阻塞状态的一种。但是为什么又要叫做挂起状态呢?其实这是因为这种状态的出现是因为当我们的内存被占满的时,我们的操作系统便要开始清理空间,这时一些处于等待状态的PCB便被列入了清理对象的列表中,于是等待状态的进程PCB就要被写入到磁盘里,那么这个进程就被挂起了。它的状态也被叫做挂起状态了。

4.Linux内核中的状态分类

先来看看源代码:

/*
* The task state array is a strange "bitmap" of
* reasons to sleep. Thus "running" is zero, and
* you can test for combinations of others with
* simple bit tests.
*/
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 */
};

首先便来看看第一个状态。现在直接教大家一个可以比较方便的查看状态的指令:

while :;do ps ajx | head -1&& ps ajx | grep "程序名” | grep -v grep ;sleep 1;done;(一定要记住要在while后面加上空格)

现在来写一个程序,代码如下:

    #include<stdio.h>#include<unistd.h>int main(){while(1);                                                                            return 0;}      

查看状态如下:

可以看到这个程序执行时便是运行状态,这个状态便是R。

现在将代码改造如下:

1 #include<stdio.h>2 #include<unistd.h>3 int main()4 {5   while(1)6   {7     printf("I am a process!\n");//bin加上一个IO操作。                                  8     sleep(1);//加上一个sleep()操作。9   }10   return 0;11 }

接下来再来查看状态:

这里便成为了阻塞状态了,这个状态便是S。

       第三个叫做D状态,这个状态我们一般是见不到的,如果被你见到了那你的计算机就离宕机不远了。这个D状态其实就是相当于一个免死金牌,当我们系统中的内存被占满时我们的操作系统便要开始杀进程了,但是某些进程可能在将自己的数据写入到磁盘中,此时这个进程便处于D状态,这时操作系统便不能杀死这个进程。

   第四和第五个状态T与t都叫做停止状态,第一个T是在普通情况下的停止状态。这个状态只有在我们使用kill指令让我们的程序终止时才会出现。这个kill指令的编号时-19。所以这条命令便是kill -19 +pid。给一个运行的程序发送这条指令就会看到这个结果:

出现了T。

当我们的的程序在debug模式下运行时(在Makefile文件的gcc指令后面加上-g),如果再次使用这条语句便会出现一个t:

     第四个状态叫做X状态,也就是死亡状态。当出现这个状态时,我们的进程便已经将任务完成了,于是这个进程便要将自己的PCB给销毁掉将空间还给操作系统。

    第五个状态叫做Z状态,这个状态叫做僵尸状态。这个状态与死亡状态的区别在于这个进程已经结束了,但是它的PCB还没有被它的上一级进程回收。这样的进程便被叫做僵尸进程,与之相反的便是孤儿进程(孤儿进程便是当父进程结束,子进程还在运行时出现的一种状态,并且该子进程会被1号进程接管)。

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

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

相关文章

【Java实战】Mysql读写分离主从复制搭建保姆级教程

MySQL 的数据同步通常采用主从复制&#xff08;Master-Slave&#xff09;的方式。 主从复制基于二进制日志&#xff08;binlog&#xff09;。主服务器&#xff08;Master&#xff09;在 binlog 中记录数据更改&#xff0c;从服务器&#xff08;Slave&#xff09;将这些日志读取…

Git版本控制管理

Git基础_环境配置 当安装Git后首先要做的事情是设置用户名称和email地址。这是非常重要的&#xff0c;因为每次Git提交都会使用该用户信息。 设置用户信息 git config --global user.name "Bandits" git config --global user.email "gb010704163.com"查…

Java反射调用jar包实现多态

上一篇实现了反射调用jar包&#xff0c;但是没有实现多态&#xff0c;这次先给自己的jar包类抽象一个接口&#xff0c;然后实现类实现接口。最后调用放反射得到的对像转换成接口类型调用执行。 定义接口&#xff0c;指定包为ZLZJar package ZLZJar;public interface ITest {p…

FPGA中的LUT查找表工作原理。

在RAM中填入1110,后续的不同AB组合Y输出对应的值&#xff0c;实现上面逻辑表达式的功能。

计算机视觉开源代码汇总

1.【基础网络架构】Regularization of polynomial networks for image recognition 论文地址&#xff1a;https://arxiv.org/pdf/2303.13896.pdf 开源代码:https://github.com/grigorisg9gr/regularized_polynomials 2.【目标检测&#xff1a;域自适应】2PCNet: Two-Phase Cons…

京东数据分析:2023年下半年母婴市场各大细分赛道消费趋势盘点!

于今天的新生代父母而言&#xff0c;在诸多消费观念被改变的当下&#xff0c;新生父母们在育儿上更强调精细化&#xff0c;在这种情况下&#xff0c;母婴市场的消费升级已是大势所趋。不过&#xff0c;在如今收入增速整体放缓的背景下&#xff0c;各细分赛道的消费升级都出现了…

网络社区挖掘-图论部分的基本知识笔记

1 网络社区挖掘定义 网络社区挖掘是指利用数据挖掘技术和机器学习算法&#xff0c;分析社交网络、在线社区或互联网上的各种交互数据&#xff0c;以揭示其中隐藏的模式、关系和信息。这些社区可以是社交媒体平台、在线论坛、博客、微博等&#xff0c;人们在这些平台上进行交流…

众和策略:尾盘5分钟拉升意味着什么?

跟着投资者越来越重视股市改动&#xff0c;一些术语逐渐进入商场人员的词汇库中&#xff0c;例如“尾盘5分钟拉升”。这个概念在许多人眼中是听起来生疏的&#xff0c;但它实际上是股市生意中十分重要的一种现象。 简略来说&#xff0c;尾盘5分钟拉升是指股市在毕竟5分钟呈现了…

智能网关IOT 2050采集应用

SIMATIC IOT2050 是西门子公司新推出的应用于企业数字化转型的智能边缘计算和云连接网关。 它将云、公司内 IT 和生产连接在一起&#xff0c;专为直接在生产环境中获取、处理和传输数据的工业 IT 解 决方案而设计。例如&#xff0c;它可用于将生产 过程与基于云的机器和生产数据…

学习记录682@查准率与查全率真的必然负相关吗?

查准率和查全率定义 查准率与查全率真的必然负相关吗&#xff1f; 先说结论&#xff0c;两者并非绝对负相关&#xff0c;只是在统计学上表现出大概率的负相关性&#xff0c;而数学证明上无法严格证明两个的负相关性。 枚举来证明两者并非必然负相关 一组数据&#xff1a;A1、…

4.2 网际协议IP

思维导图&#xff1a; 前言&#xff1a; **笔记 4.2 - 网际协议IP** 1. **定义与重要性**&#xff1a; - 网际协议IP是TCP/IP体系中的核心协议之一。 - 它是互联网的关键标准协议。 2. **发展背景**&#xff1a; - 又被称为Kahn-Cerf协议。 - 由Robert Kahn和…

vue 拿到数据后,没有重新渲染视图,nuxt.js拿到数据后,没有重新渲染视图,强制更新视图

以下为Vue2的解决方案 一、 Vue.set&#xff08;&#xff09; 问&#xff1a;什么情况下使用&#xff1f; 答&#xff1a;如果你向响应式数据添加新的“属性”&#xff0c;理论上&#xff0c;一般情况下是没问题的&#xff0c;但是&#xff0c;如果你的级别比较深&#xff0c;又…

ts使用记录

1、安装&#xff1a;通过管理员权权限使用cmd或者终端全局安装 npm install -g typescript2、运行&#xff1a; 可以通过tsc命令运行hello.ts文件 tsc hello.ts3、通过vscode的run code插件去右键运行 1.先安装插件run code 2.全局安装ts-node&#xff0c;npm install -g ts-n…

深入浅出的介绍一下虚拟机VMware Workstation——part3(VMware快照)

虚拟机VMware使用 前言快照的原理快照的使用 前言 可以先查看之前的2篇博文&#xff0c;学习基础的虚拟机使用 深入浅出的介绍一下虚拟机VMware Workstation——part1 深入浅出的介绍一下虚拟机VMware Workstation——part2(详细安装与使用) 由于我们使用虚拟机的初衷就是用来…

当遇到修复错误0xc000000e时,你的电脑需要修复。如何在Windows 11/10上修复此错误

恢复错误代码0xc000000e,你的电脑需要修复,表示硬件故障或驱动器配置不正确,并可能伴随不同的错误消息,如: 所需设备未连接或无法访问 无法加载所选条目 由于应用程序丢失或损坏,无法加载所选条目 启动选择失败,因为无法访问所需的设备。 0xC000000E或STATUS_NO_SUCHDEV…

《持续交付:发布可靠软件的系统方法》- 读书笔记(五)

持续交付&#xff1a;发布可靠软件的系统方法&#xff08;五&#xff09; 第二部分——部署流水线第 5 章 部署流水线解析5.1 引言5.2 什么是部署流水线5.3 部署流水线的相关实践5.3.1 只生成一次二进制包5.3.2 对不同环境采用同一部署方式5.3.3 对部署进行冒烟测试5.3.4 向生产…

配置hpa后,target显示<unknown>/50%

背景&#xff1a; 有两个服务&#xff0c;server 负责主要后端请求&#xff0c;bill 负责计量计费请求。服务都是使用 helm 部署。测试提了一个缺陷&#xff0c;说全部服务没有配置hpa。 解决一 按照之前的代码结构添加了hpa后&#xff0c;发现&#xff1a; ➜ kubectl get…

数据结构-----红黑树的插入

目录 前言 红黑树的储存结构 一、节点旋转操作 左旋&#xff08;Left Rotation&#xff09; 右旋&#xff08;Right Rotation&#xff09; 二、插入节点 1.插入的是空树 2.插入节点的key重新重复 3.插入节点的父节点是黑色 4.插入节点的父节点是红色 4.1父节点是祖父…

IDEA启动C:\Users\badboy\.jdks\corretto-17.0.7\bin\java.exe -Xmx700m报错

出现的现象 这里没有记录当时的截图&#xff0c;主要报错如下&#xff1a; C:\Users\badboy.jdks\corretto-17.0.7\bin\java.exe -Xmx700m … Error occurred during initialization of VM Failed setting boot class path. 排查方式 遇到这种问题我首先就是百度&#xff0c;…

如何打造智能公厕:实现智慧监测、自动化运营和智慧化管理

在现代城市里&#xff0c;公共厕所是人们不可或缺的基础设施之一。然而&#xff0c;传统的公厕管理方式已经无法满足人们对公厕的期望&#xff0c;因此需要采用智慧公厕管理系统来提升公厕服务的质量。本文将以智慧公厕领先厂家广州中期科技有限公司&#xff0c;大量精品案例现…