孤儿进程和僵尸进程

       孤儿进程和僵尸进程与Linux的进程回收机制有关。在Linux中,使用系统调用exit函数族使进程结束运行。在用户程序中即使程序员没有写入调用exit的代码,系统也会在最后执行exit的系统调用。

       在多进程环境下,子进程的结束状态应该让父进程知道,因为父进程可能会需要子进程的一些信息。程序都会有返回值,子进程的主函数会把返回值通过系统调用exit提交给内核(因此exit调用必须被提供返回值参数status)。但进程间的地址空间独立,即使是父子进程,它们之间也是相互独立不可互访的,进程间通信必须要经由内核(无论是管道、消息队列、共享内存还是socket)。子进程的返回值需要先交给内核,再由父进程向内核请求访问其返回值。

       进程是独立的调度单元,每个进程都有自己的返回值,在Linux的实现中,其返回值会被内核写入调用exit的进程的PCB中。进程在调用exit时就标识进程的生命周期结束了,其占用的大部分资源会被内核回收,比如内存、页表等,但进程的PCB还不能被回收,因为这里面存放着进程的结束状态。父进程通过调用waitwaitpid来获取子进程的结束状态,然后内核才能回收子进程的PCB。也就是说,回收PCB的工作不是在子进程调用exit时,而是在父进程调用wait或waitpid后,内核受理系统调用期间。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值