当前位置:   article > 正文

面试(四)fork创建子进程的流程是如何的?_fork产生子进程时,子进程的各个成分如何产生

fork产生子进程时,子进程的各个成分如何产生

fork接口通过系统调用会创建一个与原来进程几乎完全相同的进程,也就是俩个进程可以做完全相同的事儿,当然,如果传入参数不同,也可以做不同的事儿。

一个进程具有着它自己的pcb,进程控制块,当该进程调用fork接口后,就会创建一个新的pcb进程控制块出来,新创建出来的进程就被叫做子进程,而之前的进程就被叫做父进程,fork接口具有返回值,如果创建子进程失败就会返回-1,在子进程中返回值为0,在父进程中返回子进程的pid一个大于0的值。

在子进程的pcb中拥有着与父进程pcb几乎一致的信息(比如上下文数据、内存指针……)子进程保留着大部分父进程的运行信息,即父进程现在运行到了那里,那么子进程也运行到了那里。

父子进程中的变量存在于各自的虚拟地址中,并分别通过页表映射到同一块物理内存,但是当子进程或者父进程中的数据内容将要发生修改的时候,子进程就会通过写时拷贝技术在物理内存中开辟一块新的空间,然后通过虚拟地址映射到这块新的物理内存中去。

写实拷贝技术:进程之间是相互独立、互不影响的,当操作系统要对父子进程数据进行修改的时候,就会重新开辟一块空间出来。

在子进程创建出来之后,二者通过虚拟地址空间经过页表映射到同一块内存地址,只有在需要修改父子进程数据的时候才会进行对子进程的空间开辟,这一举措是为了提高创建子进程的效率,防止对子进程进行空间开辟后却不进行修改的浪费。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/210585
推荐阅读
相关标签
  

闽ICP备14008679号