Update lab5_2_1_exercises.md

This commit is contained in:
chyyuu 2018-04-20 16:18:36 +08:00 committed by GitHub
parent 23ef7645d6
commit c62824df01
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 9 additions and 2 deletions

View File

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