Une page sale ne nécessite pas nécessairement une réécriture. Une page sale est une page qui a été écrite depuis la dernière fois que le noyau l'a marquée comme propre. Il n'est pas toujours nécessaire de sauvegarder les données dans le fichier d'origine.
Les pages sont privées et non partagées, elles ne seront donc pas réenregistrées dans le fichier d'origine. Il serait impossible d'avoir une page sale sauvegardée par un fichier en lecture seule. Si la page doit être supprimée de la RAM, elle sera enregistrée en swap.
Les pages qui sont en lecture seule, privées et sales, mais dans la plage d'un fichier mappé en mémoire, sont généralement des pages de données qui contiennent des constantes qui doivent être initialisées au moment de l'exécution, mais ne changent pas après leur initialisation. Par exemple, ils peuvent contenir des données statiques qui intègrent des pointeurs; les valeurs du pointeur dépendent de l'adresse à laquelle le programme ou la bibliothèque est mappé, il doit donc être calculé après le démarrage du programme, la page étant en lecture-écriture à ce stade. Une fois les pointeurs calculés, le contenu de la page ne changera jamais dans cette instance du programme, la page peut donc être modifiée en lecture seule. Voir «Recherche de pages de mémoire sales» par stosb pour un exemple avec des fragments de code.
Vous pouvez, plus rarement, voir des pages en lecture seule, exécutables, privées et sales; cela se produit avec certains éditeurs de liens qui mélangent plus librement le code et les données, ou avec une compilation juste à temps.
En plus des cas, Gilles énumère:
Lorsqu'un processus bifurque, le noyau peut marquer toutes ses pages sales comme étant en lecture seule, et elles seront partagées entre le parent et l'enfant. Lorsqu'un des processus écrit sur la page, une exception se produit et le noyau copie la page et la marque en écriture. Cela permet d'économiser le travail de copie des pages qui ne sont finalement pas modifiées à nouveau par l'un ou l'autre processus. (Notez que dans cette situation, les pages sont marquées en lecture seule dans le matériel mais sont reconnues par le noyau comme étant accessibles en écriture.)
la source