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

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

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

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

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


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

  1. 一起talk C栗子吧(第七十八回:C语言实例--创建进程)

    各位看官们,大家好.上一回中咱们说的是DIY ls命令续的样例.这一回咱们说的样例是:创建进程.闲话休提.言归正转. 让我们一起talk C栗子吧! 看官们.关于进程的概念,我们简单做个简单的介绍:进 ...

  2. 一起talk C栗子吧(第一百三十一回:C语言实例--C程序内存布局三)

    各位看官们,大家好.上一回中咱们说的是C程序内存布局的样例,这一回咱们继续说该样例.闲话休提,言归正转.让我们一起talk C栗子吧. 看官们,关于C程序内存布局的样例,我们在前面的两个章回都介绍过了 ...

  3. 一起talk C栗子吧(第一百二十三回:C语言实例--显示变量和函数的地址)

    各位看官们,大家好,上一回中咱们说的是多线程的样例.这一回咱们说的样例是:显示变量和函数的地址. 闲话休提,言归正转.让我们一起talk C栗子吧! 在编敲代码时,有时候须要获取程序中变量和函数的地址 ...

  4. 一起talk C栗子吧(第一百二十一回:C语言实例--线程知识体系图)

    各位看官们.大家好,上一回中咱们说的线程属性的样例.这一回咱们说的样例是:线程知识体系图.闲话休提.言归正转. 让我们一起talk C栗子吧! 我们在前面的章回中介绍了与线程相关的知识,在今天的章回中 ...

  5. 应用AXIS开始Web服务之旅(soap web services)——使用三种不同的语言访问创建的Web服务,分别是JAVA、VB、VC

    一. 介绍 本文并不是想介绍Web服务的原理.系统架构等,我们假设您已经了解了关于Web服务的一些基本的概念.原理等知识.本文主要是针对那些已经了解Web服务概念,但是还没有亲身体会Web服务所带来令 ...

  6. 一起talk C栗子吧(第八十三回:C语言实例--进程间通信概述)

    各位看官们,大家好,前二回中咱们说的是进程停止的样例,这一回咱们说的样例是:进程间通信.闲话休提,言归正转.让我们一起talk C栗子吧! 看官们.每一个进程都拥有自己的资源,假设不同进程之间须要共享 ...

  7. 一起talk C栗子吧(第十二回:C语言实例--单链表一)

    各位看官们,大家好.从今天開始,我们讲大型章回体科技小说 :C栗子.也就是C语言实例.闲话休提, 言归正转. 让我们一起talk C栗子吧! 看官们,上一回中咱们没有说详细的样例,并且是说了样例中的文 ...

  8. 一起talk C栗子吧(第一百二十七回:C语言实例--查看main函数的參数)

    各位看官们,大家好,上一回中咱们说的是static关键字的样例,这一回咱们说的样例是:查看main函数的參数.闲话休提,言归正转.让我们一起talk C栗子吧! 看官们.我们在第五十七回中介绍过mai ...

  9. 第一百三十九节,JavaScript,封装库--CSS选择器

    JavaScript,封装库--修改元素选择器 就是将构造库函数修改成元素选择器,像css那样,输入#xxx .xxx xxx  (获取指定id下的指定class下的指定标签元素) 修改后的基础库 / ...

随机推荐

  1. 根据twitter的snowflake算法生成唯一ID

    C#版本 /// <summary> /// 根据twitter的snowflake算法生成唯一ID /// snowflake算法 64 位 /// 0---0000000000 000 ...

  2. AIX 与Linux 中crontab 介绍

    AIX 与Linux 中crontab 用法相似,先介绍Linux 中的Crontab 用法,再后介绍AIX 与Linux 的不同之处.   一.Crontab 介绍 crontab命令的功能是在一定 ...

  3. AngularJS中Directive间交互实现合成

    假设需要烹饪一道菜肴,有3种原料,可以同时使用所有的3种原料,可以使用其中2种,也可以使用其中1种. 如果以Directive的写法,大致是:<bread material1 material2 ...

  4. AutoMapper在MVC中的运用06-一次性定义映射、复杂类型属性映射

    本篇AutoMapper使用场景: ※ 当源和目标具有同名的复杂类型属性.集合类型属性,这2种属性对应的类间也需建立映射 ※ 一次性定义好源和目标的所有映射 ※ 一次性定义好源和目标的所有映射,目标中 ...

  5. Time Zones And Daylight Savings Time

    This page describes code for working with Time Zones and Daylight Savings Time. Neither VBA nor VB6 ...

  6. ZServer4D开源项目

    ZServer4D开源项目 ZServer4D 是一套从商业项目剥离而出的云服务器中间件,可以承载百万级的分布式负载服务,并且支持IoT及内网穿透. 作者将它开源了 https://github.co ...

  7. 关于电商ERP的想法

    原文地址: http://www.chinaodoo.net/thread-465-1-1.html 试用了下odoo的淘宝订单处理模块,从整个业务流程上已经打通,如果要求不是很高的话,现有的功能基本 ...

  8. ios 向sqlite数据库插入和读取图片数据

    向sqlite数据库插入和读取图片数据 (for ios) 假定数据库中存在表 test_table(name,image), 下面代码将图片文件test.png的二进制数据写到sqlite数据库: ...

  9. android开发:全屏和退出全屏

    android开发:全屏和退出全屏 from://http://blog.csdn.net/dyllove98/article/details/8831933 2013-04-21 20:31 413 ...

  10. Javascript:自己写异步流程编程框架

    背景 自从NodeJs出来以后,异步编程便更加系统化和框架话了,为了应对异步编程框架带来的深层嵌套问题,社区也出现了异步流程编程框架,本文主要对异步流程框架做一个简单的解析. 现配代码了 var As ...