C_and_CPP 板


LINE

https://i.imgur.com/MjKHbOu.png https://i.imgur.com/iUkvs5x.png 我照着图中程式在Ubuntu 18.04.3执行,有几个疑问想请教 为什麽child跟parent 的variable’s address一致呢?我以为copy on write会使得它们不 一样 承上题,一样的address不会造成它们aliasing吗? 谢谢看完! --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.249.5.32 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1579751448.A.BB6.html ※ 编辑: b10007034 (111.249.5.32 台湾), 01/23/2020 11:54:28
1F:→ harryooooooo: 不同process各自看到的记忆体状态是各自独立的,这 01/23 13:01
2F:→ harryooooooo: 叫virtual memory 01/23 13:01
3F:→ b10007034: 那请问H大,C code看到的pointer都是看到 01/23 13:13
4F:→ b10007034: virtual address吗? 01/23 13:14
5F:→ b10007034: OS处理掉COW的底层运作,我连addr都没办法看到不一致 01/23 13:15
6F:→ b10007034: 对吗? 虽然实际上透过MMU分配的physical addr不一样 01/23 13:17
7F:→ harryooooooo: 我觉得OS也没理由让你观察到address不一致吧,一是 01/23 13:54
8F:→ harryooooooo: 你看到的addr本来就是假的,二是对OS而言fork的时候 01/23 13:54
9F:→ harryooooooo: page table entry之类的东西当然是能不用改就不要改 01/23 13:54
10F:→ harryooooooo: 比较方便。不过addr突然被改的话process大概也没办 01/23 13:54
11F:→ harryooooooo: 法跑了就是。 01/23 13:54
12F:→ harryooooooo: 看到的是不是virtual address跟程式语言无关 是跟你 01/23 13:57
13F:→ harryooooooo: 的OS和硬体有关 首先硬体要支援 然後OS也要开 01/23 13:57
14F:→ b10007034: 大概了解了,谢谢h大 01/23 15:22
15F:→ school4303: 看起来是考研的题目XD 01/23 20:50
16F:→ school4303: 我记得这种题目不会完全是C code 很多时候只是方便出 01/23 20:52
17F:→ school4303: 题才写成这样 真的跑code跟答案会不一样 01/23 20:52
18F:→ b10007034: 嗯,谢谢你的意见 01/23 21:03
19F:→ b10007034: 我看题目的程式码完整到可以直接编译执行就手痒弄了一 01/23 21:03
20F:→ b10007034: 下 01/23 21:03
21F:推 mmmmei: 你的parent先sleep(5) 怎麽是parent先print? 01/24 04:10
22F:→ b10007034: 後面还有一点趣事,因为我的环境是virtualbox上的Ubunt 01/24 07:59
23F:→ b10007034: 所以我找了一台mac来用,结果发现答案一样 01/24 08:00
24F:→ b10007034: https://imgur.com/aJ2HKUc 01/24 08:00
25F:→ b10007034: To m大我也不知道为甚麽耶...只关注地址而已 囧 01/24 08:02
26F:→ b10007034: 以为使用VM会有差别,看起来是没有?暂时想不通 01/24 08:03
27F:推 cphe: 你这个ptr只是个变数内容,印出来当然一样啊 01/24 08:15
28F:→ b10007034: 谢C大回覆,可以请问一下有哪些情况地址会不一样吗? 01/24 08:21
29F:推 Schottky: 地址不一样是什麽意思?代表 parent 原本建好的 tree 01/26 07:40
30F:→ Schottky: 遗传给 child 时整组坏光光吗? 01/26 07:40
31F:推 dces4212: 他俩 address space 不同,所以不会有共用之类问题 01/26 16:01
32F:推 asd15723: 那个print不是印出值而已吗 不是sharedval的address吧 01/27 12:36
33F:→ asd15723: (? 01/27 12:36
34F:→ asd15723: 地址会不一样 01/27 12:37
35F:→ asd15723: 应该是指 01/27 12:37
36F:→ asd15723: print("%p",&ptrsharedval)? 01/27 12:37
37F:推 dces4212: 还有就是fork是复制原本process的context, 所以位置会 01/27 12:50
38F:→ dces4212: 一样 01/27 12:50
39F:推 dces4212: asd, 楼主只是想问那个 char 的位置吧 所以就直接用pt 01/27 12:55
40F:→ dces4212: r内容看了。另外ptr的位置应该也是一样的 01/27 12:55
41F:→ cphe: ptr内容是copy的一定会一样,至於address,就跟最上面说的 01/27 18:31
42F:→ cphe: 推文最上面说的是virtual address,copy on write只是决定要 01/27 18:31
43F:→ cphe: 不要真的建一个page table真的mapping到physical address 01/27 18:32







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Soft_Job站内搜寻

TOP