Uma página suja não requer necessariamente uma devolução. Uma página suja é aquela que foi gravada desde a última vez que o kernel a marcou como limpa. Os dados nem sempre precisam ser salvos no arquivo original.
As páginas são privadas, não compartilhadas, para que não sejam salvas novamente no arquivo original. Seria impossível ter uma página suja apoiada por um arquivo somente leitura. Se a página precisar ser removida da RAM, ela será salva em troca.
As páginas que são somente leitura, privadas e sujas, mas dentro do intervalo de um arquivo mapeado na memória, geralmente são páginas de dados que contêm constantes que precisam ser inicializadas em tempo de execução, mas não são alteradas após serem inicializadas. Por exemplo, eles podem conter dados estáticos que incorporam ponteiros; os valores do ponteiro dependem do endereço no qual o programa ou biblioteca é mapeado, portanto, ele deve ser calculado após o início do programa, com a página sendo de leitura e gravação nesta fase. Depois que os ponteiros forem calculados, o conteúdo da página nunca será alterado nesta instância do programa, portanto, a página poderá ser alterada para somente leitura. Veja “Caçando Páginas de Memória Suja” do stosb para um exemplo com fragmentos de código.
Mais raramente, você pode ver páginas somente leitura, executáveis, particulares e sujas; isso acontece com alguns vinculadores que misturam código e dados mais livremente ou com compilação just-in-time.