当前位置:   article > 正文

【Linux】写实拷贝、父子进程间数据共享以及僵死进程_父子进程的是写实拷贝嘛

父子进程的是写实拷贝嘛

目录

一、写实拷贝

二、父子进程间数据共享

三、僵死进程


我们都知道fork之后,会产生子进程,那么今天就来看一下,产生的子进程与父进程之间的数据共享问题。要说这个我们必须明确写实拷贝的概念

一、写实拷贝

fork之后,子进程会拷贝父进程的PCB结构(这个拷贝是浅拷贝),然后对PCB里的数据做修改(pid,ppid等属性信息,也有保留的一些不做修改的)。我们现在假设一种情况,若fork之后,刚开始时就把父进程的所有页表直接拷贝给子进程,但子进程中并没有访问或修改这些页表,就要进程替换,岂不是白白做了一次复制(复制没有意义),所以,出现了写实拷贝技术,这样在刚开始时子进程并不是真正的复制父进程的空间,而是与父子进程共享所有的数据空间(全局、局部、堆区数据)。当父、子进程中任意一个进程试图去修改数据时,操作系统会将要修改的数据所在的页直接复制出来。可见写实拷贝技术是一种较高效的拷贝技术,省去了很多不必要的拷贝过程。

在这里,再提一下深拷贝和浅拷贝,二者仅在拷贝指针时存在区别

浅拷贝:只拷贝指针的值,而不拷贝指针所指向空间的内容

深拷贝:拷贝指针的值,同时也会将指针指向的内容拷贝一份

如图所示:

二、父子进程间数据共享

父子进程间对于全局数据、局部数据、堆区数据、文件描述符

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

闽ICP备14008679号