Fork uses copy-on-write to speed forking. It creates a new
environment, duplicates the page tables of the parent, and marks every
non-shared entry in both environments as copy-on-write and
read-only. Then, the page-fault handler in each process handles
allocating new pages and duplicating them when a write
occurs.
Fork must also run through all the ExOS subsystems and notify them
that a fork has occurred so that they can update their reference counts
and other data.