Согласно википедии (что может быть неправильно)
Когда выполняется системный вызов fork(), создается копия всех страниц, соответствующих родительскому процессу, загружаемая ОС в отдельную область памяти для дочернего процесса. Но в некоторых случаях это не требуется. Рассмотрим случай, когда дочерний процесс выполняет системный вызов exec (который используется для выполнения любого исполняемого файла из программы на C) или завершает работу вскоре после fork(). Когда дочерний процесс необходим только для выполнения команды родительского процесса, нет необходимости копировать страницы родительского процесса, поскольку exec заменяет адресное пространство вызвавшего его процесса командой, которую необходимо выполнить.
В таких случаях используется метод, называемый копированием при записи (COW). С помощью этого метода, когда происходит разветвление, страницы родительского процесса не копируются для дочернего процесса. Вместо этого страницы совместно используются дочерним и родительским процессом. Всякий раз, когда процесс (родительский или дочерний) изменяет страницу, для этого процесса (родительского или дочернего), который выполнил модификацию, создается отдельная копия только этой конкретной страницы. Затем этот процесс будет использовать только что скопированную страницу, а не общедоступную во всех будущих ссылках. Другой процесс (тот, который не изменил общую страницу) продолжает использовать исходную копию страницы (которая теперь не является общей). Этот метод называется копированием при записи, поскольку страница копируется, когда какой-либо процесс записывает на нее.
Кажется, что когда любой из процессов пытается записать на страницу. Новая копия страницы выделяется и назначается процессу, вызвавшему ошибку страницы. После этого исходная страница помечается как доступная для записи.
Мой вопрос: что произойдет, если вилка будет вызвана несколько раз, прежде чем какой-либо процесс предпримет попытку записи на общую страницу?