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

Linux进程(2)(进程状态 - 僵尸、孤儿进程)

目录

1.进程状态

1)直接谈论Linux的进程状态

R :进程运行的状态               

S :休眠状态    (进程在等待“资源”就绪;可中断睡眠)

T / t :让进程暂停,等待被进一步唤醒

D :不可被杀,深度睡眠,不可中断睡眠

2)僵尸进程和孤儿进程

1.僵尸进程

2.孤儿进程

3.进程的阻塞、挂起和运行

I.阻塞态

II.挂起态


1.进程状态

1)直接谈论Linux的进程状态

比如:#define RUN 1

           #define SLEEP 2

           #define STOP 3

               .....

实际上其进程状态就是进程内部的一个属性

R :进程运行的状态               
S :休眠状态    (进程在等待“资源”就绪;可中断睡眠)
T / t :让进程暂停,等待被进一步唤醒

暂停:

唤醒:

在调试的过程中,运行到断点处会暂停运行 ---> t

D :不可被杀,深度睡眠,不可中断睡眠

消除D状态的方法:1.进程自己醒来 2.重启 -- 断点

2)僵尸进程和孤儿进程

1.僵尸进程

子进程运行五秒,父进程无限循环

在子进程运行结束之后,父进程仍在运行,子进程变为僵尸进程

如果没有父进程读取,僵尸进程会一直存在!

已经运行完毕,但是需要维持自己的退出信息,在自己的进程task_struct 会记录自己的退出信息,未来让父进程来进行读取      

若一直为读取,则会导致内存泄漏问题!

Z 状态通过 waitpid变为 X 状态然后由OS进行释放

2.孤儿进程

父进程如果先退出,子进程就会变成孤儿进程,孤儿进程一般都是会被1号进程(OS本身)进行领养的

孤儿进程为什么要被OS领养?依旧要保证子进程正常被回收

我们已经启动的所有的进程,我们怎么从来没有关心过僵尸呢?内存泄漏??


直接在命令行中启动的进程,他的父进程是bash,bash会自动回收新进程的Z

3.进程的阻塞、挂起和运行

Linux不是这样调度的,这只是OS教程调度算法的一种(简洁)

进程在运行队列中,该进程的状态就是R状态

表示已经准备好了,可以随时被调度了

那么一个进程一旦持有CPU,会一直运行到这个进程结束吗?

不会

基于时间片进行轮转的方式进行调度,在一个时间段内同时得以推进代码,就叫做并发

任何时刻,都同时有多个进程在真的同时进行,我们叫做并行

I.阻塞态

这时,./teatStatus 还并没有被调度

而是正在等待键盘资源是否就绪,键盘上面有没有被用户按下的按键,按键数据交给进程

阻塞和运行的状态变化,往往伴随着pcb被连入不同的队列中!

入队列的不是进程的什么代码和数据   而是进程的task_struct

各种设备也有自己的wait_queue     不是只有cpu才有运行队列

当比如像scanf这种需要等待键盘输入的情况,就要将其task_struct加入到键盘设备的等待队列中等待

操作系统是软硬件资源的管理者 -- 而进程本身就是软件

操作系统如何对软硬件进行管理?

先描述,再组织!

II.挂起态

关于进程切换的话题

上下文数据:CPU内部的所有的寄存器中的临时数据

进程在切换时,最重要的事情就是:上下文数据的保护和恢复

CPU内的寄存器:
寄存器本身是硬件,具有数据的存储能力,CPU的寄存器硬件只有一套!!

CPU内部的数据,可以有多套,有几个进程,就有几套和该进程对应的上下文数据

                                        寄存器 != 寄存器


http://www.mrgr.cn/news/25287.html

相关文章:

  • 获取STM32 MCU的唯一ID
  • 无人机飞行时状态详解!!!
  • 防逆流开关跳闸解决方案|自发自用余电不上网防逆流控制解决方案|微电网防逆流控制器解决方案
  • (Java企业 / 公司项目)点赞业务系统设计-批量查询点赞状态(二)
  • 计算机操作系统之并行性与并发性笔记
  • 深度学习——基础知识
  • 金色传说:SAP-SD-VA01增强:创建销售订单时检查行项目长文本必输增强
  • 激光超声成像
  • [网络]TCP/IP协议 之 数据链路层和DNS
  • 国产(DM8)达梦数据库安装教程Windows
  • python 面向对象(进阶篇)详解!
  • 如何打造一款成功的游戏
  • spring boot设置多环境的配置文件
  • GORM中常见的“reflect: reflect.Value.Set using unaddressable value“错误及解决方案
  • Nginx解决跨域问题
  • JSON对接发送短信验证码怎么获取状态报告
  • 基于Python的可视化在线学习系统
  • 如何进行IP清洗
  • 优化安防视频监控的关键体验:视频质量诊断技术如何应用在监控系统中?
  • Spring面试