Linux内核学习笔记 -11 进程创建

目前在用户程序开发中,不仅仅涉及到进程,还涉及到线程和携程。它们到底是如何创建的?为什么进程/携程创建后,觉得自己对其没有控制权?这是因为控制完全由操作系统去控制,你只是发出了一个请求,然后整个创建的过程就交给了操作系统。如果对进程创建过程不了解,一旦运行出现问题,就会束手无策,进程创建过程非常复杂,此处只是简单介绍 

进程的资源到底有哪些,如何体现?线程为什么是轻量级的运行单位?如何体现?

进程和线程几乎共享所有的资源,包括代码/数据/进程空间/打开的文件,线程拥有自己的寄存器和栈,这些概念上的数据段/代码段,进程空间打开的文件在内核中是如何表现的?

内核如何对待进程/线程/内核线程?linux内核坚持平等的原则,一视同仁,内核使用唯一的数据结构task_struct分别表示它们,用相同的调度算法对这三者进行调度,尽管表面看起来很不一样,但在内核中,最终都通过do_fork分别创建,这样的操作对内核而言简单方便,在统一的基础上分别保持各自的特性,这是如何做到的?

从用户态函数看,创建进程和创建线程调用了不同的函数,分别为fork和pthread_create(),对应的系统调用分别为fork和clone。vfork与fork比较类似,后面会讲到二者的差别。

所有的

猜你喜欢

转载自blog.csdn.net/f2157120/article/details/107599273