楼主:
w181496 (Kaibro)
2016-10-22 00:18:12http://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
恐龙本P.719 有写出它的使用时机 可以参考一下另外我一开始的留言并没有考虑多个CALLERS时的状况抱歉 @@~
作者: aa06697 (todo se andarà) 2016-10-22 13:27:00
“现代”多数os的fork会copy on write(需要mmu帮忙) 就如你所说 是先共用 在写入时才会配内存 但题目没特别说是linux... 而且也可能是很久的题目了?
假如使用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:00ok, 刚看一下应该是我错了,vfork 才会共用
应该是没错啦 @@ 原文“ 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
Fork 时就会复制了若有变更 Address space才开始复制 代表需要用到kernel mode 的instruction 这样mode切换频率太高CPU utilization 会下降 不会这样设计