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