Francois Cerbelle a écrit :
Le Sun, Dec 12, 2004 at 10:54:57PM +0100, Baptiste Mathus ecrit :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...[...]Y a-t-il un moyen de connaitre la taille des pages que le noyau en cours d'utilisation va utiliser ? (quelque part dans /proc j'imagine).---end quoted text / fin de citation--- Salut, Je n'ai pas de réponse à ta question, juste le résultat de ton programme sur mon systeme :fcerbell@oceane:~$ ./test segfault attrapée : j = 135160Ce qui confirme tes résultats sur un noyau Linux oceane 2.6.8-1-k7 #1 Thu Oct 7 02:47:47 EDT 2004 i686 GNU/Linux dans une installation Debian. Je n'ai pas le courage de redémarrer sur mon LFS en 2.6.8 aussi, mais je suppose que, même avec un noyau pur, le résultat sera le même.
Merci. Bon, alors j'ai vraiment pas compris la gestion de la mémoire alors... Par contre, je me suis pas trompé : #include <stdio.h> #include <unistd.h> int main(void) { int page_size = getpagesize(); printf("Taille d'une page du système = %d\n", page_size); return 0; }ça affiche bien 4096... Alors franchement, les quelques 135000 octets avant d'avoir une erreur me laissent perplexe :/
@++ -- Baptiste <Batmat> Mathus Baptiste at Mathus point org http://www.batmat.net OpenPGP : 0xE8EC628F --------- Si chacun de nous a une idée et que nous les partageons, nous repartirons tous les deux avec deux idées... C'est ça le Libre.
Attachment:
signature.asc
Description: OpenPGP digital signature