Грязная страница не обязательно требует обратной записи. Грязная страница - это страница, на которую было записано, поскольку ядро в последний раз помечало ее как чистую. Данные не всегда нужно сохранять обратно в исходный файл.
Страницы являются частными, а не общими, поэтому они не будут сохранены обратно в исходный файл. Было бы невозможно создать грязную страницу с файлом, доступным только для чтения. Если страницу необходимо удалить из оперативной памяти, она будет сохранена в разделе подкачки.
Страницы, которые доступны только для чтения, являются частными и грязными, но находятся в пределах диапазона отображаемого в памяти файла, как правило, страницы данных, которые содержат константы, которые должны быть инициализированы во время выполнения, но не изменяются после их инициализации. Например, они могут содержать статические данные, которые встраивают указатели; Значения указателя зависят от адреса, по которому отображается программа или библиотека, поэтому его необходимо вычислять после запуска программы, а страница читается и записывается на этом этапе. После того, как указатели были вычислены, содержимое страницы никогда не изменится в этом экземпляре программы, поэтому страница может быть изменена только для чтения. См. «Поиск по грязным страницам памяти» от stosb для примера с фрагментами кода.
Вы можете, реже, видеть только для чтения, исполняемые, частные, грязные страницы; это происходит с некоторыми компоновщиками, которые смешивают код и данные более свободно, или с компиляцией точно в срок.