码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【Linux】进程概念 —— 进程状态


    目录

    一.操作系统理论中的进程状态

    二.Linux系统中的进程状态

    0.前台进程与后台进程

    1.R - 运行状态(Running)

    2.S - 睡眠状态(Sleeping)

    3.D - 磁盘睡眠(Disk Sleep)

    4.T - 暂停状态(Stopped)

    5.t - 调试状态(Tracing Stopped)

    6.X - 死亡状态(Dead) 

    7.Z - 僵尸状态(Zombie)


    一.操作系统理论中的进程状态

    1.新建态:字面意思,一个进程刚刚被新建出来,还没有加入到任何队列中

    2.运行态:task_struct在运行队列中等待CPU执行

    3.阻塞态:等待非CPU资源,例如:等待键盘输入就绪,等待网卡等各种非CPU资源...

    4.挂起态:内存不足时,OS会挑选需要等待资源时间过长的进程先换出到磁盘(SWAP分区),此时只是将内容和数据换出到磁盘,task_struct仍然还在内存中,当挂起态需要被运行时,先要进行换入内存操作,再添加到运行队列等待。

    5.终止态:字面意思

    内存到磁盘换入换出的过程就是I/O的过程,这个过程很浪费时间

    挂起所做的事其实本质就是用时间来换取空间

    二.Linux系统中的进程状态

    Linux内核中对于状态的标识与定义

    0.前台进程与后台进程

    进程分为前台进程和后台进程,状态符号后带有“+”说明是前台进程

    前台进程:运行时会占用Shell进程,使Shell无法运行,可以使用ctrl+c结束进程

    后台进程:运行时不会影响Shell进程,ctrl+c没有用,可以使用kill -9 进程pid杀掉

    例如:./process为将进程当作前台进程运行

               ./process &为将进程当作后台进程运行

    Linux下的进程状态
    text/plain 4星 超过75%的资源 909.0B
    下载

    1.R - 运行状态(Running)

    进程在运行中或者进程在运行队列里

    对应操作系统理念中的运行态

    2.S - 睡眠状态(Sleeping)

    进程在等待事件完成,在等待某种资源(S状态也可称为可中断睡眠)

    对应操作系统中的阻塞态/挂起态

    3.D - 磁盘睡眠(Disk Sleep)

    深度睡眠,不可被中断,不可被被动唤醒

    当服务器压力过大时,OS会通过一定的手段,杀掉一些进程,来起到节省空间的作用!

    如果是S状态时,可以被OS杀掉;

    如果是D状态时,不能被OS杀掉,OS无法插手,只能等进程自动醒来;

    dd命令可以模拟出D状态的进程

    4.T - 暂停状态(Stopped)

    linux进程运行状态图
    doc 0星 超过10%的资源 34KB
    下载

    5.t - 调试状态(Tracing Stopped)

    6.X - 死亡状态(Dead) 

    一个进程退出且被检测好回收后,就是X状态

    该状态不好捕捉,如果有大量结束的进程都在等待OS回收,才可观察到,瞬时性非常强

    7.Z - 僵尸状态(Zombie)

    此时一个进程已经退出,还不允许被回收释放,处于一个检测状态

    维持这个状态,等待OS或者父进程检测后来进行回收。

    Z与X状态的结合就是操作系统理论的终止状态

    以上例子,子进程先于父进程结束,处于一个待检测状态,但父进程还没有调用系统调用,也就是还没有读取到子进程退出时的返回值,这时子进程就是一个僵尸进程

    总结:

    只要子进程退出,父进程还没有退出,且父进程还没有读取到子进程的状态代码(子进程返回值),子进程就会进入僵尸状态,成为一个僵尸进程,等待父进程读取退出状态代码。

    僵尸进程的危害:

    子进程一直处于Z状态,无法被回收

    维护退出状态本身要用数据维护,task_struct就需要一直维护

    最终结果就是:PCB需要一直维护状态,内存资源也一直被占用,发生内存泄漏!

  • 相关阅读:
    简述会话跟踪技术——Cookie和Session
    umi学习笔记
    1.1 计算机网络在信息时代中的作用
    单目标优化算法:火鹰优化算法(Fire Hawk Optimizer,FHO)求解23个函数--提供MATLAB代码
    基于SSM的快餐店点餐服务系统设计与实现
    2022年06月 Scratch(一级)真题解析#中国电子学会#全国青少年软件编程等级考试
    《Java并发编程的艺术》读书笔记 - 第六章 - Java并发容器和框架
    【 C++11 】类的新功能
    linux yum源被禁用,yum源管理
    Spring Cloud和Dubbo有哪些区别?
  • 原文地址:https://blog.csdn.net/Hello_World_213/article/details/126175591
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号