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:

[EMAIL PROTECTED]:~$ i386-uclibc-linux-gcc -o try try.c
[EMAIL PROTECTED]:~$ ./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.

Répondre à