日期:2014-05-16  浏览次数:20778 次

linux进程管理(5)---进程消亡

一、目的

    本文将讲述进程是如何消亡的。一个进程既有父进程又有子进程,因此进程消亡时,既要通知父进程,也要安排好子进程。

    当前进程消亡时主要做了三件大事:释放当前进程占用的资源;为当前进程的子进程重新寻找“养父”;通知当前进程的父进程,释放当前进程剩下的资源。

    当前进程释放掉大多数进程资源后,只保留内核栈、structtask_struct数据结构;剩下的资源由父进程负责释放。

    linux调用sys_exit()sys_wait4()实现进程的消亡,代码可以在kernel/exit.c中找到。


二、当前进程释放自身资源

    当前进程使用sys_exit()->do_exit()释放进程占用的资源,处理过程如下:

    1、调用in_interrupt()检查中断服务程序是否调用了do_exit()(只有进程才能主动调用sys_exit(),中断服务程序在任何时候都不能调用do_exit());

    2、进程0不能消亡,因此检查当前进程的pid是否为0