Что происходит с виртуальными адресами после вызова fork()?

Рейтинг: 1Ответов: 0Опубликовано: 26.01.2023

После вызова fork мы "копируем" все данные у процесса, в котором мы вызывали fork(используя механизм COW), так же при смене контекста мы заменяем регистр CR3(x86_64) и загружаем новые таблицы страниц. Если рассмотреть какую-то переменную из процесса родителя, то в дочернем процессе мы получим другое значение виртуального адресса этой переменной, но она будет "ссылаться" на одну и ту же область в физической памяти и это значение (в физической памяти) поменяется только и только если мы захотим изменить значение этой переменной, в дочернем процессе.

1) Правильно ли я понял описанное выше? 2) Для чего нужен регистр CR3?

Ответы

Ответов пока нет.