Копировать при записи: что происходит, когда я изменяю родительский процесс?

Я нахожу следующее описание копирования при записи.

If child process writes to memory, the parent retains the physical page and the child is given a new one with the correct value stored.

Если я использую fork() для получения дочернего процесса от родительского процесса. Что произойдет, если родительский процесс запишет в память? Сохраняет ли родительский процесс физическую страницу? Или дочерний процесс сохранит его?


person michael2048    schedule 04.12.2019    source источник


Ответы (1)


Происходит то же самое. Страница помечена как копируемая при записи, поэтому любая попытка записи на нее приводит к созданию частной копии для процесса, который пытался изменить ее.

person David Schwartz    schedule 04.12.2019
comment
Итак, родителю дается новый с сохраненным правильным значением. Это правильно? - person michael2048; 04.12.2019
comment
@ michael2048 Верно. Родитель и ребенок обрабатываются одинаково после форка. Каждый из них имеет ссылку на страницу, и страница помечается как копия при записи. - person David Schwartz; 04.12.2019