一起talk C栗子吧(第一百三十三回:C语言实例--创建进程时的内存细节)


各位看官们。大家好,上一回中咱们说的是从内存角度看进程和线程的样例。这一回咱们说的样例是:创建进程时的内存细节。闲话休提,言归正转。让我们一起talk C栗子吧!

看官们。我们都知道使用fork函数能够创建一个新的进程,今天我们一起说一下使用该函数创建进程时内存的一些细节问题。我们介绍的的重点还是内存布局中的四个分区。

  • 1.在父进程中使用fork时,会创建一个新的进程,我们叫它子进程。子进程有自己的内存空间;
  • 2.子进程的内存空间中没有代码区,子进程和父进程共享代码区;
  • 3.子进程的内存空间中拥有自己的数据区,堆区和栈区,而且这些区域中的内容是父进程区域中内容的副本;
  • 4.上面所说的副本表明父子进程中的内容是同样的。可是子进程没有直接从父进程复制这些内容,而是有点像C语言中的指针,子进程通过“指针”指向了父进程的内存。因此他们的内容是同样的;
  • 5.子进程没有直接复制父进程内存中的内容,是由于这样做会消耗时间和空间,影响创建进程的效率;
  • 6.当改动子进程内存空间中的内容时。子进程開始复制父进程内存空间的内容,这个时候,子进程内存空间的内容全然属于自己,这样的变化就叫作写时复制技术(copy on write)。
  • 7.由于子进程内存中的内容属于自己,所以改动子进程内存中的内容时不会影响父进程内存中的内容。这 一点。我们在前面章回举过具体的样例,这里就不再举样例了;
  • 8.运行exec系列函数时也会触发写时复制,关于exec系列函数。我们在后面章回中再做介绍;
  • 9.写时复制技术能够降低不必要的内存复制操作。进而提高创建进程的效率;

看官们。我们把创建进程时的内存细节一步一步地列出来了,希望能够帮助大家具体地理解创建进程时的内存细节问题。

各位看官,关于“创建进程时的内存细节”的样例咱们就讲到这里。欲知后面还有什么样例,且听下回分解 。


转载于:https://www.cnblogs.com/cxchanpin/p/7382763.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值