Como o copy-on-write no fork () manipula o fork múltiplo?

Segundo a wikipedia (o que pode estar errado)

Quando uma chamada de sistema fork () é emitida, uma cópia de todas as páginas correspondentes ao processo pai é criada, carregada em um local de memória separado pelo sistema operacional para o processo filho. Mas isso não é necessário em certos casos. Considere o caso quando um filho executa uma chamada de sistema "exec" (que é usada para executar qualquer arquivo executável de dentro de um programa C) ou sai logo após o fork (). Quando o filho é necessário apenas para executar um comando para o processo pai, não há necessidade de copiar as páginas do processo pai, pois o exec substitui o espaço de endereço do processo que o invocou com o comando a ser executado.

Nesses casos, uma técnica chamada copy-on-write (COW) é usada. Com essa técnica, quando ocorre um fork, as páginas do processo pai não são copiadas para o processo filho. Em vez disso, as páginas são compartilhadas entre o filho e o processo pai. Sempre que um processo (pai ou filho) modifica uma página, uma cópia separada dessa página em particular é feita para esse processo (pai ou filho) que executou a modificação. Esse processo usará a página recém-copiada em vez da compartilhada em todas as referências futuras. O outro processo (aquele que não modificou a página compartilhada) continua a usar a cópia original da página (que agora não é mais compartilhada). Essa técnica é chamada de copy-on-write, pois a página é copiada quando algum processo grava nela.

Parece que quando um dos processos tenta gravar na página. Uma nova cópia da página é alocada e atribuída ao processo que gerou a falha da página. A página original é marcada como gravável posteriormente.

Minha pergunta é: o que acontece se o fork for chamado várias vezes antes de qualquer um dos processos tentar escrever em uma página compartilhada?

questionAnswers(2)

yourAnswerToTheQuestion