Linux 第十三章

🐶博主主页:@ᰔᩚ. 一怀明月ꦿ 

❤️‍🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章,「初学」C++,linux

🔥座右铭:“不要等到什么都没有了,才下定决心去做”

🚀🚀🚀大家觉不错的话,就恳求大家点点关注,点点小爱心,指点指点🚀🚀🚀

目录

进程状态

进程状态是什么

运行状态

阻塞状态

挂起(阻塞挂起)

S休眠状态(sleeping)

D磁盘休眠状态(Disk sleep)

T停止状态(stopped)

t (tracing stop)

linux中具体的进程状态

前台进程

后台进程


进程状态

进程状态是什么

进程状态,就是pcb中的一个字段,就是pcb中的一个变量

例如 int status

#define NEW 1
#define RUNNING 2
#define BLOCK 3
…
pcb->status=NEW

if(pcb->status==NEW)pcb放入运行队列之类的
else if(pcb->status==BLOCK)pcb放入阻塞队列等

运行状态

只要在运行队列中的进程,状态都是运行状态(可以随时被调度)

阻塞状态

将进程放在等待队列就是阻塞状态

总结:

1)在操作系统中,会存在非常多的队列,运行队列,等待硬件的等待队列

2)进程状态变化的本质:

   1.更改pcb status整形变量

   2.将pcb链入不同的队列中

3)我们所说的所有的过程,都只和进程的pcb有关,和进程的代码数据没有关系

4)Os最先知道他所管理的设备状态变化的

5)当一个进程阻塞了,我们看到的是什么现象

   现象:进程卡住了

   原因:pcb没有在运行队列中,cpu不再调度该进程

6)所有的进程都在一个双链表中,根据进程的状态,将进程挪到不同队列中(运行队列、等待队列等),但是双链表中始终存在所有的进程

挂起(阻塞挂起)

S休眠状态(sleeping)

【阻塞状态】

浅度睡眠:可以被终止

浅度睡眠会对外部信号做出响应

在Linux进程中,sleep状态指的是程序调用sleep()函数后所处的状态。sleep()函数会让进程暂停一段时间,不再占用CPU资源,直到指定的时间过去才会继续执行。在这段时间内,该进程会被操作系统挂起,处于sleep状态。在该状态下,该进程不会被CPU调度执行,但是它的状态会保留下来,可以在指定时间后被唤醒。该状态通常用于实现延时操作或者等待条件满足后再进行下一步处理。

D磁盘休眠状态(Disk sleep)

【阻塞状态】

深度睡眠:不可被终止掉

专门针对磁盘设计的(针对io读取时,就是防止操作系统将进程pcb杀掉,但是该pcb连接的代码和数据放在磁盘中的)

T停止状态(stopped)

【阻塞状态】

在Linux中,kill是一个用于终止(或发送信号给)进程的命令。

[BCH@hcss-ecs-6176 9_25]$ kill -l
//-l列出全部的信号

1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR1//9是终止信号
11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP//18是继续信号,19是暂停信号
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR
31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX    


[BCH@hcss-ecs-6176 9_25]$ ./mytest
hello linux
hello linux
hello linux
hello linux
hello linux
hello linux
hello linux
hello linux
hello linux
hello linux

[1]+  已停止               ./mytest

[BCH@hcss-ecs-6176 9_25]$ kill -19 9849//暂停了pid9849的进程
[BCH@hcss-ecs-6176 9_25]$ ps ajx | head -1 && ps ajx | grep mytest
PPID   PID  PGID   SID TTY      TPGID STAT   UID   TIME COMMAND
32303  9849  9849 32187 pts/0    32303 T     1000   0:00 ./mytest//进程状态为T停止状态,而且自动切换为后台进程

我们为什么要暂停?在进程访问软件资源的时候,可能暂时不让进程访问,就将进程设置为T状态

在Linux进程中,stop状态指的是进程被暂停执行,并且不再占用CPU资源的状态。进程可能进入stop状态的原因有多种,其中包括以下几种常见情况:

1. 通过终端发送SIGSTOP信号:可以使用终端命令kill -STOP <PID>或者按下Ctrl+Z来发送SIGSTOP信号,使进程进入stop状态。

2. 收到SIGSTOP信号:进程可能会收到其他进程或系统发送的SIGSTOP信号,例如通过终端命令kill -STOP <PID>或者由于系统资源不足导致暂停执行。

在stop状态下,进程不会被CPU调度执行,但是它的状态和内存内容会保留。进程可以通过发送SIGCONT信号(如kill -CONT <PID>)来解除stop状态,恢复执行。stop状态通常用于进程调试、暂停执行以及与其他进程进行同步等操作。

t (tracing stop)

阻塞状态】
调试程序的时候,追踪,遇到断点,进程暂停了

[BCH@hcss-ecs-6176 9_25]$ ps ajx | head -1 && ps ajx | grep mytest
 PPID   PID  PGID   SID TTY      TPGID STAT   UID   TIME COMMAND
32303 21965 21965 32187 pts/0    21965 S+    1000   0:00 gdb mytest
21965 24315 24315 32187 pts/0    21965 t     1000   0:00 /home/BCH/9_25/mytest

linux中具体的进程状态

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): 意味着进程在等待事件完成(这里的睡眠有时候也叫做可中断睡眠(interruptible sleep))

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

T停止状态(stopped): 可以通过发送 SIGSTOP 信号给进程来停止(T)进程。这个被暂停的进程可以通过发送 SIGCONT 信号让进程继续运行。

X死亡状态(dead):这个状态只是一个返回状态,你不会在任务列表里看到这个状态

前台进程

前台进程:带有+

前台进程只能有一个,无法继续执行其他操作(例如,执行其他命令),可以control c终止掉

[BCH@hcss-ecs-6176 9_25]$ ./mytest
hello linux
hello linux
pwdhello linux//pwd指令无法执行
hello linux
lshello linux//ls指令无法执行
hello linux
^C//control c直接结束进程

[BCH@hcss-ecs-6176 9_25]$ ps ajx | head -1 && ps ajx | grep mytest
 PPID   PID  PGID   SID TTY      TPGID STAT   UID   TIME COMMAND
32303 16837 16837 32187 pts/0    16837 S+    1000   0:00 ./mytest//前台进程带有+

后台进程

后台进程:不带+

后台进程可以不止有一个,可以继续执行其他操作(例如,执行其他命令),不可以control c终止掉

[BCH@hcss-ecs-6176 9_25]$ ./mytest &//这样就在后台执行mytest进程
[1] 5823//pid=5823
[BCH@hcss-ecs-6176 9_25]$ hello linux
ls//执行了ls指令
Makefile  mytest  test.c
[BCH@hcss-ecs-6176 9_25]$ hello linux
phello linux
wd//执行了pwd指令
/home/BCH/9_25
[BCH@hcss-ecs-6176 9_25]$ hello linux
hello linux
hello linux
hello linux
hello linux

[1]+  已杀死               ./mytest

[BCH@hcss-ecs-6176 9_25]$ ps ajx | head -1 && ps ajx | grep mytest
 PPID   PID  PGID   SID TTY      TPGID STAT   UID   TIME COMMAND
32303  5823  5823 32187 pts/0    32303 S     1000   0:00 ./mytest//不带有+
[BCH@hcss-ecs-6176 9_25]$ kill -9 5823//后台进程control c是无法终止的,终止后台进程使用kill命令

pcb内部可以有自己的等待队列,一个进程可以等待另一个进程

总结:os维护的队列有很多,cpu上的运行队列,设备上的等待队列,进程上的等待队列等

 🌸🌸🌸如果大家还有不懂或者建议都可以发在评论区,我们共同探讨,共同学习,共同进步。谢谢大家! 🌸🌸🌸 

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

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

相关文章

IDEA主题美化【保姆级】

前言 一款好的 IDEA 主题虽然不能提高我们的开发效率&#xff0c;但一个舒适简单的主题可以使开发人员更舒适的开发&#xff0c;时常换一换主题可以带来不一样的体验&#xff0c;程序员的快乐就这么简单。话不多说&#xff0c;先上我自己认为好看的主题设置。 最终效果图: 原…

7.Prism框架之对话框服务

文章目录 一. 目标二. 技能介绍① 什么是Dialog?② Prism中Dialog的实现方式③ Dialog使用案例一 (修改器)④ Dialog使用案例2(异常显示窗口) 一. 目标 1. 什么是Dialog?2. 传统的Dialog如何实现?3. Prism中Dialog实现方式4. 使用Dialog实现一个异常信息弹出框 二. 技能介…

白话机器学习1:分类问题中的评价指标

机器学习中的评价指标非常多&#xff0c;它们用来衡量模型的性能和预测能力。不同类型的机器学习任务可能需要不同的评价指标。以下是一些常见的评价指标&#xff0c;按照不同类型的机器学习任务分类&#xff1a; 对于分类问题&#xff1a; 准确率&#xff08;Accuracy&#…

百度竞价开户详解:步骤、优势与注意事项

随着互联网的普及&#xff0c;网络营销已成为企业不可或缺的一部分。其中&#xff0c;百度竞价作为一种高效的网络推广方式&#xff0c;受到了越来越多企业的青睐。本文将详细介绍百度竞价开户的流程、优势以及注意事项&#xff0c;帮助企业更好地利用这一工具提升品牌知名度和…

ubuntu安装Anaconda安装及conda使用

一. 安装anaconda3详细教程 1、下载镜像 清华大学开源软件镜像站下载地址&#xff1a; https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ 下拉到最低端选择Linux&#xff0c;选择最新版&#xff08;32/64位&#xff09;下载。这里我下载的是版本Anaconda3-4.3.30-Linux…

Spire.PDF for .NET【文档操作】演示:创建 PDF/A 并插入图像的超链接

PDF/A 广泛用于 PDF 格式的长期归档。通过使用Spire.PDF&#xff0c;您可以直接创建PDF/A文件。本文主要介绍如何建立PDF/A文件&#xff1b;它还将演示如何在 C# 中添加图像和插入图像的超链接。 确保Spire.PDF for .NET&#xff08;版本 2.9.43 或更高版本&#xff09;已正确…

TikTok引流中海外云手机的实用功能分享

在当下&#xff0c;TikTok已成为全球范围内最受欢迎的社交媒体平台之一&#xff0c;拥有着庞大的用户群体和潜在的商业机会。为了在TikTok上实现更好的引流效果&#xff0c;利用海外云手机成为了一个明智的选择。接下来&#xff0c;我们将深入探讨海外云手机的功能以及它如何助…

神经网络的反向传播

梯度下降算法 &#x1f525;我们来看一下神经网络中的梯度下降算法&#x1f525; 梯度下降法是一种优化算法&#xff0c;用于寻找目标函数的最小值。梯度是一个向量&#xff0c;表示某一函数在该点处的方向导数沿着该方向取得最大值&#xff0c;即函数在该点处变化最快的方向…

IDEA 开发找到 java-web 发布到 tomcat 的路径

使用 IDEA 开发 java web 应用&#xff0c;有没有遇到需要找到 tomcat 路径的问题 为什么要找 tomcat 路径呢&#xff1f; 拿我的项目来举例&#xff0c;有统一的线上线下 logback.xml 配置&#xff0c;配置时业务、框架日志输出到 file&#xff0c;少量的启动日志输出到 con…

基于MATLAB野外观测站生态气象数据处理分析

朱老师(副教授)&#xff1a;来自国内重点高校&#xff0c;长期从事野外观测站生态气象监测与评估研究&#xff0c;发表SCl论文多篇&#xff0c;主持国家与地方科研项目多个,在生态环境数据处理与分析中具有丰富的实践项目经验。 以野外观测站高频时序生态气象数据为例&#xff…

uniapp 对接facebook第三方登录

1.登录facebook开发者中心&#xff0c;打开我的应用页面在这里插入图片描述 2.创建应用 3.选择类型 4.填写信息 5.添加登录 6.添加平台 安卓密钥生成【需要 Java 环境!!! 和 openssl库】 Google Code Archive 的 Windows 版 openssl-for-windows OpenSSL 库 将openssl下载到…

elasticsearch 聚合查询

文章目录 前言elasticsearch 聚合查询1. 桶聚合2. 度量聚合3. 嵌套聚合4. 指标聚合 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差&#xff0c;实在…

Nodejs 第六十八章(远程桌面)

远程桌面 远程桌面&#xff08;Remote Desktop&#xff09;是一种技术&#xff0c;允许用户通过网络远程连接到另一台计算机&#xff0c;并在本地计算机上控制远程计算机的操作。通过远程桌面&#xff0c;用户可以在不同地点的计算机之间共享屏幕、键盘和鼠标&#xff0c;就像…

购买 DDoS 高防 IP 防护哪家好?

DDoS 高防 IP 哪里买会比较好?在这场攻与守的游戏里&#xff0c;DDoS 高防 IP 是一种针对 DDoS 攻击的防护措施&#xff0c;通过将网站或应用的 IP 地址映射到高防 IP 上&#xff0c;实现对流量的清洗和过滤&#xff0c;从而有效抵御 DDoS 攻击。在选择 DDoS 高防 IP 服务提供…

应急学院物联网应急安全产教融合基地解决方案

第一章 背景 1.1物联网应急安全产教融合发展概况 物联网应急安全产教融合发展是当前社会发展的重要趋势。随着物联网技术的广泛应用&#xff0c;应急安全领域对人才的需求日益迫切。因此&#xff0c;产教融合成为培养高素质、专业化人才的关键途径。在这一背景下&#xff0c;…

嘉楠堪智 CanMV K230 的 CanMV-IDE 环境与 MicroPython 编程

嘉楠推出了 CanMV IDE 开发环境&#xff0c;可以使用 MicroPython 开发针对 CanMV K230 的各种程序&#xff0c;同时也提供了大量的例子程序&#xff0c;方便使用者学习。 嘉楠开发者社区&#xff0c;给出了详细的 CanMV K230 教程&#xff0c;可以借以快速上手。 目录 固件…

word中取消分页符或分段符前后的空格

在Word中&#xff0c;有时候&#xff0c;我们添加分页符后&#xff0c;从分页符后面的文字就全部掉到了下一页&#xff0c;那么如何避免呢&#xff1f; 选择word选项--高级&#xff0c;然后下滑到下面&#xff0c;将“取消分页符或分段符前后的空格”选中&#xff0c;如下图所…

IDEA上文件换行符、分隔符(Line Separator)LF,CR,CRLF错乱影响Git上传Github或Gitee代码

IDEA上文件换行符、分隔符(Line Separator)LF&#xff0c;CR&#xff0c;CRLF错乱影响Git上传Github或Gitee代码 指定目录 然后就可以上传了 OK 一定注意更改Line Separator的文件目录 如果是target目录下的文件,是不能修改为LF的,把target文件删除,再重载一次main文件,就…

手机空号过滤,提高工作效率

手机空号过滤在多个方面都具有重要的作用。 首先&#xff0c;它对于短信群发商和电话营销商来说至关重要。通过空号过滤&#xff0c;他们可以确保手机号码数据库的准确性和有效性。由于每天都有大量人群因各种原因更换手机号码&#xff0c;导致每个号段中的空号率和手机状态都…

详解进程控制

目录 一、进程创建 fork() 写时拷贝 fork的应用场景 二、进程退出 什么是进程退出码&#xff1f; 退出码的含义 进程退出方法 三、进程等待 进程等待的必要性 进程等待的方法 wait waitpid status 阻塞与非阻塞 四、进程替换 替换原理 替换函数 命名理解 简…
最新文章