Я искал много ресурсов, но не нашел ничего конкретного по этому вопросу:
Я знаю, что в некоторых linux системах системный вызов fork()
работает с копированием при записи; то есть родитель и потомок совместно используют одно и то же адресное пространство, но PTE теперь помечен только для чтения , который будет использоваться позже COW. при попытке доступа к странице происходит PAGE_FAULT
, и страница копируется в другое место, где ее можно изменить.
Однако я не могу понять, как ОС достигает общих PTE, чтобы пометить их как "читать". Я предположил, что когда происходит системный вызов fork()
, ОС преобразует «просмотр страницы» родительской таблицы страниц и помечает их как только для чтения - но я не нахожу подтверждения этому или какой-либо информации относительно процесса.
Кто-нибудь знает, как страницы помечаются как только для чтения? Буду признателен за любую помощь. Спасибо!