Как ОС находит содержимое на диске, который не был загружен в память, когда возникает исключение сбоя страницы? - PullRequest
2 голосов
/ 27 сентября 2010

Когда возникает исключение сбоя страницы из-за того, что ЦП контента пытается получить доступ, но не загружен в память, как ОС находит недостающее содержимое во вторичном хранилище (например, на жестком диске)?

Спасибо за ваше объяснение заранее.

-ivan

Ответы [ 2 ]

3 голосов
/ 28 сентября 2010

Короткая версия: Биты адреса неверного PTE будут сопоставлены со смещением во вторичном хранилище (файл подкачки).

Более длинная версия: Чтобы понять, что там происходит, давайте очень кратко подведем итоги работы виртуального перевода на физический. Я буду обсуждать ответ на платформе x86.

В регистре процессора CR3 выделено 20 битов, указывающих на начало каталога страниц. Первые 10 битов виртуального адреса кодируют, какую запись каталога страниц (PDE) использует адрес, который является массивом записей таблицы страниц (PTE), следующие 10 битов в адресе кодируют, какая PTE ссылается на фактическую физическую страницу в вопрос. Последние 12 битов смещены на странице.

Когда операционная система извлекает страницу из памяти, PTE помечается как недействительный, и биты адреса PTE смещаются в файл подкачки (отвечая на исходный вопрос).

С файлом, отображаемым в память, он немного усложняется, так как они используют прототипы PTE.

Если вам нужна дополнительная информация, я настоятельно рекомендую книгу Марка Руссиновича "Windows Internals".

0 голосов
/ 27 сентября 2010

ОС найдет структуру отображения памяти, связанную с ошибкой страницы, которая, помимо прочего, будет иметь дескриптор связанного файла.Он возьмет дескриптор, сделает математику, чтобы выяснить смещение в файле, затем выдаст Read.Когда чтение вернется, менеджер памяти скопирует его в ОЗУ и пометит эту страницу как поддерживаемую физическим фреймом (фактическим ОЗУ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...