Dans sa prose du dimanche 12 décembre de l'an de grâce 2004 à 22h54, Baptiste Mathus s'exprimait ainsi: > Salut à tous, > > Je fais un petit programme censé tester un point précis de la gestion de > la mémoire sous Linux. J'essaie de déclencher des segfault en écrivant > ds la mémoire octet par octet à partir d'un endroit que j'ai alloué. > > Comme il me semble qu'une page fait généralement 4ko sous mon os > préféré. Le nombre d'octets au bout duquel j'obtiens une segfault ne > devrait jamais dépasser 4096, non ? (voire 8192 avec des pages de 8ko). > > Or le nombre est bcp plus gd que ça : 137400. Soit j'ai fait une connerie > ds les 15 lignes que j'ai écrites (honte sur moi) soit je comprends plus... Je confirme (plus ou moins) - sous Linux: $ ./segfault segfault attrapée : j = 135160 - sous OpenBSD; $ ./segfault segfault attrapée : j = 4048 Donc linux a alloué 33 pages (avec un entête de 8 octets) OpenBSD a alloué 1 page (avec entête de 48 octets) Je suppose que Linux "optimise" les requêtes en fonction de la mémoire disponible et de la gourmandise de l'application (reste à vérifier) Celà se passe ou au niveau du noyau, ou au niveau de la libc. JC
Attachment:
signature.asc
Description: Digital signature