Linux笔记记录5 写时拷贝
来源:互联网 发布:知乎怎样回答问题 编辑:程序博客网 时间:2024/06/07 05:32
首先可以先看一下《LINUX内核设计与实现》中相关内容:
传统的fork()系统调用创建子进程会把所有的资源也复制给新的进程。这种实现效率低下,因为他拷贝的数据也许可以共享。
如果新进程打算立即执行一个新的映像那么所有的拷贝都将前功尽弃。
Linux的fork()使用写时拷贝页实现。
所谓的写时拷贝,是fork()时并不复制整个进程地址空间,而是先让父子进程共享同一拷贝,只有需要写入即才会复制一份,使各个进程拥有自己的一份拷贝,在此之前以只读方式共享。它使地址空间上页的拷贝推出到发生写入的时候。
此时fork()后接exec()就无需再拷贝多余的不会使用的数据。
fork()实际上的开销来自于复制父进程的页表以及给子进程创建唯一的进程描述符。
关于fork()相关的点好像之前的某篇博文写过了=。=不过不够完善吧 有空回去改改
写时拷贝技术内核只为新生成的进程创建虚拟空间结构,他们复制于父进程的虚拟空间结构,但不分配物理内存。
虚拟地址空间上有:正文段、数据段、堆、栈。当父子进程中有更改相应段的行为时,将为子进程分配相应段的物理空间
图片参考网上的资料
阅读全文
0 0
- Linux笔记记录5 写时拷贝
- linux 写时拷贝
- Linux写时拷贝技术
- linux写时拷贝技术
- Linux写时拷贝技术fork
- 深拷贝&浅拷贝&写时拷贝
- 写时拷贝技术
- fork写时拷贝
- 写时拷贝
- c++ 写时拷贝
- 写时拷贝
- C++ 写时拷贝
- 写时拷贝
- 写时拷贝
- C++ 写时拷贝
- 写时拷贝
- 写时拷贝
- C++写时拷贝
- http2相关协议详解(express中开启http2流程)
- 实验七:将menu设计为可重用的子系统
- Some Scripts
- MRPT地址
- Lua 协同程序(coroutine)
- Linux笔记记录5 写时拷贝
- 停课总结(十)
- 机器学习----正负样本不匹配
- 【NOIP2017提高A组冲刺11.4】Pacifist
- Python之检测文件的字符编码(chardet)
- 最长公共子序列
- APICloud中app如何在手机端测试
- Java设计模型(3)——建造者模型
- Android 虚拟机判断蓝牙是否开启