Linux内核创建一个新进程的过程

1400阅读 0评论2017-04-02 suphgmh
分类:LINUX

网易云课堂-Linux内核分析(中科大孟宁老师)-课程网址:

一、进程是如何描述的?

1、进程描述符task_struct数据结构



2、所有进程链表struct  list_head  tasks;





3、进程的内核堆栈:

Linux为每个进程分配一个8KB大小的内存区域,用于存放该进程两个不同的数据结构:

–  Thread_info

–  进程的内核堆栈

进程处于内核态时使用,不同于用户态堆栈

内核控制路径所用的堆栈很少,因此对栈和Thread_info来说,8KB足够了



二、Linux进程状态转换图:





三、进程之间的亲属关系:

程序创建的进程具有父子关系,在编程时往往需要引用这样的父子关系。进程描述符中有几个域用来表示这样的关系



四、进程是如何创建出来的?


在服务进程中创建一个子进程,子进程拷贝父进程所有信息。子进程这是就会作为一个独立的进程,进行进程调度。

现在的问题是,子进程获得CPU后,子进程从哪里开始执行?



上一篇:中断上下文与内核上下文
下一篇:Linux内核如何装载和启动一个可执行程序