分析Linux内核创建一个新进程的过程(Linux)

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

       这次实验要详细分析Linux内核创建新进程的过程。那么我们应该先明确,一个进程在Linux内核中是怎样的。那么就是要知道如下的几个知识。

       进程(Process)

               系统进行资源分配和调度的基本单位,一个进程是一个程序的运行实例。

      进程描述符(task_struct)

               用来描述进程的数据结构,可以理解为进程的属性。比如进程的状态、进程的标识(PID)等,都被封装在了进程描述符这个数据结构中,该数据结构被定义为task_struct

       进程控制块(PCB)

               是操作系统核心中一种数据结构,主要表示进程状态。在第一次实验就已经接触过了。

       进程状态

               开始、就绪、运行、阻塞、终止。



       众所周知,创建一个进程是通过fork()实行的。实际上在Linux中创建进程一共有三个函数:

              1.fork,创建子进程。

              2. vfork,与fork类似,但是父子进程共享地址空间,而且子进程先于父进程运行。

              3. clone,主要用于创建线程。这里值得注意的是,Linux中得线程是通过模拟进程实现的,较新的内核使用的线程库一般都是NPTL。


       那么我们现在来看看这三个函数在创建新进程时发生了。查看源代码,fork()通过触发0x80中断,陷入内核来提供调用。

       代码精简后如下:

 

       可以看出,无论是哪种方法创建新进程,最终都是通过do_fork()实现的!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值