进程状态初始

文章详细介绍了Linux中进程的不同状态,包括R(运行)、S(睡眠)、D(磁盘睡眠)、T(暂停)和Z(僵尸)状态,以及状态之间的转换。R状态表示进程正在运行或等待CPU;S状态进程可能在等待某个事件;D状态通常与I/O操作相关;T状态通过信号暂停进程;Z状态的进程已退出但资源未回收。此外,还讨论了前台和后台进程的执行方式,以及如何通过信号控制进程状态。
摘要由CSDN通过智能技术生成

目录 :

          1.状态的认识

          2.具体状态的学习

          3.验证 R  S  T   Z(引出孤儿进程)状态

          4.前台、后台运行程序

--------------------------------------------------------------------------------------------------------------

1.状态的认识

进程的状态信息在哪里呢???

task_struct (PCB)

进程状态的意义:方便OS快速判断进程,完成特定的功能,比如调度,本质就是对众多状态的分类!!!!!

2.具体状态的学习

1.R状态   :运行状态

 2.S    (sleeping)和  D(disk sleep) 状态

 那么当磁盘可以读的时候,磁盘一旦可以读,要做的不是将等待队列的进程去读磁盘,而是将这个进程的状态设为R状态(换而言之就是这个进程等待成功了),将这个等待成功的进程挪到CPU的运行队列上。CPU开始调度下一个进程。

所谓的进程,在运行的时候,有可能因为运行需要,可以会在不同的队列里

在不同的队列里,所处的状态是不一样 的

3.  T(stopped) :暂停状态

4.X(dead) : 死亡状态   --》回收进程资源 = 进程相关的数据结构 + 你的的代码和数据

5.Z(zomble):僵尸状态

为什么要用僵尸状态:为了辨别这个进程退出死亡的原因

死亡状态并不是立即回收进程资源,而是在死亡状态之前进入僵尸状态,保存进程退出的信息

进程退出的信息也是数据被写在在PCB中,供我们的系统或父进程读取

3.验证 R S T 状态

1.R状态的验证

2.S状态

同时这个例子,也能看出外设和CPU相比是非常慢的

当CPU把PCB放在外设的等待队列时,看着程序一直在打印,可在CPU看来,这个进程一直在等待队列中等待

所以为什么我们在看R状态时我们只有空语句,因为外设太慢了CPU会认为这个进程一直在等待,但是当这个进程没有需要访问外设时,CPU会一直运行这个循环进程,只需要排队等这个CPU资源就可以

3.T状态 :暂停这个进程

首先我们先学一下如何暂停一个进程

向进程发送信号的方式来开始和暂停一个进程

如何发信号给我们的目标进程呢

kill -信号编号  进程PID

也就查看到了我们的T状态

 这时候我们再想干掉这个进程我们需要  kill  -9  PID

4.Z状态 : 僵尸状态

 我们用下面这段程序来看僵尸进程

 

 这个时候,当我们的子进程都退出的时候,父进程一旦终止,虽然我们的父进程没有回收子进程,我们的操作系统也会想办法回收这个子进程的

但只要我们的父进程一直不终止,且父进程也不回收,,那么这个僵尸进程可能会一直存在

------------------------------------------------------------------------------------------------------------------

上面的是子进程退出,父进程仍在运行的情况(子进程先于父进程死亡)

那么我们如果将父进程先于子进程死亡(但是子进程一直运行)

此时这个子进程是孤儿进程,这个子进程被1号进程收养(1号也就是操作系统)

4.前台、后台运行程序

前台进程 :在命令行运行我的程序的时候,就比如 pwd   ls  等这些指令都是在前台运行的

,在前台运行的时候,ls pwd   touch 等是不起作用的

 后台进程:在运行程序的时候  带一个  &符号,就是后台进程,后台进程最明显的表现就是可以执行你的命令

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值