[TOC]
参考资料
1. 进程的基本概念
1.1. 进程与线程
进程是资源封装的单位。进程封装的资源包括:内存、文件、文件系统、信号、控制台等等。一个进程区别于另外一个进程的标记就是占有的资源完全不一样。那么在任何一个OS中描述进程,我们只需要去描述它的资源即可。通常我们使用一个数据结构PCB(Process Control Block)进程控制块来描述一个进程。在不同的OS中表现是不一样的,对于Linux操作系统,我们使用task_struct描述一个进程。
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. 守护进程
守护进程&#