«страница, которая отображается в виртуальном адресном пространстве, но не загружена в физическую память», не означает, что она ранее была в физической памяти.Предположим, вы сопоставили файл?Он все еще находится на диске, а не в памяти.
Предположим, вы сопоставили файл журнала и продолжаете добавлять к нему.Каждый раз, когда вы превышаете конец выделенной памяти, возникает сбой страницы, операционная система предоставит вам новую пустую страницу и отрегулирует длину файла.
Это также могут быть нарушения прав доступа, которые обнаруживаются иобрабатывается программой.
Возможно также, что программа использует больше сегментов памяти, чем умещается в TLB (который является кешем для таблиц страниц).Когда страницы являются смежными, все они могут обрабатываться одной записью таблицы страниц.Но если память фрагментирована в физическом адресном пространстве, потребуется много записей в таблице страниц, и они могут не помещаться в TLB.Когда происходит пропадание TLB, вызывается обработчик ошибок страницы ОС и просматривает сопоставление в таблице страниц процесса.
В некотором смысле это вариант Ответ Дина : страницыуже находятся в физической ОЗУ, и ОС должна загрузить эти сопоставления в TLB, но не из-за IPC.
Брайан отметил, что x86 (и, следовательно, все системы Win32) обрабатывают это безсбой страницы.
Еще одна причина сбоев страниц - запуск защитных страниц, используемых для увеличения стека и копирования при записи, но обычно они не происходят без привязки.Я не уверен на 100%, будут ли они отображаться как нарушения доступа или нет, потому что они будут помечены как нарушения доступа при входе в ловушку MMU, но, вероятно, обрабатываются обработчиком ошибок страницы ОС и не преобразуются в пользователянарушение режима доступа (SEH).