【linux进程(三)】进程有哪些状态?--Linux下常见的三种进程状态
💓博主CSDN主页:杭电码农-NEO💓
⏩专栏分类:Linux从入门到精通⏪
🚚代码仓库:NEO的学习日记🚚
🌹关注我🫵带你学更多操作系统知识
🔝🔝

Linux进程
- 1. 前言
- 2. 操作系统中进程的运行状态
- 3. 操作系统中进程的阻塞状态
- 4. 操作系统中进程的挂起状态
- 5. Linux下特定的进程状态
- 6. 前台进程和后台进程的区别
- 7. 休眠状态和磁盘休眠状态
- 8. 总结以及拓展
1. 前言
很明显,进程状态的本质就是进程
PCB结构体中的一个变量,它可能
是用宏定义来实现的,也可能是其他方式
#define NEW 1
#define RUNNING 2
#define BLOCK 3
strcut PCB
{...其他信息int state;//进程状态
}
if(PCB->state==NEW)
{将进程放入运行队列}
else if(PCB->state==BLOCK)
{将进程放入阻塞队列}
......
本章重点:
本篇文章着重讲究操作系统中的
三种进程状态:运行状态,阻塞状态
和挂起状态.并且讲解Linux操作系统
中具体的进程状态,其中R状态(运行状态)
和S状态(睡眠状态)最常见!
Linux中常见的六种状态:


还有一种状态就是z状态(僵尸状态)
2. 操作系统中进程的运行状态
现在我们使用的电脑,手机有四核的
有八核,十二核的,也就是有多个CPU
然而不管有多少个CPU,每一个CPU
都有一个对应的运行队列,CPU会去
此队列中寻找数据来做处理

只要一个进程在运行队列中,它就是运行状态
不管一个进程是否正在被处理,只要它在
运行队列中,那么它就是处于运行状态!
3. 操作系统中进程的阻塞状态
我先来描述一下进程会阻塞的情况:
当CPU处理一个PCB时,我们写的
代码中或多或少会去访问操作系统
里的某些资源,比如:磁盘,键盘,网卡
最简单的例子,当代码出现scanf
或者cin时,系统会等待用户输入,只要
不输入,要访问的资源就没有就绪
此时代码就无法运行!

此时进程就处于阻塞状态了吗?
对!但是不完全对!
我想给大家阐述的更细致一点
我们知道,系统中的硬件是通过
管理硬件数据来间接被操作系统
管理起来的,所以操作系统是很清楚
硬件现在是否具备访问条件,那么
操作系统是怎样知道的呢?
其实每一个设备的结构体中,都有
变量:PCB* wait_queue,也就是
等待队列,请看下图仔细分析:

将一个进程从运行队列移动至设备
的等待队列中,再将状态改为阻塞
此时这个进程就处于阻塞状态
每个CPU或是设备都有自己的队列
进程状态变化的本质就是:
更改PCB中status的整数变量将PCB链接到不同的队列中!
4. 操作系统中进程的挂起状态
想象一下以下情况
如果现在有很多进程被阻塞(不同设备)
注定了这些进程在它所等待的资源没有
就绪的时候,该进程是无法被调度的,如果
此时,恰好操作系统的内存资源已经严重不足
那么现在应该这样做才能拯救操作系统呢?
答案是,因为此时进程处于阻塞
状态,并且内存已严重不足,所以
OS会将PCB对应的数据和代码
弄到磁盘,为内存腾出一部分空间
此时,进程就被挂起了!

注意,将内存数据换到外设上
这一操作是针对所有阻塞进程的
不用担心与外设频繁交互会降低
操作系统的效率,因为此时要关心
的是操作系统还能不能存活下去!
注意,swap分区是磁盘中真实存在的
它的大小往往是很小的,这个部分专门
用于内存严重不足时和内存进行交互
并且当内存情况缓解后,曾经被置换
出去的代码和数据又会重新加载进来!
5. Linux下特定的进程状态
先来看看我在库中找的状态的定义:



今天的主角是R和S状态
先来写一段程序来看看效果:
#include <stdio.h>
#include <unistd.h>
int main()
{ while(1) { sleep(1); printf("hello hdu\n"); } return 0;
}
运行此程序后查看进程状态:

按照常理来说,一个正在运行的程序
应该是处于R状态的,但是这个程序
为什么处于S状态呢(+号先不管,后面会讲)
这是因为循环打印时,IO输出是很慢的
打印字符会和外设屏幕交互,所以大
部分时间进程都处于阻塞状态,可能
只有百分之1的时间在打印,所以查看
进程状态时,大部分都是S状态,只有很少
一部分是R状态但是如果while(1)中
什么代码都没有,则程序一直处于R状态
6. 前台进程和后台进程的区别
我先给出概念再来解释:
-
前台进程:运行时无法使用bash外壳的指令
并且可以被CTRL C强制终止掉 -
后台进程:运行时可输入指令,不能被CTRL C掉
只能使用kill指令来杀掉进程.
将程序变成后台程序:
运行进程时加上: &
如: ./mybin &
先来对比观察一下前后台进程:
前台进程和后台进程区别
7. 休眠状态和磁盘休眠状态
细心的同学可能已经发现了
这几种状态中有两个很相似的状态:

S被称为浅度睡眠
D被称为深度睡眠
想象一下下面的这种情况:
我们从QQ,微信上下载一个文件
本质上就是将数据拷贝至磁盘,但是
目前这个文件很大,需要拷贝很久
但是此时操作系统的内存恰恰不足了
需要干掉一些进程来保证操作系统存活
此时若恰好将正在拷贝到磁盘的进程杀掉
了,那么也就是拷贝失败了,如果文件非常
的重要,那么操作系统就要背锅了,所以
OS创造了D状态:磁盘休眠状态!
所以我们得出一个重要的结论:
S(sleeping):浅度休眠,浅度睡眠,可以被终止D(disk sleep):深度休眠,为了防止向磁盘写入
重要资源时被杀掉而专门创建的一个分类!
8. 总结以及拓展
了解Linux中进程的分类可以更进一步
的了解进程在操作系统中的运行关系
所以进程状态是学习进程中必不可少的
一课!我们和进程的故事还远远没有结束!
拓展阅读:什么是僵尸进程?
什么是僵尸进程
相关文章:
【linux进程(三)】进程有哪些状态?--Linux下常见的三种进程状态
💓博主CSDN主页:杭电码农-NEO💓 ⏩专栏分类:Linux从入门到精通⏪ 🚚代码仓库:NEO的学习日记🚚 🌹关注我🫵带你学更多操作系统知识 🔝🔝 Linux进程 1. 前言2. 操作系统…...
numString.charAt(i) - ‘0‘
numString.charAt(i) 表示获取字符串 numString 中第 i 个字符,这里假设该字符是数字 0 到 9 之间的一个字符。 0 是字符常量,表示数字 0 对应的字符。例如,字符 0 转换成数字就是 0,字符 1 转换成数字就是 1,以此类推…...
《Python 自动化办公应用大全》书籍推荐(包邮送书五本)
前言 随着科技的快速发展和智能化办公的需求增加,Python自动化办公成为了一种趋势。Python作为一种高级编程语言,具有简单易学、功能强大和开放源代码等优势,可以帮助我们更高效地完成日常办公任务。 Python自动化办公还可以帮助我们实现更…...
day57:ARMday4,程序状态寄存器读写指令、软中断指令、C和汇编的混合编程、开发板介绍
思维导图:有道云笔记...
el-cascader
场景: el-cascader lazy multiple 反显数据 非lazy的场景 selecetedOptions2: [[1, 2, 3],[1, 2, 4], ],可以正常回显;> ok lazy场景下: 是不可以回显的… 如果el-cascader是异步的单选 cascader默认会加载下个层级的(子…...
图论第3天----第841题、第463题
# 图论第3天----第841题、第463题 文章目录 一、第841题--钥匙和房间二、第463题--岛屿的周长 又继续开始修行,把图论这块补上,估计要个5-6天时间。 一、第841题–钥匙和房间 有向图的遍历。dfs遍历3部曲做,思路也较顺----访问过的&a…...
软件测试/测试开发丨利用ChatGPT 生成自动化测试脚本
点此获取更多相关资料 简介 自动化测试脚本可以模拟用户与应用程序的交互,例如点击按钮、输入数据、导航到不同的页面等等,以验证应用程序的正确性、性能和稳定性。 自动化测试在回归测试、冒烟测试等测试流程中都可以极大地起到节省时间、节省人力的作…...
3.3.OpenCV技能树--二值图像处理--图像形态学操作
文章目录 1.图像形态学运算简介2.图像开运算处理2.1.图像开运算处理简介2.2.图像开运算处理代码2.3.图像开运算处理效果 3.图像闭运算处理3.1.图像闭运算处理简介3.2.图像闭运算处理代码3.3.图像闭运算处理效果 4.图像形态学梯度处理4.1.图像形态学梯度处理简介4.2.图像形态学梯…...
这15个海运提单的雷区 你知道吗?
海运提单中英文对照 海运提单主要项目填制说明 1、托运人(Shipper):即与承运人签订运输契约,委托运输的货主,即发货人。在信用证支付方式下,一般以受益人为托运人;托收方式以托收的委托人为托运人。另外,根据《UCP500》…...
几道web题目
总结几道国庆写的web题目 [ACTF2020 新生赛]Include1 点进去发现就一个flag.php,源代码和抓包都没拿到好东西 结合题目猜是文件包含,构建payload ?filephp://filter/readconvert.base64-encode/resourceflag.php 得到base64编码过的flag,解码即可 此题…...
API接口大全分享,含短信API、IP查询API。。。
免费API接口大全分享,含短信API、IP查询API等。。。 语音验证码短信:拨打电话告知用户验证码,实现信息验证。短信验证码:可用于登录、注册、找回密码、支付认证等等应用场景。支持三大运营商,3秒可达,99.9…...
记录一次springboot使用定时任务中@Async没有生效的场景
环境说明 jdk21springboot 3.0.11 springcloud 2022.0.0 spring-cloud-alibaba 2022.0.0.0 在开发一个定时触发的任务的时候,由于开发执行任务的函数比较耗费时间,所以采用异步解决问题。 发现并没有按照预期的触发 经询问后,发现当前类的…...
腾讯云/阿里云国际站免费账号:腾讯云国际站如何对象存储cos设置防盗链
简介 为了避免恶意程序使用资源 URL 盗刷公网流量或使用恶意手法盗用资源,腾讯云国际站给用户带来不必要的损失。腾讯云对象存储支持防盗链配置,建议您通过控制台的防盗链设置配置黑/白名单,来进行安全防护。 注意: 如果您访问对…...
python编程:使用 Pillow 将照片转换为1寸报名照片
引言: 在现代科技时代,我们经常需要调整和处理照片以适应特定的需求和用途。本文将介绍如何使用 wxPython 和 Pillow 库,通过一个简单的图形界面程序,将选择的照片转换为指定尺寸的 JPG 格式,并保存在桌面上。 C:\pyt…...
Aria2 for Mac (免HomeBrew)
Aria2 for Mac (免HomeBrew)-CSDN博客 之前搜索Aria2的安装方法,推荐的方法是使用HomeBrew安装。是,这个插件很省事,但启用条件是你安装了HomeBrew且运行起来需要再下十来个G的Xcode…… 这对急用的我非常不友好,当然,…...
【Java】微服务——Gateway网关
目录 1.为什么需要网关2.gateway快速入门1)创建gateway服务,引入依赖2)编写启动类3)编写基础配置和路由规则4)重启测试5)网关路由的流程图 3.3.断言工厂3.4.过滤器工厂3.4.1.路由过滤器的种类3.4.2.请求头过…...
大厂笔试汇总
大厂笔试 华为笔试汇总1.交易系统的降级策略(二分法)2.获取最多食物(树形DP)3.小王的密码本(哈希)4.每日股票价格(单调栈)5.中庸行者(回溯)输入描述输出描述6.数字序列比大小(贪心)输入描述输出描述7、快递中转站8、互通设备集字节跳动中兴笔试华为笔试汇总 1.交易…...
【数据结构】快排的详细讲解
目录: 介绍 一,递归快排确定基准值 二,递归遍历 三,非递归的快排 四,快排的效率 介绍 快排是排序算法中效率是比较高的,快排的基本思想是运用二分思想,与二叉树的前序遍历类似,…...
蓝牙资讯|三星推迟发布智能戒指Galaxy Ring,智能穿戴小型化是大趋势
根据外媒 The Elec 报道,Galaxy Ring这款戒指主要面向健康和 XR 头显市场,该智能戒指可能被延期至 2024 年第三季度后发布。 外媒声称三星 Galaxy Ring 的上市周期,主要取决医疗认证的相关审批时间,三星计划将在 2024 年第三季度…...
移动端tree树
注意: 这是uniapp的写法,vue想用的话需要改造一下,里边的view和text,vue不能用,改成div,span即可。 样式rpx也要改成px tree树组件(QQ群:旧群没了,新群:801142650) - …...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...
云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...
基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
