Linux 下的进程状态

news2024/11/15 8:04:37

文章目录

  • 一、运行状态
    • 运行队列
    • 运行状态和运行队列
  • 二、睡眠状态
    • S状态
    • D状态
      • D状态产生的原因
  • 三、暂停状态
    • T状态
    • t 状态
  • 四、僵尸状态
    • 为什么有僵尸状态
    • 孤儿进程

一、运行状态

R状态:进程已经准备好随时被调度了。

运行队列

每个 CPU 都会维护一个自己的运行队列(一个CPU,一个运行队列)。
在这里插入图片描述

运行状态和运行队列

在这里插入图片描述

二、睡眠状态

S状态

  • S状态(sleeping):可中断睡眠(浅度睡眠)状态。
  • 操作系统在资源紧缺时,可以直接杀死该状态的进程。
int main()
{
	whilie(1)
	{
		printf("hello process");
	}
}
  1. printf 是从外设上取数据,循环打印时,不一定每次要打印时,外设都已经准备好了,因为 CPU 比外设速度快的多,所以CPU会等待外设。
  2. 我们在运行该程序时,发现进程状态是S ,表明大部分时间进程还是在等待的,而不是在运行(可以在某个瞬间看到它是R状态,但概率很低)。

而大部分进程都会与外设有关,会有等待的状态。

D状态

  • D状态disk sleep):不可中断睡眠(深度睡眠)。
  • 操作系统不会杀D状态的进程。

D状态产生的原因

在这里插入图片描述
导致的情况:
数据丢掉啦!!!

那么是谁的错呢?

  1. 对于操作系统:
  • 我本身就有管理它们的能力,而且资源紧缺时有权利杀掉进程。
  • 如果紧缺时不杀这个进程,那系统整体就要挂了,那系统中的十几个进程就都要挂了,损失的数据就更多了,所以杀掉该进程是正确的选择。
  1. 对于进程:
    我是受害者,我被操作系统杀死了,跟我没关系。
  2. 对于磁盘:
    我就是一个跑腿的,让我干什么就干什么,跟我没关系。

所以为了避免这种情况,再增加一种状态:
在这里插入图片描述

三、暂停状态

T状态

T状态stopped):暂停状态。

  • 手动暂停,继续进程
    查看 kill 信号:
    在这里插入图片描述
    其中,18 :进程继续,19:进程暂停。
    可以使用 kill 信号进行进程的手动暂停和继续。

  • 自动暂停进程
    有些进程被禁止做某些操作,但如果进程硬要这样干,进程就会被暂停。

t 状态

  • t 状态tracing stop):被追踪的暂停状态。
  • 当进程处于被追踪状态时,进程暂停,等一等追踪我的那个东西。

四、僵尸状态

Z状态zombie):僵尸状态,进程已经执行完毕,但并未获得进程退出的相关信息时的状态。

为什么有僵尸状态

在这里插入图片描述
PCB 的释放:

  • 进程执行完毕后,代码和数据可以直接释放,但PCB要留下,直到里面的退出信息被父进程读取了,然后PCB才能释放。
  • 如果父进程不读取,那僵尸状态会一直存在,task_struct 对象也会一直存在,会占用内存,即内存泄漏。

在这里插入图片描述

一般父进程是不会自动读取子进程的结束信息的,但 bash 会自动读取,所以我们没有手动读取程序的结束信息也没有内存泄露。

孤儿进程

  • 父进程死亡的子进程,就称为孤儿进程
  • 如果父进程先子进程挂掉,那子进程的 PCB 就无法释放了,为了避免这种情况,子进程会被另一个父亲领养(一般是被 1 号进程(操作系统)领养)。

本文到这里就结束了,如果对您有帮助的话,可以给个赞支持一下哦,如果有哪里有错误,欢迎指正。

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

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

相关文章

一文读懂GPU通信互联技术:GPUDirect、NVLink与RDMA

在高性能计算和深度学习领域,GPU的强大计算能力已成为不可或缺的工具。然而,随着模型复杂度和数据量的增加,单个GPU已无法满足需求,多个GPU甚至多台服务器协同工作成为常态。这就要求高效的GPU互联通信技术,以确保数据…

mesh格式转换:glb转ply——使用Blender烘焙贴图到顶点色

1. 导入glb文件 选择shading后,选中物体,就能看到下面的节点树。 2. 创建顶点颜色 这个时候我们可以看到模型的顶点颜色是纯白色的。 2. 将贴图付给材质 原来: 现在: 3. 切换渲染器并烘焙顶点颜色 第三行选择CPU渲染或者GPU…

Golang | Leetcode Golang题解之第331题验证二叉树的前序序列化

题目&#xff1a; 题解&#xff1a; func isValidSerialization(preorder string) bool {n : len(preorder)slots : 1for i : 0; i < n; {if slots 0 {return false}if preorder[i] , {i} else if preorder[i] # {slots--i} else {// 读一个数字for i < n &&…

Redis的持久化的策略

Redis的持久化的策略 官方文档说明 AOF持久化策略RDB持久化的策略 AOF持久化策略 AOF持久性记录服务器接收到的每个写操作&#xff0c;然后&#xff0c;可以在服务器启动时再次重播这些操作&#xff0c;重建原始数据集&#xff0c;使用与Redis协议本身相同的格式记录命令。…

kotlin协程之runBlocking

前言 上一篇: Callback转挂起函数 文章中,介绍了在Kotlin协程中如何把传统的回调风格的异步操作转换为协程风格的挂起函数,这个在开发过程中是非常常用的,主要用于把 callback 风格的代码转换为协程中的挂起函数,以便于我们在协程环境中调用。 但是,有时候我们也会遇到…

Socket进程间通信,从概念到实战(TCP,UDP,linux环境下C语言代码编写)

1、socket简述 Socket是一种通信机制&#xff0c;通过它可以在不同主机之间进行数据交换。在Socket编程中&#xff0c;有两种常见的通信模式&#xff1a;客户端-服务器模式和点对点模式。它基于TCP/IP协议栈&#xff0c;并使用IP地址和端口号来标识通信的目标。 2、Socket 基…

数据结构--树与二叉树

数据结构分类 集合 线性结构(一对一) 树形结构(一对多) 图结构(多对多) 数据结构三要素 1、逻辑结构 2、数据的运算 3、存储结构&#xff08;物理结构&#xff09; 树的概念 树的分类 满二叉树和完全二叉树 二叉排序树 平衡二叉树 二叉树分类总结 二叉树的存储结构 …

NVIDIA液冷技术革新:GB200 的挑战与机遇

英伟达 (Nvidia) 最近的一个创新与比特和字节无关。这是一项液冷技术创新。英伟达即将推出的 GB200 服务器机架将主要通过在硬件管道里循环的液体、而不是空气来冷却&#xff0c;该机架包含英伟达下一代 Blackwell 芯片。 英伟达发言人表示&#xff0c;该公司还在与供应商合作…

【人工智能】助力音乐产业

了解人工智能如何通过先进的制作和作曲工具改变音乐产业&#xff0c;创造创新的声音并重塑音乐创作。 人工智能在音乐行业中发挥着重要作用&#xff08;这是双关语&#xff09;。它影响着从艺术家创作音乐的方式到营销和发行的一切。鉴于人工智能的巨大力量&#xff0c;这项创新…

探索数据可视化,数据看板在各行业中的应用

数据可视化是一种通过图形化手段将数据呈现出来的技术&#xff0c;它将复杂的数据和信息转化为易于理解的图表、地图、仪表盘等视觉元素&#xff0c;使得数据的模式、趋势和关系更加直观地展现出来。通过数据可视化&#xff0c;用户可以快速识别重要信息、发现潜在问题&#xf…

【网络】IO

IO 一、五种IO模型同步通信 vs 异步通信阻塞 vs 非阻塞 二、其他高级IO非阻塞IOSetNoBlockI/O多路转接之selectselect函数原型fd_set&#xff08;位图&#xff09;select代码select缺点poll&#xff08;用select修改&#xff09; I/O多路转接之epoll高级版改进select和poll的问…

Spring Boot 3.x Web MVC实战:实现流缓存的request

上一节《Spring Boot 3.x Filter实战&#xff1a;记录请求日志》实践最后遇到了request对象的流不可重复读的问题&#xff0c;本小节我们将通过流数据缓存以及流的装饰器模式来解决这个问题。如果觉得对你有帮助&#xff0c;记得点赞收藏&#xff0c;关注小卷&#xff0c;后续更…

搭建高可用OpenStack(Queen版)集群(十)之部署分布式存储Ceph

一、Ceph知识点学习 Ceph知识点学习&#xff1a;https://www.cnblogs.com/happy-king/p/9207509.html 二、部署分布式存储Ceph 一&#xff09;设置yum源 在全部控制与计算节点设置epel与ceph yum源 epel源&#xff1a;repo安装包下载_开源镜像站-阿里云 ceph源&#xff1a;cep…

Idea2023.3.3 —— SourceTree与gitee关联

SourceTree SourceTree链接: https://pan.baidu.com/s/1oqPxhpHeNOOiuRRQydes6g?pwdngru 提取码: ngru 点击Generate 分别保存私钥和公钥 gitee官网注册 这是gitee的公钥&#xff0c;与上面SourceTree的公钥私钥不一样 gitee生成公钥&#xff0c;确保本地安装好git git链接: h…

高级组件封装技巧--按钮的封装

我们做一些重要操作的时候&#xff0c;往往需要弹窗一个提示框&#xff0c;告诉用户这是一个需要小心的操作&#xff0c;是否继续&#xff0c;用户点击确定后才会开始执行&#xff0c;这种操作写起来比较繁琐&#xff0c;如下所示&#xff0c;要写一堆代码&#xff0c;今天我来…

2024年恩施建筑企业人员初中级专业技术职务评审

2024年恩施建筑企业人员初中级专业技术职务评审 恩施中级职称申报一般是一年1次&#xff0c;具体视情况而定。申报中级职称人员须相应专业水平能力测试成绩合格且在有效期内&#xff0c;同时应当符合相应专业申报条件。专业能力水平能力测试成绩3年有效。 2024年恩施建筑类初…

2024年8月 | 涉及侵权、抄袭洗稿违规行为公示

为护社区良好氛围&#xff0c;守护清朗网络空间&#xff0c;CSDN持续对侵害他人权益、抄袭洗稿违规内容进行治理。 今年7月&#xff0c;CSDN共计删除涉及抄袭洗稿内容xx篇&#xff0c;下架侵权资源xx个&#xff0c;封禁违规账号42个。 部分违规账号公示 账号昵称处置结果封禁创…

STM32CubeMX学习记录——串口通信(含蓝牙通信)

文章目录 一、学习目的二、CubeMX配置三、代码编写 一、学习目的 串口通信是一种简单且广泛应用的通信方式。本文的学习目标是通过CubeMX工具配置串口通信&#xff0c;并编写相应代码&#xff0c;以实现串口助手打印信息以及蓝牙通信等功能。 二、CubeMX配置 &#xff08;1&am…

docker容器常用指令,dockerfile

docker&#xff1a;容器&#xff0c;主要是解决环境迁移的问题&#xff0c;将环境放入docker中&#xff0c;打包成镜像。 docker的基本组成&#xff1a;镜像(image)&#xff0c;容器(container)&#xff0c;仓库(repository)。镜像相当于类&#xff0c;容器相当于类的实例对象…

0基础深度学习项目12:基于TensorFlow实现彩色图片分类

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 目录 一、创建环境二、前期准备2.1 设置GPU2.2 导入数据2.2.1 在TensorFlow框架中导入CIFAR-10数据集2.2.2 数据归一化 2.3数据可视化 三、构建简单的CNN网络&…