张建帮 原创作品转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000
这一次我们来聊聊系统调用中的
fork
,以便更深入地理解linux
中的调用流程与具体的实现(以内核linux-3.18.6
为例,源代码点这里)。在 Linux 操作系统中,每个进程被创建的时候,内核会给这个进程分配一个进程描述符结构,即PCB ,进程控制块。它保存了这个进程的状态,标识符,打开的文件,等待的信号,文件系统等待的资源信息。每个进程描述符都表示一个独立的进程。在操作系统中,每个进程的进程描述都被加入到一个双向链表的任务队列中,由操作系统决定哪个进程可以占用 CPU ,哪个进程应该让出 CPU 。在 Linux 中,一个进程的进程描述符结构如下图所示:
可以看到,它是一个很复杂的数据