不同进程之间的关系

不同进程之间的关系

首先要明确一点,所有我们创建的进程都是存在一个父亲进程,这个父亲进程的作用在于子进程执行完成,其内存空间需要释放掉,那么释放内存空间的这个行为是由父进程去做的.

父进程的职能就是为子进程在结束的时候释放掉空间,那么同样会存在父进程结束了,子进程还没有结束的情况

孤儿进程和守护进程

所谓孤儿进程就是没有父进程的进程,说起来比较绕,实际上就是在你执行程序的时候进行进程分裂操作,主进程就是父进程,分裂的进程就是子进程,那么存在着一种情况,如果父进程结束了,子进程还在继续执行,此时父进程已经死了,那么这个时候的子进程就称为孤儿进程.

父进程已死,孤儿进程如果执行完成没有其他进程来进行释放空间的话则系统将会被占用大量资源,这种设计并不合理,但是确实也会存在父进程先于子进程执行完的情况,因此系统实际上还会存在一个1号进程,这个进程是所有进程的父进程

1号进程可以说是所有进程的祖先,如果某个进程分裂出子进程,而其又先于子进程执行完成,那么这个子进程就会自动的认个干爹,将1号进程作为父进程,所以此时子进程执行完成后由1号进程来释放内存

那么1号进程难道就不会执行完成后被杀死么,答案是不会的,1号进程的父进程是0号进程,在0号进程分裂出1号进程后0号进程就自杀,使得1号进程称为孤儿进程,1号进程不像其他进程一样能够去找祖先认个干爹,1号进程没有任何进程来释放它,因此1号进程会永远执行下去称为了守护进程

所以在父进程结束后的孤儿进程其实也是属于守护进程,只是他们还可以去寻找1号进程做父进程,而1号进程就成了真正的永不停息的守护进程

僵尸进程

名字听起来让人不爽,这种进程确实会让人不爽,当一个子进程执行完成的时候,父进程还在进行自己的运算一直没有去执行释放子进程空间的动作,此时这种子进程处于停滞状态,一直占用着系统资源,这种进程称为僵尸进程,一旦僵尸进程过多,则会造成系统的资源极度浪费.

如果大量僵尸进程的父进程是同一个进程,而且这个进程又不太重要的话则可以在系统中直接结束掉这个父进程,那么这些僵尸进程会自动的去找1号进程认干爹,1号进程就释放掉这些僵尸进程占用的系统资源

猜你喜欢

转载自blog.csdn.net/weixin_43959953/article/details/84931525