linux孤儿进程怎么kill掉,孤儿进程、僵尸进程和守护进程

  • Post author:
  • Post category:linux


[TOC]

参考资料

1. 进程的基本概念

1.1. 进程与线程

进程是资源封装的单位。进程封装的资源包括:内存、文件、文件系统、信号、控制台等等。一个进程区别于另外一个进程的标记就是占有的资源完全不一样。那么在任何一个OS中描述进程,我们只需要去描述它的资源即可。通常我们使用一个数据结构PCB(Process Control Block)进程控制块来描述一个进程。在不同的OS中表现是不一样的,对于Linux操作系统,我们使用task_struct描述一个进程。

7390f73ad668

pcb 示意图

上图显示,包含的资源有:

pid表示一个进程的ID资源

mm_struct表示内存资源

fs_struct表示文件系统资源

files_struct表示打开的文件资源

signal_struct表示信号资源

线程则是Linux的调度单位,共享同一个进程下的资源。Linux内核调度器是以线程为单位进行调度和上下文切换的。

在Linux内核中创建进程和线程,入口是统一的均是do_fork(),但是pthread_create=>clone=>do_fork会传入以下clone_flags参数,标识这些资源需要共享,这就成了创建线程的概念了。

clone_flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|…

进程和线程的更多区别可见进程和线程

1.2. 守护进程

守护进程&#