Lorsque nous stockons de la mémoire malloc, seule la mémoire virtuelle est disponible, et elle pointe vers zéro-page. La vraie mémoire physique sera allouée quand nous essayons d'écrire dans la mémoire malloced, à ce moment, il y aura copy-on-wright que copier zéros de zéro-page à la mémoire physique qui est mappé par défaut de page. Mon problème est, comment/où la demande zero-fill-on est implémentée dans le code source de Linux, je veux désactiver cette fonctionnalité pour faire un peu de test. Je suppose que cela peut se produire dans la procédure page-fault, plutôt que brk() ou mmap().Comment la demande zero-fill-on est implémentée dans le noyau Linux, et où je peux la désactiver?
Sujets similaires liés à zéro-remplissage à la demande. ZFOD et COW.
Pourquoi voulez-vous le désactiver? Si c'est pour des tests de timing, peut-être pourriez-vous forcer la copie sur écriture à se produire dans la mémoire malléable avant de faire les tests de timing. –
La mémoire Malloc s'est produite dans l'espace utilisateur, mais la copie sur écriture s'est produite dans l'espace noyau. Je ne pense pas que je puisse avoir une telle capacité à le contrôler quand cela arrive. – Qinchen
Voir la fonction 'prep_new_page()' dans 'mm/page_alloc.c'. Si vous mettez en commentaire l'appel (conditionnel) à 'prep_zero_page()', les pages doivent rester non initialisées. – Ctx