При fork()
в Linux создается новый процесс (потомок), который является почти точной копией родительского процесса. С памятью происходит следующее:
- Копирование (пока нет): Изначально, вместо полного копирования всего адресного пространства родителя, используется механизм "копирования при записи" (copy-on-write, CoW).
- CoW: Страницы памяти родительского процесса помечаются как доступные только для чтения как для родителя, так и для потомка. Оба процесса совместно используют одни и те же физические страницы.
- Изменение: Только при попытке одного из процессов (родителя или потомка) записать данные на такую общую страницу, ядро Linux выделяет новую физическую страницу, копирует туда содержимое оригинальной страницы и перенаправляет виртуальный адрес этого процесса на новую физическую страницу. Страница родителя остается неизменн