Linux进程详解三:进程状态

news2024/11/18 9:42:39

文章目录

    • 进程状态
    • Linux下的进程状态
      • 运行态-R
      • 阻塞态
        • 浅度休眠-S
        • 深度睡眠-D
        • 暂停状态-T
        • 暂停状态-t
      • 终止态
        • 僵尸-Z
        • 死亡-X
      • 孤儿进程

进程状态

进程的状态,本质上就是一个整型变量,在task_struct中的一个整型变量。

状态的存在决定了你的后续行为动作。

Linux中可能会存在多个进程都要根据它的状态执行后续的动作,并且进程可能会存在多个相同的状态,所以进程排队。

一个CPU一个进程队列。

当我们的进程在等待软硬件资源的时候,如果资源还没有就绪,我们的进程task_struct只能将自己设置为阻塞状态,并且将自己的pcb链入等待的资源提供的等待队列。

进程状态的变化,对应的(引起的)是pcb会被操作系统OS变迁到不同的队列中进行排队。

运行状态 R

阻塞状态
当一个进程在cpu的运行队列中,先时运行状态,但是这个进程需要的硬件资源还没有准备好,例如从键盘中读取数据,此时还没有读取到,此时操作系统会将这个进程从cpu的运行队列中拿下来,链入到键盘硬件相对应的排队队列中,并将这个进程的状态设置为阻塞状态,当进程从键盘中获取足够的资源的时候,操作系统再将这个进程拿到CPU的运行队列中重新进行排队。

挂起状态
阻塞挂起
当计算机的资源比较吃紧的时候,某个进程不运行,将其先写入磁盘从队列中取下,当资源充足时或者运行这个进程的时候再从磁盘中读取出来写入到内存,进行执行。

操作系统在被逼急了的情况下,是会杀掉进程的。

Linux下的进程状态

Linux内核下的进程状态

static const char *task_state_array[] = {

    "R (running)",      /*  0 */
	
    "S (sleeping)",     /*  1 */
	
    "D (disk sleep)",   /*  2 */

    "T (stopped)",      /*  4 */

    "T (tracing stop)", /*  8 */

    "Z (zombie)",       /* 16 */

    "X (dead)"      /* 32 */
};

前后台进程
前后台进程,前台进程可以直接杀掉,后台进程只能使用kill杀掉,状态带+就是前台进程,不带就是后台进程。

运行态-R

  • Running

阻塞态

浅度休眠-S
  • Sleeping
    阻塞态之一。
    休眠态,可中断睡眠,浅度睡眠
    进程处于浅度睡眠S状态的时候,可以使用Ctrl+C结束
    操作系统也可以杀掉这种状态的进程。
深度睡眠-D
  • Disk Sleep
    阻塞态之一。
    不可中断睡眠,深度睡眠,磁盘休眠
    操作系统不能杀掉这种状态的进程。
暂停状态-T
  • Stopped
    阻塞态之一
    进程处于暂停状态。
    用户可以主动将进程设置为暂停状态。
    当操作系统认为某个进程在做某种危险的行为的时候,操作系统也会将进程设置为暂停状态。
  • kill -19 pid
    让进程处于暂停状态
  • kill -18 pid
    让进程重新开始
暂停状态-t
  • Tracing stop
    阻塞状态之一。
    进程处于被追踪的状态,比如在调试的时候,等待某种资源。

终止态

僵尸-Z
  • Zombie
    一个进程已经执行完毕,但是当前并没有获取这个进程退出的相关数据时,此时这个进程的状态称之为僵尸状态。
    当一个进程执行完成之后,这个进程的代码和数据可以释放掉,但是其对应的PCB不能释放,需要保存供操作系统或者用户获取这个进程的退出信息。

为什么存在Z状态。
创建一个进程是希望这个进程给用户完成工作的,子进程必须得有结果数据,Pcb中的。

什么时Z状态。
进程已经退出了,但是当前的状态需要自己维持住,供上层读取,必须处于Z状态。

如果父进程不读取呢。
如果父进程不读取这个僵尸进程,僵尸状态的进程会一直存在。task_struct对象也要一直存在,需要占用着内存。此时会出现内存泄漏的问题。

所有的进程在退出的时候,都要先经过Z状态。

defunct : 无效的,死亡的。

死亡-X
  • Dead
    真正的死亡状态,进程真正的被销毁了。

孤儿进程

当父进程比子进程提前结束,父进程会被他的父进程bash回收,此时父进程被回收后,子进程就变成了孤儿,此时子进程会被1号进程领养,1号进程就是系统进程。此时子进程不仅变成了孤儿进程也变成了后台进程

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

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

相关文章

【力扣 Hot100 | 第六天】4.21(字母异位词分组)

9.字母异位词分组 9.1题目 给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例一: 输入: strs ["eat", "tea", "tan&quo…

基于高斯混合模型的视频背景提取和人员跟踪算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MATLAB2013B 3.部分核心程序 .............................................................................. %我们这里…

数据库系统原理实验报告4 | 数据完整性

整理自博主本科《数据库系统原理》专业课自己完成的实验报告,以便各位学习数据库系统概论的小伙伴们参考、学习。 专业课本: ———— 本次实验使用到的图形化工具:Heidisql 目录 一、实验目的 二、实验内容 1、建表 2、对1题中创建的Stud…

世媒讯提供海内外媒体宣发服务,引领企业新媒体发展之路

在这个信息化的时代,软文发稿已经成为企业发展不可或缺的重要工具。随着社会的快速发展,消费者需要更多定制化、个性化的信息。利用软性推广,凭借其细致入微的信息传递,可以迅速抓住消费者的注意力,从而进一步推动企业…

(C++) 内类生成智能指针shared_from_this介绍

文章目录 &#x1f601;介绍&#x1f914;类外操作&#x1f605;错误操作&#x1f602;正确操作 &#x1f914;类内操作&#x1f62e;std::enable_shared_from_this<>&#x1f62e;奇异递归模板 CRTP&#xff08;Curiously Recurring Template Pattern&#xff09;&#…

电商技术揭秘三十二:智能风控的案例研究与未来趋势

相关系列文章 电商技术揭秘相关系列文章合集&#xff08;1&#xff09; 电商技术揭秘相关系列文章合集&#xff08;2&#xff09; 电商技术揭秘二十八&#xff1a;安全与合规性保障 电商技术揭秘二十九&#xff1a;电商法律合规浅析 电商技术揭秘三十&#xff1a;知识产权保…

【Linux网络】DHCP原理与配置

目录 一、DHCP工作原理 1.了解DHCP服务 2.使用DHCP的好处 3.DHCP的分配方式 二、DHCP的租约过程 三、DHCP场景应用实验 一、DHCP工作原理 1.了解DHCP服务 DHCP&#xff08;Dynamic Host Configuration Protocol&#xff0c;动态主机配置协议&#xff09; 由Internet工作…

Java-Collection集合极其遍历

Collection是Java中的一种单列集合&#xff0c;即每次添加只能添加一个元素。它是单列集合的祖宗接口&#xff0c;其功能是全部单列集合都可以使用的 常用方法&#xff1a; public boolean add(E e) 将特定对象添加到当前集合中public void clear() 清空集合public boolean r…

JAVA毕业设计137—基于Java+Springboot+Vue的物流快递仓库管理系统(源代码+数据库)

毕设所有选题&#xff1a; https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSpringbootVue的物流快递仓库管理系统(源代码数据库)137 一、系统介绍 本项目前后端分离&#xff0c;分为员工、销售员、仓库员、商品管理员、超级管理员五种角色 1、员工…

遥控车模的电机控制器

一、项目简介 基于CH32V103单片机结合RTT开发一套无刷电机无感矢量控制器&#xff0c;使用无感矢量控制无刷电机具有噪音小、控制线性度好、电机效率高等优点。使用三相全桥电路将直流电转换为交流电驱动无刷电机&#xff0c;利用串联电阻和差分采样电路采集UV两相的电流信号。…

针对icon报错

针对上篇文章生成图标链接中图标报错 C# winfrom应用程序添加图标-CSDN博客 问题&#xff1a;参数“picture”必须是可用作Icon的参数 原因&#xff1a;生成的ico图标类型不匹配 解决方法&#xff1a; 更改导出的ico类型

DataGrip操作Oracle

一、创建表空间 表名任意起&#xff0c;路径自己指定 -- 创建表空间 create tablespace mydb1 -- 表名 datafile E:\Code\sql\oracle\oracle_tablespace\mydb1.dbf --指定表空间路径 size 100M --指定表空间大小 autoextend on next 50M --指定一次扩充多少mb extent managemen…

B2弹幕插件优化版WordPress插件

源码下载&#xff1a;B2弹幕插件.zip 这是b2独有的站点信息弹幕插件&#xff0c;专门用来在首页显示站点动态的一款个性化 WordPress插件。喜欢的可以下载回去进行二次开发&#xff0c;还是蛮不错的 基于wordpress 7B2主题开发的一款弹幕插件/气泡插件 功能一览 插件安装&a…

redis7安装与配置

一、下载 通过 redis官网 或者 redis中文网 下载。 以下是 redis 相关文档资料链接&#xff1a; redis源码地址 redis在线测试 redis命令参考 redis中文文档 历史发布版本的源码地址 二、版本命名规则 Redis从发布到现在&#xff0c;已经有十余年的时光了&#xff0c;…

HFSS端口介绍2---波端口

前面我们讨论了Lumped Port设定相关的内容,这节我们继续讨论Wave Port(波端口)使用相关的问题。 波端口使用范围 封闭结构:如波导、同轴电缆等 包含多个传播模式的模型 端口平面在求解区域外的模型 模型中包含均匀的波导或者传输线结构 波端口的大小 对于封闭的传输线结构:边…

【熵与特征提取】从近似熵,到样本熵,到模糊熵,再到排列熵,包络熵,散布熵,究竟实现了什么?(第六篇)——“散布熵”及其MATLAB实现

今天讲散布熵&#xff0c;之前用了几篇文章分别讲述了功率谱熵、奇异谱熵、能量熵、近似熵、样本熵、模糊熵、排列熵、包络熵这8种类型的熵&#xff1a; Mr.看海&#xff1a;【熵与特征提取】基于“信息熵”的特征指标及其MATLAB代码实现&#xff08;功率谱熵、奇异谱熵、能量…

全世界IT人苦竞业久矣!美国FTC宣布全面废除员工竞业协议

2023 年 1 月&#xff0c;美国联邦贸易委员会&#xff08;FTC&#xff09;发布声明称&#xff0c;拟在全国范围禁止用人单位与雇员签订竞业禁止性条款。当地时间 4 月 23 日&#xff0c;FTC 宣布全面禁止所有员工&#xff08;包括高级管理人员&#xff09;签署新的竞业禁止协议…

SpringMVC基础篇(二)

文章目录 1.Postman1.基本介绍Postman是什么&#xff1f; 2.Postman快速入门1.Postman下载点击安装自动安装在系统盘 2.基本操作1.修改字体大小2.ctrl “” 放大页面3.进入创建请求界面 2.需求分析3.具体操作4.保存请求到文件夹中1.点击保存2.创建新的文件夹3.保存成功 3.使用…

MySQL索引为什么选择B+树,而不是二叉树、红黑树、B树?

12.1.为什么没有选择二叉树? 二叉树是一种二分查找树,有很好的查找性能,相当于二分查找。 二叉树的非叶子节值大于左边子节点、小于右边子节点。 原因: 但是当N比较大的时候,树的深度比较高。数据查询的时间主要依赖于磁盘IO的次数,二叉树深度越大,查找的次数越多,性能…