首页 > 系统相关 >fork后内存空间的布局

fork后内存空间的布局

时间:2023-02-19 11:13:19浏览次数:32  
标签:fork 变量 布局 pid 内存空间 栈段 内存 进程

 

1. 主进程在fork出一个子进程后,会将自己4G的空间复制一份给子进程(包括代码段、数据段、堆、栈),代码段共享同一物理内存,因为子进程中的代码和父进程中的代码是一样的,只是对pid有一个判断,才会走不同的分支;

 

输出:

 红框中的代码在父进程和子进程都有一份,他们是一样的,只是他们通过判断是父进程还是子进程,走不同的分支,所以最后sleep后面的printf会打印两次(可能是子进程的pid先打印,也可能是父进程中的pid先打印)。

 

2. 子进程中的数据段、堆、栈虽然是复制了父进程中的,但它也可以有自己的数据段、堆、栈(就是在判断pid等于0时,可以定义属于自己的全局变量、局部变量等),所以说不共用同一物理内存,所以子进程操作这些数据段、堆、栈段仅对自己可见

输出:

父进程中的栈段变量i会拷贝一份到子进程中,子进程会把它放在自己栈段,当父进程对i进行++操作时,子进程中的i不会被影响,子进程加100操作,父进程也不会被影响到。虽然复制后在虚拟地址空间他们的虚拟地址是相同的,但他们最后都是修改到自己的映射到的物理内存中;在子进程的数据段定义了一个变量j,这个变量仅对自己可见,父进程不能访问这个变量;

 

 

如果打开主进程的注释,编译时会报如下错误:

 

标签:fork,变量,布局,pid,内存空间,栈段,内存,进程
From: https://www.cnblogs.com/zj-studyrecoding/p/17134357.html

相关文章

  • 打开MASA Blazor的正确姿势4.3:Grid网格布局
    Grid网格布局,借鉴了Bootstrap,以Flex弹性布局为基础,使用组件方式,让我们以更加简单直接的行列方式,进行灵活布局,是MASABlazor中更加推荐的布局方式。如果已经熟悉了Flex弹......
  • QGridLayout(表格布局)
    (一)使用QGridLayout控件的思路在新建QGridLayout对象之前,应该先将在将使用到的控件进行初始化。1.初始化布局新建QGridLayout之后,在桌面上就会出现一个网格状的布局,这个......
  • WPF 布局控件
    <!--Horizontal水平竖直排放元素默认Vertical竖直排放加属性Orientation--><StackPanelOrientation="Horizontal"><ButtonWidth="100"Height......
  • Vue Grid Layout -️ 适用Vue.js的栅格布局系统(自定义页面)
    官网:https://jbaysolutions.github.io/vue-grid-layout/zh/github:https://github.com/jbaysolutions/vue-grid-layout 一个类似于Gridster的栅格布局系统,适用于Vue.j......
  • 让CSS flex布局最后一行列表左对齐的N种方法
    原文链接https://mp.weixin.qq.com/s?__biz=MjM5MDA2MTI1MA==&mid=2649091838&idx=1&sn=fa4e1ed1e02d2813633691220c60f52f&chksm=be5bc953892c4045b64fa5a804a1d3676f5894......
  • 10.10 临时确保局部变量用的内存空间
       在代码清单10-6中定义了10个局部变量。这是为了表示存储局部变量的不仅仅是栈,还是寄存器。为了确保c1~c10所需的领域,寄存器空闲时就使用寄存器,寄存器空间不足就使......
  • 10.9 始终确保全局变量用的内存空间
    在C语言中,在函数外部定义的变量称为全局变量,在函数内部定义的变量称为局部变量。全局变量可以参阅源代码的任意部分,而局部变量只能在定义该变量的函数内进行参阅。  ......
  • runtime/cgo: pthread_create failed: Resource temporarily unavailable or fork:
    出现runtime/cgo:pthread_createfailed:Resourcetemporarilyunavailable错误​情况描述:dockerps查看运行的容器,发现提示一大堆的英文代码,其中提示一句​runtime/cgo......
  • 趣学前端 | 提到布局,我第一个会想到的是flex
    背景我身边一些非互联网技术从业的朋友,偶尔看我转发到朋友圈的文章,会表示出一定的兴趣。前段时间,有朋友问我公众号的问题,所以我来了灵感,准备写一个趣学前端系列,适用于零基础......
  • Flex 布局教程:实例篇
    上一篇文章介绍了Flex布局的语法,今天介绍常见布局的Flex写法。你会看到,不管是什么布局,Flex往往都可以几行命令搞定。我只列出代码,详细的语法解释请查阅《Flex布局教程:语......