Source: /cirosantilli/x86-paging/copy-on-write

= Copy-on-write
{title2=COW}

https://en.wikipedia.org/wiki/Copy-on-write

Besides a missing page, a very common source of page faults is copy-on-write (COW).

Page tables have extra flags that allow the OS to mark a page a read-only.

Those page faults only happen when a process tries to write to the page, and not read from it.

When Linux forks a process:
* instead of copying all the pages, which is unnecessarily costly, it makes the page tables of the two process point to the same physical address.
* it marks those linear addresses as read-only
* whenever one of the processes tries to write to a page, the makes a copy of the physical memory, and updates the pages of the two process to point to the two different physical addresses