[理工] OS fork

作者: w181496 (Kaibro)   2016-10-22 00:18:12
http://i.imgur.com/w2BzFNg.jpg
想請教各位1.1這題
網路上找到某份似乎是答案的答案給C
我的疑問是
Linux不是預設有copy on write嗎
這樣剛fork出來時不是會共用相同space嗎?
動到的時候才會複製一份吧?
感謝
作者: aa06697 (todo se andarà)   2016-10-22 17:42:00
對呀 每個process都有自己的page table, 子process還會先標記哪些是modified frame 當要修改時 mmu就會去修改他的page table內容 指向私有的physical address
作者: ken52011219 (呱)   2016-10-22 13:32:00
恐龍本P.719 有寫出它的使用時機 可以參考一下另外我一開始的留言並沒有考慮多個CALLERS時的狀況抱歉 @@~
作者: aa06697 (todo se andarà)   2016-10-22 13:27:00
「現代」多數os的fork會copy on write(需要mmu幫忙) 就如你所說 是先共用 在寫入時才會配記憶體 但題目沒特別說是linux... 而且也可能是很久的題目了?
作者: ken52011219 (呱)   2016-10-22 13:21:00
假如使用Copy on write 就會像你一開始所說的如此但使用Copy on write 的前提是 此Virtual memory region that is mapped privately
作者: w181496 (Kaibro)   2016-10-22 12:59:00
原文那段指的是沒copy on write的fork吧 如果有COW那也一樣是複製一份嗎@@?
作者: A4P8T6X9 (殘廢的名偵探)   2016-10-22 12:02:00
ok, 剛看一下應該是我錯了,vfork 才會共用
作者: ken52011219 (呱)   2016-10-22 11:15:00
應該是沒錯啦 @@ 原文「 A new process is createdby the fork() System Call. The new process consist of a copy of the address space of the originalprocess.」 P.115有寫道
作者: A4P8T6X9 (殘廢的名偵探)   2016-10-22 08:36:00
覺得答案錯XDD
作者: ken52011219 (呱)   2016-10-22 00:23:00
Fork 時就會複製了若有變更 Address space才開始複製 代表需要用到kernel mode 的instruction 這樣mode切換頻率太高CPU utilization 會下降 不會這樣設計

Links booklink

Contact Us: admin [ a t ] ucptt.com