如果多个进程当父进程产生一个子进程时,会把父进程的代码段、数据段等拷贝给子进程,这里边有一个写时拷贝原则,这个动作并不是马上执行的,要等到子进程去修改内存里面的变量时候,才会进行拷贝,拷贝的机制并不是想象的那么简单,拷贝的时候只是拷贝子进程所需要的页,每个进程os都会进行分页管理,虚拟的内存空间2^32远远大于物理内存空间,然后把物理内存分成一页一页的形式,如果这个变量放在第一页,就只会进行第一页...
分类:
系统相关 时间:
2015-05-13 10:38:31
阅读次数:
157
写时复制技术最初产生于Unix系统,用于实现一种傻瓜式的进程创建:当发出fork()系统调用时,内核原样复制父进程的整个地址空间并把复制的那一份分配给子进程。这种行为是非常耗时的,因为它需要:·为子进程的页表分配页面·为子进程的页分配页面·初始化子进程的页表·把父进程的页复制到子进程相应的页中创建一...
分类:
系统相关 时间:
2015-05-11 21:35:40
阅读次数:
227
在php变量中已经发现 zval结构体中有refcount__gc(引用个数) 和is_ref__gc(是否被引用)例如:此时PHP会创建一个zval容器 因为这个变量不是一个引用 所以这个容器的is_ref__gc为false 并且refcount__gc为1再看下面的代码这里由于$b并不是引用$...
分类:
Web程序 时间:
2015-05-01 15:58:48
阅读次数:
192
JOS fork函数 实现机制分析
简直有点小鸡冻哇... 介个地方之前困惑了好一阵...现在叨叨关于fork那些事儿
文章会着重分析fork的两种实现策略:
1. 不使用COW 策略实现dumbfork (很暴力的拷贝)
2. 使用COW技术的fork(写时复制, parent process , chi...
分类:
其他好文 时间:
2015-04-30 10:44:55
阅读次数:
109
PHP使用引用计数和写时复制来管理内存。写时复制保证了变量间复制值不浪费内存,引用计数保证了当变量不再需要时,将内存释放给操作系统。 要理解PHP内存管理,首先要理解一个概念----符号表。 符号表的概念: 一个变量有两部分组成:变量名和变量值。而符号表就是将变量名映射到内存中变量值所在地...
分类:
Web程序 时间:
2015-04-28 11:29:09
阅读次数:
127
前段时间写过一篇关于concurrentHashMap的文章ConcurrentHashMap实现原理,其中讲到了实现ConcurrentHashMap的原理,这篇文章就讲一下CopyOnWrite的实现原理。Java中提供了两个CopyOnWrite容器,分别是CopyOnWriteArrayList和CopyOnWriteArraySet。如果想要高效的使用这两个容器,我觉的首先要弄懂CopyO...
分类:
其他好文 时间:
2015-04-17 11:39:06
阅读次数:
90
通常来说,javascript中的对象就是一个指向prototype的指针和一个自身的属性列表。javascript创建对象时采用了写时复制的理念。只有构造器才具有prototype属性,原型链继承就是创建一个新的指针,指向构造器的prototype属性。prototype属性之所以特别,是因为ja...
分类:
编程语言 时间:
2015-04-13 16:18:37
阅读次数:
178
1. lock (todo)2. 写时复制容器 CopyOnWrite容器即写时复制的容器。通俗的理解是当我们往一个容器添加元素的时候,不直接往当前容器添加,而是先将当前容器进行Copy,复制出一个新的容器,然后新的容器里添加元素,添加完元素之后,再将原容器的引用指向新的容器。CopyOnWrit....
分类:
编程语言 时间:
2015-03-28 21:43:06
阅读次数:
141
进程 VS. 程序什么是程序? 程序是完成特定任务的一系列指令集合。什么是进程? [1]从用户的角度来看:进程是程序的一次执行过程 [2]从操作系统的核心来看:进程是操作系统分配的内存、CPU时间片等资源的基本单位。 [3]进程是资源分配的最小单位 [4]每一个进程都有自己独立的地址空间与执行状态。 [5]像UNIX这样的多任务操作系统能够让许多程序同时运行,每一个运行着的程序就构...
分类:
系统相关 时间:
2015-02-18 10:42:08
阅读次数:
305
导读智能指针是行为类似于指针的类对象,所有的智能指针都会重载->和*操作符。智能指针还有许多其他功能,比较有用的是自动销毁。这主要是利用栈对象的有限作用域以及临时对象(有限作用域实现)析构函数释放内存。当然,智能指针还不止这些,还包括复制时可以修改源对象等。智能指针根据需求不同,设计也不同(写时复制...
分类:
编程语言 时间:
2015-01-11 00:57:19
阅读次数:
360