免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3664 | 回复: 5
打印 上一主题 下一主题

关于父进程和子进程共享页表页目录 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-10-26 13:49 |只看该作者 |倒序浏览
子进程fork出来的时候是共享了父进程的页表和页目录吧,那么这个时候子进程不就看到的是父进程的代码块和数据块?怎么理解这个呢?

论坛徽章:
0
2 [报告]
发表于 2008-10-26 14:41 |只看该作者

回复 #1 dogygb 的帖子

在没使用CLONE_VM的时候,页目录表和页表都被重新复制了一份,只是子进程和父进程共享相同的物理地址空间。然后通过写时复制技术来处理后续的写操作。如果使用了clone_vm标志进行fork,那么只是将父进程的内存描述符得引用计数加1。这时页目录表和页表才是被共享的。

论坛徽章:
0
3 [报告]
发表于 2008-10-26 18:00 |只看该作者
如果页目录表和页表都被重新复制了一份的话,那么子进程的页表页目录同父进程也是一样的啊,用这个页表页目录访问内存的话,实际上也是访问到同一个物理地址上,那读取的东西也是父进程的,万一不是子进程需要的,而子进程又不知道呢?

论坛徽章:
0
4 [报告]
发表于 2008-10-26 20:32 |只看该作者

回复 #3 dogygb 的帖子

子进程复制了父进程的代码段,所以子进程和父进程对数据的理解就是相同的了。

论坛徽章:
0
5 [报告]
发表于 2008-10-26 20:49 |只看该作者
原帖由 dogygb 于 2008-10-26 18:00 发表
如果页目录表和页表都被重新复制了一份的话,那么子进程的页表页目录同父进程也是一样的啊,用这个页表页目录访问内存的话,实际上也是访问到同一个物理地址上,那读取的东西也是父进程的,万一不是子进程需要的 ...


我的理解是,还有copy-on-write

论坛徽章:
0
6 [报告]
发表于 2008-10-27 16:32 |只看该作者
原帖由 dogygb 于 2008-10-26 18:00 发表
如果页目录表和页表都被重新复制了一份的话,那么子进程的页表页目录同父进程也是一样的啊,用这个页表页目录访问内存的话,实际上也是访问到同一个物理地址上,那读取的东西也是父进程的,万一不是子进程需要的 ...

所以子进程一般在fork会紧接着exec。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP