进程的状态和优先级

一.进程的退出

进程=内核PCB+数据和代码,它们都要占据内存空间,进程退出的核心工作之一就是释放掉自己的PCB+数据和代码。

为什么要创建出进程呢?一定是我要进程完成某些任务!

当进程退出了,不光光只是退出了这么简单,还要知道该进程把任务完成的怎么样吧,这里的你指的是谁啊?

一般指的是父进程或者OS,进程退出的时候,要有一些退出信息,表明自己把任务完成得怎么样了!

比如说平时我们写代码,给main函数的返回值都是return 0的,为什么这里我们要返回0呢?返回1,2,3等等行不行,

其实这里return 0就是一种退出信息,表示将任务完成的很好。(后续细说这个退出码)


进程退出了,退出信息会由OS写到该退出进程的PCB中,可以允许进程的代码和数据空间释放掉,但是它的退出信息还没有被父进程或OS读取到,OS就还必须维护该进程的PCB!

此时,该进程算是退出了吗?OS已经不会再调用该进程了,但是它的PCB确实还存在着,这时的进程就叫做僵尸进程。

二.Z(zombie)-僵尸进程

1.什么是僵尸进程?

僵尸状态(Zombies)是一个比较特殊的状态。当进程退出并且父进程(使用wait()系统调用,后面讲)

没有读取到子进程退出的返回代码时就会产生僵尸(死)进程。

僵尸进程会以终止状态保持在进程表中,并且会一直在等待父进程读取退出状态代码。

所以,只要子进程退出,父进程还在运行,但父进程没有读取子进程状态,子进程进入Z状态

用代码来验证僵尸进程:

#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
int main()
 {
   
     pid_t id=fork();
     if(id<0)
          return 1;
      else if(id==0)//子进程<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值