44Fermer46
spectrasLe 27/12/2014 à 20:21
Zerosquare (./41) :
Mais je privilégierais de remplir avec des octets aléatoires. Rien ne dit qu'un OS ne serait pas assez malin pour détecter les pages qui ne contiennent que des zéros ou qui sont identiques entre elles, et faire du copy-on-write embarrassed
Un OS je sais pas, mais VMWare ESX/Server fait ça depuis sa version 2. Il a un process background qui hashe les pages. Quand ça matche, il examine les pages et, si elles sont identiques, il les met en CoW.

C'est très efficace car quand tu as 30 VM qui ont chacune une copie du même OS, il y a beaucoup de pages identiques, et une probabilité qu'elles changent quasiment nulle.


Du coup pour le zerosquare_malloc, si tu veux être raisonnablement sûr le mieux c'est d'initialiser la zone avec un générateur aléatoire cryptographique. Avec un générateur ordinaire, l'os pourrait juste stocker le seed initial après tout.