fork与vfork区别
2024-09-27 22:16:09
1. 地址空间各段拷贝:
fork: 内核为子进程生成新的地址空间结构,拷贝父进程的代码段,数据空间,堆,栈到自身的地址空间,但注意:子进程的代码段并不会分配物理空间,而是指向父进程的代码段物理空间,保持共享;子进程的数据空间,堆,栈都会对应分配物理空间;
写时复制(COW):内核为子进程生成新的地址空间结构,拷贝父进程代码段,数据空间,堆,栈道自身的地址空间,但是相应段都指向了父进程的对应段的物理空间,并且权限是只读的,如果父子进程任一个视图修改这些区域,则内核为修改区域的内存做一个副本;
vfork: 内核不为子进程生成新的地址空间结构,直接共享父进程的虚拟地址空间,当然其对应的物理空间也是共享的;
2. 执行顺序:
fork:父、子进程的执行顺序不确定;
vfork:保证子进程先运行,在子进程调用了exec或者exit之后父进程才可能被调用运行,如果在调用这两个函数之前,子进程依赖父进程的进一步动作,将会导致死锁;
另:关于fork,vfork,写时拷贝请查看下面文章:
http://www.cnblogs.com/wanpengcoder/articles/5310331.html
最新文章
- 【荐】PHP Session和Cookie,Session阻塞,Session垃圾回收,Redis共享Session,不推荐Memcached保存Session
- [技术学习]js正则表达式汇总
- java中的抽象类和接口
- Oracle数据库入门——物化视图日志结构
- ClassLoader
- 第46套题【STL】【贪心】【递推】【BFS 图】
- c语言中register类型的变量
- android116 轮播 viewPager实现
- 大用处--PowerShell Management Library for Hyper-V.
- QT动画介绍(有例子可以下载)
- PE格式第九讲,资源表解析
- window 安装redis、memcache的php扩展和 reidis 、memcache 及 reids管理软件
- L343 中译英
- 谷歌浏览器内核Cef js代码整理(一)
- xamarin.Android ImageView 图片圆角(自定义属性、扩展控件)
- 【Mysql】—— 索引的分类
- python loggin
- ZT 二叉树先序,中序,后序遍历非递归实现
- Hibernate 不同数据库的连接及SQL方言
- Linux命令之ip命令
热门文章
- [C/C++] char data[0](柔性数组)
- 如何实时获取DBGrid 中当前单元格输入的内容?
- Delphi 的绘图功能[8] - TextOut、TextWidth、TextHeight
- 深入学习 Redis系列
- 在ios 上 按钮 disabled 样式显示异常
- Qt——树结点的搜索
- Jquery常用正则验证
- [Vue源码分析] v-model实现原理
- bzoj4300: 绝世好题(DP)
- mybatis <;where>;、<;set>;、<;trim>;、<;sql>;、<;foreach>;标签的使用