S081-2021-lab5中的Copy-on-Write Fork机制是如何实现的?

2026-05-22 05:480阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1332个文字,预计阅读时间需要6分钟。

S081-2021-lab5中的Copy-on-Write Fork机制是如何实现的?

Copy-on-Write + Fork + 主要依据 hins 逐步修改。COW 的思想是在 fork 时刻,子进程与父进程共享物理页面。当需要修改页面内容时,才真正分配自己的页面空间。这也是一种 +lazy allocation +co懒加载+延迟分配。

S081-2021-lab5中的Copy-on-Write Fork机制是如何实现的?

Copy-on-Write Fork

主要根据hins来一步一步修改。cow的思想是在fork的时候,子进程与父进程共享物理页,当需要修改页面内容的时候才会真正分配自己的页表空间,也就是 lazy allocation

cow使得多个va映射到了同一个pa上,所以 free 的时候我们要特别小心,因为可能别的进程还依赖这个物理页,所以我们需要对每一个 pa 对应的物理页进行引用计数。

如何计数呢?虽然硬件为操作系统保留了三个比特位让其自由发挥,但很明显这点位置是不够应用计数的,只适合用其中一位来表示当前页是否是 cow 页。

但我们知道 xv6 能够使用的最大物理地址,以及页表大小。

阅读全文

本文共计1332个文字,预计阅读时间需要6分钟。

S081-2021-lab5中的Copy-on-Write Fork机制是如何实现的?

Copy-on-Write + Fork + 主要依据 hins 逐步修改。COW 的思想是在 fork 时刻,子进程与父进程共享物理页面。当需要修改页面内容时,才真正分配自己的页面空间。这也是一种 +lazy allocation +co懒加载+延迟分配。

S081-2021-lab5中的Copy-on-Write Fork机制是如何实现的?

Copy-on-Write Fork

主要根据hins来一步一步修改。cow的思想是在fork的时候,子进程与父进程共享物理页,当需要修改页面内容的时候才会真正分配自己的页表空间,也就是 lazy allocation

cow使得多个va映射到了同一个pa上,所以 free 的时候我们要特别小心,因为可能别的进程还依赖这个物理页,所以我们需要对每一个 pa 对应的物理页进行引用计数。

如何计数呢?虽然硬件为操作系统保留了三个比特位让其自由发挥,但很明显这点位置是不够应用计数的,只适合用其中一位来表示当前页是否是 cow 页。

但我们知道 xv6 能够使用的最大物理地址,以及页表大小。

阅读全文