From c62824df015d420a8e8311172c092b2a2b54ec58 Mon Sep 17 00:00:00 2001 From: chyyuu Date: Fri, 20 Apr 2018 16:18:36 +0800 Subject: [PATCH] Update lab5_2_1_exercises.md --- lab5/lab5_2_1_exercises.md | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/lab5/lab5_2_1_exercises.md b/lab5/lab5_2_1_exercises.md index b2bfeac..06b6917 100644 --- a/lab5/lab5_2_1_exercises.md +++ b/lab5/lab5_2_1_exercises.md @@ -36,8 +36,15 @@ 执行:make grade。如果所显示的应用程序检测都输出ok,则基本正确。(使用的是qemu-1.0.1) -#### 扩展练习 Challenge :实现 Copy on Write 机制 +#### 扩展练习 Challenge :实现 Copy on Write (COW)机制 -给出实现源码和设计报告。 +给出实现源码,测试用例和设计报告(包括在cow情况下的各种状态转换(类似有限状态自动机)的说明)。 这个扩展练习涉及到本实验和上一个实验“虚拟内存管理”。在ucore操作系统中,当一个用户父进程创建自己的子进程时,父进程会把其申请的用户空间设置为只读,子进程可共享父进程占用的用户内存空间中的页面(这就是一个共享的资源)。当其中任何一个进程修改此用户内存空间中的某页面时,ucore会通过page fault异常获知该操作,并完成拷贝内存页面,使得两个进程都有各自的内存页面。这样一个进程所做的修改不会被另外一个进程可见了。请在ucore中实现这样的COW机制。 + +由于COW实现比较复杂,容易引入bug,请参考 https://dirtycow.ninja/  看看能否在ucore的COW实现中模拟这个错误和解决方案。需要有解释。 + +这是一个big challenge. + + +