Допустим, ваш процесс получил имя переменной X с виртуальным адресом 100 и физическим адресом 200. PTE поддерживает отображение адресов от виртуального 100 к физическому 200.
после разветвления, каждый процесс(родитель и ребенок) будет иметь свой личный PTE.в этот момент оба PTE будут отображать виртуальные 100 на физические 200.
, пока оба процесса только читают оттуда, они будут читать с физического адреса 200.
, когда первый попытаетсязапишите туда, данные с физического адреса будут скопированы в новое физическое пространство, скажем, 300, и его (и только его) PTE будет обновлен, так что виртуальный 100 будет сопоставлен с физическим 300. таким образом, он прозрачен для процесса, потому чтоон все еще использует тот же (виртуальный) адрес.
* Примечание: это просто резюме, и реальная вещь происходит в разрешении страницы.