[理工] 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