OS 99中央资工

楼主: paralyzation (passby)   2018-11-12 20:42:20
https://i.imgur.com/XaXBHJf.jpg
想请问一下为什么这题的变量value,在child process和parent process不是共享的
https://i.imgur.com/VOAD4uq.jpg
但是笔记上这题,他确是共享的,两题不都是宣告在global吗
作者: Aa841018 (andrew)   2018-11-12 20:59:00
父借由fork产生子,pid=0时,子进入,pid>0时,父进入!
作者: Dora5566 (咩休干某)   2018-11-12 21:06:00
显然A=25,B=28
作者: skyHuan (Huan)   2018-11-12 21:43:00
笔记这题洪逸上课有说是共享,可以实作这里不讨论作法
作者: Aa841018 (andrew)   2018-11-12 22:28:00
不晓得会不会和wait(null)有关系…
作者: skyHuan (Huan)   2018-11-12 22:55:00
wait是父等子完成才会继续跟local变量会复制没关系
作者: kcilao110779 (kcilao)   2018-11-12 23:19:00
洪逸上课说共享的意思不是指宣告在全域,而是用shared mem或是File等等其他方式去实作
作者: EXPCDR (EXPCDR)   2018-11-13 00:37:00
答案是对的吧!
作者: Dora5566 (咩休干某)   2018-11-13 07:29:00
显然我错了,全域变量确实不共享
作者: skyHuan (Huan)   2018-11-13 13:14:00
应该不是说全域变量不共享,全域变量是属于一个process的,fork出另外一个process两个是独立的,不同的process本来就不会共享属于自己的全域变量
作者: Dora5566 (咩休干某)   2018-11-13 13:33:00
是的 问一下,像malloc pointer array之类的heap,会共享吗就是fork()后我是觉得不会,超过process size ,但是又记得有些机制可以回parent去存取heap…啊…应该不共享 看到前几篇的print buffer了
作者: o5739201 (车贷学贷付二贷)   2018-11-13 19:26:00
只有thread会共享?

Links booklink

Contact Us: admin [ a t ] ucptt.com