[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: