摘要:
copy-on-write进程创建后,子进程复制父进程的页表映射,而不是具体的物理页。那么子进程和父进程就共享了物理页中的数据。如果此时其中一个进程要做数据修改操作,则必定会影响到另一个进程。为解决这个问题,在复制页表时,将页表中可写的页表项(有PTE_W标志)设置成只读的,并置上PTE_COW标志,表示这个页表项指定的页是copy-on-write的页。如果其中一个进程向cow页写入数据,此时肯定会发生pagefault异常。在pagefault handler里检查这个页面是进程共享的COW页,则分配一个新的页面给该进程,并修改页表项的标志位。内核栈注意一个细节. 这其实是LAB3里的内容 阅读全文