Uma das coisas que o kernel faz durante uma alternância de contexto entre processos é modificar as tabelas MMU para remover entradas que descrevem o espaço de endereço do processo anterior e adicionar entradas que descrevem o espaço de endereço do próximo processo. Dependendo da arquitetura do processador, do kernel e possivelmente da configuração, isso pode ser feito alterando um registro do processador ou manipulando as tabelas de páginas na memória.
Imediatamente após a operação fork, devido a copy-on-write, as tabelas MMU para ambos os processos têm o mesmo endereço físico para o endereço virtual 0x1234. Mais uma vez, essas são duas tabelas separadas, que possuem entradas idênticas para esse endereço virtual específico.
O descritor para esta página tem o atributo somente leitura. Se um processo tentar gravar (não importa se é A ou B), isso acionará uma falha do processador devido à violação da permissão. O manipulador de falhas de página do kernel é executado, analisa a situação e decide alocar uma nova página física, copia o conteúdo da página somente leitura para essa nova página, altera a configuração de MMU do processo de chamada para que 0x1234 agora aponte para essa física recém-alocada página com atributos de leitura / gravação e reinicia o processo de chamada na instrução que causou a falha. Desta vez, a página é gravável para que a instrução não seja capturada.
Observe que o descritor de página no outro processo não é afetado por essa operação. De fato, pode ser, porque o kernel executa mais uma ação: se a página agora está apenas mapeada em um único processo, ela volta para read-write, para evitar ter que copiá-la depois.
Veja também O que acontece após uma falha de página?