fork создаёт дочерний процесс с отдельным адресным пространством, логически копирующим родителя. Linux использует copy-on-write: физические страницы сначала разделяются, а копирование происходит при записи.
Что происходит на уровне ядра Linux при вызове fork() процессами [компания/сервис] и как работает механизм Copy-on-Write?
fork создаёт дочерний процесс с отдельным адресным пространством, логически копирующим родителя. Linux использует copy-on-write: физические страницы сначала разделяются, а копирование происходит при записи.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
fork создаёт дочерний процесс с отдельным адресным пространством, логически копирующим родителя. Linux использует copy-on-write: физические страницы сначала разделяются, а копирование происходит при записи.
Ядро создаёт структуры процесса и отображения памяти; попытка записи в разделяемую COW-страницу вызывает fault и выделение собственной копии. Дескрипторы наследуются и могут ссылаться на общее open file description. В многопоточном процессе ребёнок получает только вызвавший поток, поэтому состояние locks и допустимые действия до exec требуют особой осторожности.
Источник: man7.org.