当前位置: 首页 > news >正文

【Linux】Linux 操作系统 - 11 , 进程状态 - 详谈《僵尸进程和孤儿进程》让你彻底明白 !

文章目录

  • 前言
  • 一、什么是进程的状态 ?
  • 二、简单认识调度队列
  • 三、操作系统学科中的运行 , 阻塞 , 挂起状态
    • 1. 运行状态
    • 2. 阻塞 , 挂起状态
  • 四、Linux 系统中的进程状态(重点)
    • 1. 都有什么状态 ?
    • 2. 运行状态
    • 3. 睡眠状态
    • 4. 暂停状态
    • 基本状态总结
  • 五、僵尸进程(面试重点)
    • 1 . 什么是僵尸进程 ?
    • 2 . 为什么父进程要获取子进程信息 ? 获取什么信息 ?
    • 3 . 父进程要回收子进程的信息 , 信息在哪里 ?
    • 4 . 僵尸状态
    • 5 . 僵尸进程的危害
  • 六、补充有关内存泄漏(了解)
    • 1 . 进程一旦退出 , 这个泄漏问题还在吗 ?
    • 2 . 什么进程内存泄漏比较麻烦 ?
  • 七、孤儿进程(面试重点)
    • 1. 是什么 ?
    • 2. 孤儿进程是被谁领养 ?
      • 1 号进程是谁 ?
    • 3. 孤儿进程为什么要被系统领养 ?
    • 4. 孤儿进程是后台进程
      • 后台进程
  • 总结


前言

本篇将会对进程的状态进行详细的介绍 , 其中包括僵尸进程 , 孤儿进程 , 等状态 !


一、什么是进程的状态 ?

介绍

进程状态主要用于描述进程的运行情况,帮助操作系统进行资源分配和调度 。

   其实进程的状态在 Linux 中就是 struct_task 这个数据结构里面的一个整数 , 用整数来描述状态 !

所以 , 理解状态 , 就是一个整数在记录 !


二、简单认识调度队列


  在操作系统中会有不同队列的存在 , 其中调度队列也属其中 !

在这里插入图片描述

三、操作系统学科中的运行 , 阻塞 , 挂起状态

1. 运行状态

在这里插入图片描述

在这里插入图片描述


2. 阻塞 , 挂起状态

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


四、Linux 系统中的进程状态(重点)

1. 都有什么状态 ?

在这里插入图片描述


2. 运行状态


  一旦我们运行一个程序 , 指令等 , 只要运行起来 , 就会进行调度 , 就会加入调度队列 , 一旦加入了 , 就是运行状态了 .

在这里插入图片描述


3. 睡眠状态

  睡眠状态分为浅睡眠和深睡眠 , 浅睡眠的意思就是 : 处于浅睡眠的进程可以被中断 , 即 : ctrl + c 可以中断 !

若给了一下程序 :

  3 #include <stdio.h>4 #include <unistd.h>5 #include <sys/types.h>6 int main()7 {8 9         while(1)10         {11                 int n = 1;12                 //这里就会阻塞 ! 因为会等待键盘就绪 !13                 scanf("%d",&n);14                 printf("我是一个进程 , 我开始运行了, pid = %d , ppid = %d\n",    getpid(), getppid());15         		sleep(1);16 17         }18         return 0;

在这里插入图片描述


4. 暂停状态

在这里插入图片描述

#include <stdio.h>int main()
{printf("hello\n");//在此处打断点printf("hello\n");printf("hello\n");printf("hello\n");printf("hello\n");printf("hello\n");//在此处打断点printf("hello\n");printf("hello\n");printf("hello\n");printf("hello\n");printf("hello\n");return 0;
}

  cgdb 调试代码 !!!
在这里插入图片描述
在这里插入图片描述

基本状态总结

在这里插入图片描述


五、僵尸进程(面试重点)

1 . 什么是僵尸进程 ?

在这里插入图片描述

  抓住没有及时回收 , PCB 还在被维护 !


2 . 为什么父进程要获取子进程信息 ? 获取什么信息 ?

在这里插入图片描述


3 . 父进程要回收子进程的信息 , 信息在哪里 ?


  这些信息就在 PCB 中 , Linux 中就是在 task_struct 这个数据结构里 , 所以即使子进程退出了 , 这个 PCB 还是在系统里 !


4 . 僵尸状态

&emps; 处于僵尸进程的进程状态就是僵尸状态 , 在 Linux 中 Z 表示 “僵尸状态 !”

● 给出以下代码 , 模拟一下僵尸进程 !

int main()
{printf("我是父进程 , pid = %d, ppid = %d\n", getpid() , getppid());//创建子进程pid_t id = fork();if(id < 0){printf("fork err!\n");return 1;	}else if(id == 0){// childint n = 5;while(n){printf("我是子进程 , pid = %d , ppid = %d\n",getpid(),getppid());sleep(1);n--;} }else{// parent 父进程 , 什么都不做while(1){}}	return 0;
}	

在这里插入图片描述


5 . 僵尸进程的危害

在这里插入图片描述


六、补充有关内存泄漏(了解)

1 . 进程一旦退出 , 这个泄漏问题还在吗 ?


  进程一旦退出了 , 这个泄漏问题就不存在了 !


2 . 什么进程内存泄漏比较麻烦 ?


  常驻内存进程一旦内存泄漏 , 会很麻烦 !


七、孤儿进程(面试重点)

1. 是什么 ?

在这里插入图片描述


2. 孤儿进程是被谁领养 ?


答 : 被系统领养 !

  观察一个代码 :

int main()
{printf("我是父进程 , pid = %d, ppid = %d\n", getpid() , getppid());//创建子进程pid_t id = fork();if(id < 0){printf("fork err!\n");return 1;	}else if(id == 0){// child// 子进程一直不退出 while(1){printf("我是子进程 , pid = %d , ppid = %d\n",getpid(),getppid());sleep(1);} }else{// parent 父进程 , 什么都不做//父进程运行 5 次退出int n = 5;while(n){printf("我是父进程 , pid = %d , ppid = %dn", getpid() , getppid());sleep(1);n--;}}	return 0;
}

在这里插入图片描述

1 号进程是谁 ?

在这里插入图片描述


3. 孤儿进程为什么要被系统领养 ?

在这里插入图片描述


4. 孤儿进程是后台进程


  一旦一个进程成了孤儿进程后 , 其是后台进程 , 意思是必须用 kill 来杀死进程 !

后台进程

在这里插入图片描述

总结

在这里插入图片描述
以上就是本节内容 ! 思维导图中已经规划出了重点 !

相关文章:

  • 基于CATIA参数化球体建模的自动化插件开发实践——NX建模之球体命令的参考与移植
  • 微前端统一状态树实现方案
  • vue elementui 去掉默认填充 密码input导致的默认填充
  • String、StringBuffer、StringBuilder 的区别
  • 2025年4月个人工作生活总结
  • 93. 后台线程与主线程更新UI Maui例子 C#例子
  • 用于实时辐射场渲染的3D高斯溅射——3D Gaussian Splatting for Real-Time Radiance Field Rendering
  • 「Mac畅玩AIGC与多模态10」开发篇06 - 使用自定义翻译插件开发智能体应用
  • 拥抱 Kotlin Flow
  • MySQL入门篇(SQL语句、函数、约束、多表查询、事务)
  • Linux -- SysremV 共享内存通信
  • 软件产品登记测试 VS 确认测试有何不同?第三方检测机构深度解析
  • 0901context_useReducer_状态管理-react-仿低代码平台项目
  • Django 学习指南:从入门到精通(大体流程)
  • 健康养生:构建健康生活的多维度指南
  • 扩展根分区
  • Word中批量修改MathType公式
  • 完美解决react-native文件直传阿里云oss问题一
  • 港口危货储存单位主要安全管理人员考试精选题目
  • K8S - HPA + 探针实战 - 实现弹性扩缩与自愈
  • 女冰队长于柏巍,拒绝被年龄定义
  • 奔驰一季度利润降四成,受美国加征关税影响放弃全年盈利展望
  • 共绘“彩色上海”,IP SH艺术共创沙龙首期圆满举办
  • 莫名的硝烟|“我们最好记住1931年9月18日这个日子”
  • 徐徕任上海浦东新区副区长
  • 解放日报头版:人民城市共建共享展新卷