进程的状态

进程分为五种状态:

(1)可执行状态:处于可执行状态的进程即已经做好一切运行准备的进程,这样的进程不是正在运行就是处于运行队列中。

(2)睡眠状态:一个进程处于睡眠状态,说明这个进程正在等待某些条件就绪,只有其所等待的条件全部就绪时,才能够被唤醒并正常运行。

(3)深度睡眠状态:睡眠状态全称可中断的睡眠状态,而深度睡眠状态全称不可中断的睡眠状态。在睡眠状态的基础上引入深度睡眠状态的原因是,常规的可中断的睡眠状态是可能存在问题的,当一个进程在内存中运行时,如果需要数据,会向硬盘提出要求,在等待数据的时候,这个进程就会进入睡眠状态。不过,如果此时,操作系统中可用的空间不足,那为了保证整个系统顺利运行,操作系统就会通过“杀进程”的方式来节省空间,那理所当然的,操作系统会优先清理那些处于睡眠状态的进程。这时的问题就是,等硬盘找到数据时,却发现刚刚提出要求的进程已经不存在了。在这个过程中,进程、硬盘、操纵系统都正常执行自己的任务,但是却还出现了问题。所以要加入一个深度睡眠状态,这个状态即通知操作系统,我现在虽然什么都没做,但是我的任务已经开始了,我现在只是在等待数据。这样操作系统就不会将其误杀了。

(4)停止状态

(5)死亡状态

僵尸进程和孤儿进程:

僵尸进程和孤儿进程用于描述子进程的状态。首先要明确一点,当创建一个子进程的时候,一定是为了完成某种任务,那父进程就必须要读取到子进程的退出信息,获知子进程的运行状态,并对子进程的资源进行回收

僵尸进程:当一个子进程退出的时候,父进程理应回收其退出状态等相关信息,但是有些时候父进程正在处理其它事情,无暇读取子进程的退出状态,这时子进程就会变为僵尸进程,保持其基本的退出信息,等父进程运行完了再来读取。

亦即一个进程已经运行完了,但是其相关的资源却没有被立即回收,这时的进程就变成了僵尸进程,把进程的退出信息暂时保存在进程控制块中,等待父进程来读取。

孤儿进程: 相比于僵尸进程是子进程先退出,父进程后退出,孤儿进程是父进程已经退出了,但子进程仍在运行。如果此时子进程仍然变为僵尸进程的话,由于父进程已经结束了,那就永远都不会有父进程来回收其资源了,读取其运行状态了,那当前子进程的资源就会一直被这个僵尸进程所占用,也就是出现了内存泄漏。

所以这时就需要使用孤儿进程,变成孤儿进程的子进程的退出信息会被init进程读取,其资源也会被init进程回收。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值