Operating System Concepts say
fork()we can use a technique known as copy-on-write, which works by allowing the parent and child processes initially to share the same pages. ... When it is determined that a page is going to be duplicated using copy- on-write, it is important to note the location from which the free page will be allocated. Many operating systems provide a pool of free pages for such requests. These free pages are typically allocated when the stack or heap for a process must expand or when there are copy-on-write pages to be managed. Operating systems typically allocate these pages using a technique known as zero-ﬁll-on-demand. Zero-ﬁll-on-demand pages have been zeroed-out before being allocated, thus erasing the previous contents.
Is copy-on-write not implemented based on page fault? (I guess no)
Do copy-on-write and page fault share the same pool of free pages? If not, why? (I guess no)
malloc() implemented based on page fault? (I guess yes, but not sure why it shares the same free page pool as copy-on-write, if that pool is not used by page fault)