Re: [HS] Question système
On Sun, Dec 12, 2004 at 10:54:57PM +0100, Baptiste Mathus wrote:
> 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é.
Si tu veux regarder ce que fait le noyau, il vaut mieux
utiliser directement les appels systèmes (section 2 du
manuel): malloc est une fonction de la libc, et tu ne sais
pas ce que la libc fait. L'autre chose à regarder est bien
entendu les sources.
> Comme il me semble qu'une page fait généralement 4ko sous mon os préféré.
Ça dépend en fait de l'architecture, c'est 4Ko en i386
effectivement.
> 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).
Dans les sources, au début de include/asm/page.h. Dans
/proc, je ne sais pas.
En compilant ton programme avec uclibc, on trouve ce à quoi
tu t'attends. Donc, glibc bien fait des choses dans ton dos:
yves@shrek:~$ i386-uclibc-linux-gcc -o try try.c
yves@shrek:~$ ./try
segfault attrapée : j = 4088
Je suppose que glibc pense que c'est malin de pré-attribuer
plein de mémoire vue que Linux ne l'attribue pas tant
qu'elle n'est pas utilisée (ça économise des appels
systèmes).
Y.
Reply to: