免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: 自由星辰
打印 上一主题 下一主题

一个关于fork创建子进程的问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2005-03-27 13:04 |只看该作者

一个关于fork创建子进程的问题

[quote]原帖由 "THEBEST"]钦庋?穆?是进程内部数据空间的偏移地址?不是所有的虚拟地址再进行分配的吗?[/quote 发表:



我原来也以为是所有的虚拟地址再进行分配,
后来翻了翻操作系统的存储管理部分,里面是这么写的“一种方法是编译链接程序把用户源程序编译后连接倒一个以0地址为始地址的线性或多维虚地址空间”“而且,每一个进程都拥有这样一个空间”
看来linux的内存管理用的就是这样的方式。

论坛徽章:
0
12 [报告]
发表于 2005-03-27 19:07 |只看该作者

一个关于fork创建子进程的问题

虚拟地址在连接时就确定了,在加载时再利用操作系统的虚拟内存管理机制映射时实际的物理地址。

论坛徽章:
0
13 [报告]
发表于 2005-03-27 21:36 |只看该作者

一个关于fork创建子进程的问题

[quote="自由星辰"];


运行结果如下:
child:i=1,&i=-1073751104
parent:i=0,&i=-1073751104

quote]
我不明白的是为什么一个printf会输出两个结果?
请高手指教!

论坛徽章:
2
亥猪
日期:2014-03-19 16:36:35午马
日期:2014-11-23 23:48:46
14 [报告]
发表于 2005-03-27 21:53 |只看该作者

一个关于fork创建子进程的问题

不是一个,是两个。
从fork那里开始就是两个进城了。

论坛徽章:
0
15 [报告]
发表于 2005-03-27 22:00 |只看该作者

一个关于fork创建子进程的问题

[quote]原帖由 "自由星辰"]那通过系统调用能得到吗?[/quote 发表:


不能. 除非是Kernel模块. 这表对Application也没有任何意义.

论坛徽章:
0
16 [报告]
发表于 2005-03-27 22:09 |只看该作者

一个关于fork创建子进程的问题

原帖由 "自由星辰" 发表:



我原来也以为是所有的虚拟地址再进行分配,
后来翻了翻操作系统的存储管理部分,里面是这么写的“一种方法是编译链接程序把用户源程序编译后连接倒一个以0地址为始地址的线性或多维虚地址空间”“而且,每一个..........


不错, 我知道的OS: LINUX/AIX/SOLARIS/HPUX/WIN32/WIN64都是这样. 当然, 对每个进程, 这个线性地址空间别0 - 2^32 或是 0 - 2^64, 有些地址是保留的, APPLICATION 是不能用的.

论坛徽章:
0
17 [报告]
发表于 2005-03-27 22:28 |只看该作者

一个关于fork创建子进程的问题

[quote]原帖由 "kj501"]虚拟地址在连接时就确定了,在加载时再利用操作系统的虚拟内存管理机制映射时实际的物理地址。[/quote 发表:


kj501 说得好. 而且虚拟地址映射时实际的物理地址不是MALLOC()就发生, 大部分OS用PAGE-ON-DEMAND, 当程序读写特定虚拟地址的时候, KERNEL发现没有映射时的物理地址, 会产生PAGE-FAULT, 虚拟内存管理于是生成PAGE TABLE ENTRY, 并分配物理内存. 由于这个原因, 一个进程的虚拟地址SIZE总是比它的物理内存RSS(WORKING SET)大.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP