6.S081 lab6 cow
Copy-on-Write Fork for xv6
这次 lab 只有一关,那就是为xv6
实现copy on write
。
xv6
中的fork()
系统调用将父进程的用户内存全部复制到子进程中。如果父进程内存占用很大,复制可能需要很长的时间。更糟糕的是,通常来说,这个复制在很大程度上是浪费的;例如,在子进程中,fork()
之后的exec()
调用会导致子进程丢弃复制的内存,可能大部分内存都没有来得及使用。另一方面,如果父子双方都使用一个page
,并且其中一方或双方需要写这个page
,那么确实需要复制。