进程的状态 ─── linux第11课
目录
编辑
补充知识:
1.并行和并发
分时操作系统(Time-Sharing Systems)
实时操作系统(Real-Time Systems)
进程的状态(操作系统层面)
编辑
运行状态
阻塞状态
状态总结:
挂起状态
linux下的进程状态
补充知识:
前台进程:
后台进程
$?
补充知识:
1.并行和并发
cpu执行进程代码,不是不是把进程代码进行完毕,才开始进行下一个,
而是给每个进程分配一个时间片,基于时间片 ,进行调度轮转(单cpu下) 称为并发
- 并发:多个进程在一个cpu下,采取进程切换模式,在一定时间内 ,让多个进程都得以推进
- 并行: 多个进程在多个cpu下分别,同时运行
时间片指的是操作系统分配给每个任务(或进程)的固定时间段,用于执行任务。当一个任务的时间片用完时,操作系统会暂停该任务,并将 CPU 资源分配给其他任务,从而实现多任务的并发执行。
分时操作系统(Time-Sharing Systems)
特点:允许多个用户或任务共享系统资源,通过时间片轮转调度算法实现任务的并发执行。
优点:提高资源利用率,支持多用户交互操作。
应用:常用于多用户环境,如 UNIX、Linux 和 Windows 的多用户版本。
实时操作系统(Real-Time Systems)
特点:任务必须在严格的时间限制内完成,分为硬实时和软实时系统。
优点:确保任务的及时响应,适用于对时间敏感的应用。
应用:工业控制系统、航空航天系统、机器人控制,汽车控制等。
进程的状态(操作系统层面)
运行状态
一个cpu内会有一个struct_runqueue(运行对列) ,只要进程的task_struct在运行队列里,进程就是运行状态,随时可以进入cpu
操作系统上层管理进程
下层管理硬件 都是先描述(task_struct 和struct device),再组织(runqueue 和devices ).
在下图中,描绘了运行状态
阻塞状态
有的程序需要用户输入才能继续运行,当用户没有输入时, os会将此进程的pcb(linux下是task_struct) 放进对应的硬件数据结构(struct device)中,在设备的等待队列(wait_queue)进行等待.
状态总结:
cpu有运行队列,有等待队列 , 进程等待cpu就是运行状态 ,进程等待设备,就是阻塞状态
运行状态和阻塞状态本质不同就是进程的pcb(task_struct)在不同的队列中.
挂起状态
在内存严重不足时,进程的阻塞状态会占用部分内存(pcb 和 进城数据), os会将阻塞状态的进程的代码和数据换出到磁盘(swap分区) , 如果硬件有相应后,结束阻塞状态 ,开始运行时 ,会将代码和进程数据换入到内存.
这是一种用时间换空间的方法,一般不会启用.
代码和数据被换出的状态就是挂起状态.
上面我们从宏观层面讲解了进程的状态,但在不同os下还有具体不同,下面我们讲解linux下的进程状态
linux下的进程状态
为了弄明白正在运行的进程是什么意思,我们需要知道进程的不同状态。
一个进程可以有几个状态(在 Linux内核里,进程有时候也叫做任务)。 下面的状态在kernel源代码里定义:
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: 运行状态
S: 休眠状态 可中断睡眠)---- 阻塞状态之一
D: 休眠状态 不可中断睡眠----阻塞状态之一 如向磁盘写入的时间中,禁止os杀掉此进程
出现D状态,大概率磁盘有问题 ,系统快挂了
T: 停止状态 进程做了非法但不致命的操作,被OS暂停了
t: 停止状态 当进程被追踪(如gdb的断点), 遇到断点停下
X: 死亡状态
Z: 僵尸状态 期间维持退出信息 , 方便父进程和os查询退出信息
SD 是阻塞状态等待设备 Tt 是阻塞状态因操作需要, T 暂停进程 ,t 等待人
进程运行结束先进入Z再进入X状态
补充知识:
code代替程序名称
前台进程:
运行方法
./code
运行后状态带有+号 , 可用 ctrl+c 杀掉此进程
特点: 会阻碍命令行的命令执行
后台进程
运行方法
./code &
运行后状态后没有+号 ,不可用ctrl+c 杀掉此进程 ,用 kill -9 pid来终止
特点:不会阻碍命令行,可继续使用命令行
应用方面:下载
$?
$? 记录最近程序的退出信息(0是成功 ,非零是失败) , 这就是main函数的返回值由来
打印最近程序的退出信息
echo $?
- kill -19 pid 会暂停一个进程 ,将进程状态设置为T
- kill-18 pid 会默认在后台重新启动此进程
相关文章:

进程的状态 ─── linux第11课
目录 编辑 补充知识: 1.并行和并发 分时操作系统(Time-Sharing Systems) 实时操作系统(Real-Time Systems) 进程的状态(操作系统层面) 编辑 运行状态 阻塞状态 状态总结: 挂起状态 linux下的进程状态 补充知识: …...

MySQL数据库基本概念
目录 什么是数据库 从软件角度出发 从网络角度出发 MySQL数据库的client端和sever端进程 mysql的client端进程连接sever端进程 mysql配置文件 MySql存储引擎 MySQL的sql语句的分类 数据库 库的操作 创建数据库 不同校验规则对查询的数据的影响 不区分大小写 区…...
什么是 jQuery
一、jQuery 基础入门 (一)什么是 jQuery jQuery 本质上是一个快速、小巧且功能丰富的 JavaScript 库。它将 JavaScript 中常用的功能代码进行了封装,为开发者提供了一套简洁、高效的 API,涵盖了 HTML 文档遍历与操作、事件处理、…...

Redis Desktop Manager(Redis可视化工具)安装及使用详细教程
一、安装包下载 直接从官网下载,官网下载链接地址:Downloads - Redis 二、安装步骤 2.1说明 Redis Desktop Manager是一款简单快速、跨平台的Redis桌面管理工具,也也被称作Redis可视化工具。 支持命令控制台操作,以及常用&…...

[KEIL]单片机技巧 01
1、查看外设寄存器的值 配合对应的芯片开发手册以查看寄存器及其每一位的意义,可以解决90%以上的单纯的片内外设bug,学会如何通过寄存器的值来排外设上的蛊是嵌入式开发从小白到入门的重要一步,一定要善于使用这个工具,而不是外设…...
云原生监控篇——全链路可观测性与AIOps实战
引言:监控即生命线 2023年某全球支付平台因一次未被捕获的数据库连接泄漏,导致每小时损失120万美元。而另一家社交巨头通过实时异常检测系统,在30秒内自动隔离了大规模DDoS攻击。这两个案例揭示了云原生时代的核心生存法则——监控不是可选项…...
C# 13与.NET 9革新及工业开发应用
摘要 微软推出的C# 13与.NET 9以“高效且智能”为导向,具备扩展类型、半自动属性、锁对象优化等十大革新。本文深入剖析新特性于工业级开发的应用场景,包含性能优化策略、AI集成方案以及EF Core实战技巧,为开发者提供从理论到实践的完整指引…...

Linux系统之DHCP网络协议
目录 一、DHCP概述 二、DHCP部署实操 2.1、安装DHCP软件 2.2、拷贝配置文件 2.3、配置文件详解 2.4、重启软件服务 2.5、新开一台服务器,查看dhcp地址获取 一、DHCP概述 DHCP(Dynamic Host Configuration Protocol)是一种应用层网络协…...

【Linux】【网络】不同子网下的客户端和服务器通信其它方式
【Linux】【网络】不同子网下的客户端和服务器通信其它方式 那么,在 NAT 环境下,应该如何让内网设备做为服务器,使内网设备被外部连接? 1 多拨 部分运营商,支持在多个设备上,通过 PPPoE 登录同一个宽带账…...
【C++/数据结构】栈
零.导言 栈是一种数据结构,在后续的学习中可能经常使用,因此我们今天就来学习如何实现栈,以更好地使用它。 一.栈的实现 栈的形式如下: #include<iostream> #include<cassert>using namespace std;typedef int Stack…...

Qt 对象树详解:从原理到运用
1. 什么是对象树? 对象树是一种基于父子关系的对象管理机制。在 Qt 中,所有继承自 QObject 的类都可以参与到对象树中。 当一个对象被设置为另一个对象的父对象时,子对象会被添加到父对象的内部列表中,形成一种树状结构。 Qt 提…...
【软路由】ImmortalWrt 编译指南:从入门到精通
对于喜欢折腾路由器,追求极致性能和定制化的玩家来说,OpenWrt 无疑是一个理想的选择。而在众多 OpenWrt 衍生版本中,ImmortalWrt 以其更活跃的社区、更激进的特性更新和对新硬件的支持而备受关注。 本文将带你深入了解 ImmortalWrt࿰…...

【智能音频新风尚】智能音频眼镜+FPC,打造极致听觉享受!【新立电子】
智能音频眼镜,作为一款将时尚元素与前沿科技精妙融合的智能设备,这种将音频技术与眼镜形态完美结合的可穿戴设备,不仅解放了用户的双手,更为人们提供了一种全新的音频交互体验。新立电子FPC在智能音频眼镜中的应用,为音…...

第2章 windows故障排除(网络安全防御实战--蓝军武器库)
网络安全防御实战--蓝军武器库是2020年出版的,已经过去3年时间了,最近利用闲暇时间,抓紧吸收,总的来说,第2章开始带你入门了,这里给出了几个windows重要的工具,说实话,好多我也是第一…...

深度学习笔记——线性回归的从0开始实现
记录学习到的知识: 语义分割是将标签或类别与图片的每个像素关联的一种深度学习算法。 它用来识别构成可区分类别的像素集合。 图像分割是一个端到端图像分析过程,它将数字图像分成多个片段,并对每个区域中包含的信息进行分类。三种图像分割…...
配置Spring Boot中的Jackson序列化
配置Spring Boot中的Jackson序列化 在开发基于Spring Boot的应用程序时,Jackson是默认的JSON序列化和反序列化工具。它提供了强大的功能,可以灵活地处理JSON数据。然而,Jackson的默认行为可能无法完全满足我们的需求。例如,日期格…...
AWS跨账号服务全解析:安全共享资源的最佳实践
在复杂的云环境中,企业常常需要将不同业务部门、项目或环境分配到独立的AWS账户中,以实现资源隔离和权限管控。然而,跨账户的资源共享与协作需求也随之而来。AWS为此提供了丰富的跨账号服务,允许不同账户之间安全、高效地共享资源。本文将深入解析这些服务,并结合实际场景…...

Rust~String、str、str、String、Box<str> 或 Box<str>
Rust语言圣经中定义 str Rust 语言类型大致分为两种:基本类型和标准库类型,前者由语言特性直接提供,后者在标准库中定义 str 是唯一定义在 Rust 语言特性中的字符串,但也是几乎不会用到的字符串类型 str 字符串是 DST 动态大小…...

SpringBoot五:JSR303校验
精心整理了最新的面试资料和简历模板,有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 松散绑定 意思是比如在yaml中写的是last-name,这个和lastName意思是一样的,-后的字母默认是大写的 JSR303校验 就是可以在字段增加…...

Oracle 数据库基础入门(四):分组与联表查询的深度探索(上)
在 Oracle 数据库的学习进程中,分组查询与联表查询是进阶阶段的重要知识点,它们如同数据库操作的魔法棒,能够从复杂的数据中挖掘出有价值的信息。对于 Java 全栈开发者而言,掌握这些技能不仅有助于高效地处理数据库数据࿰…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...

无人机侦测与反制技术的进展与应用
国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...

macOS 终端智能代理检测
🧠 终端智能代理检测:自动判断是否需要设置代理访问 GitHub 在开发中,使用 GitHub 是非常常见的需求。但有时候我们会发现某些命令失败、插件无法更新,例如: fatal: unable to access https://github.com/ohmyzsh/oh…...
高防服务器价格高原因分析
高防服务器的价格较高,主要是由于其特殊的防御机制、硬件配置、运营维护等多方面的综合成本。以下从技术、资源和服务三个维度详细解析高防服务器昂贵的原因: 一、硬件与技术投入 大带宽需求 DDoS攻击通过占用大量带宽资源瘫痪目标服务器,因此…...

【java面试】微服务篇
【java面试】微服务篇 一、总体框架二、Springcloud(一)Springcloud五大组件(二)服务注册和发现1、Eureka2、Nacos (三)负载均衡1、Ribbon负载均衡流程2、Ribbon负载均衡策略3、自定义负载均衡策略4、总结 …...