2013-05-08 10 views
1

При чтении информации о том, как ошибки страницы и обращения к страницам обрабатываются обработчиком исключения сбоя страницы, мне не было ясно. Если процесс использует общую страницу, и возникает ошибка страницы, когда обработчик исключения ошибок страницы обновляет запись таблицы страниц в таблице страниц для процесса, вызвавшего ошибку страницы, обновляет ли она записи таблицы страниц во всех другие процессы, которые используют эту же страницу? Из моего чтения по теме кажется, что он только обновляет запись в таблице страниц в таблице страниц для процесса сбоя, но как же другие процессы знают, что эта страница была загружена? Заранее спасибо!Страница Ошибки Обработчики исключений и таблицы страниц обновления

ответ

0

Это одна из проблем, с которой вам приходится обращаться в дизайне вашего менеджера памяти. Один из возможных вариантов состоит в том, чтобы иметь теневую PTE для каждой страницы, которая может использоваться совместно. При сбое процесса на общей странице диспетчер памяти проверяет теневую PTE. Если теневой PTE не является резидентным, он обрабатывает ошибку страницы обычным способом, обновляя как процессы сбоя PTE, так и теневой PTE, когда страница доступна. Если теневой PTE является резидентным, он просто копирует теневое PTE в процесс PTE. Таким образом, процесс PTE обновляется только тогда, когда процесс фактически затрагивает страницу. Вот как я думаю, Windows делает это - мои знания Linux ограничены, но так как почти каждая страница в процессе Linux может быть использована в любое время (из-за fork), я ожидаю, что у них есть другой способ сделать что-то для обработки без необходимости иметь теневые PTE для каждой отдельной страницы в системе.

В этой модели требуется некоторая умность, если у вас есть асинхронная обработка ошибок страницы, так как вам нужно обрабатывать случай, когда другой процесс повреждается на странице во время ее вхождения. Вам также необходимо обработать случай подкачки , В этом случае вам нужно будет пройти каждый процесс, на котором есть страница в рабочем наборе, и удалить его, что может потребовать некоторых IPI и некоторых книг.

 Смежные вопросы

  • Нет связанных вопросов^_^