Selon Eric Van Honacker <[EMAIL PROTECTED]>:

> Le mardi, 18 f�v 2003, � 15:09 Europe/Brussels, David Remacle a �crit :
> > Salut,
> > La question va peut �tre vous para�tre bizarre, mais voil� je la pose.

Mais non, ce n'est pas une question bizarre. Disons simplement qu'elle montre 
combien l'habitude de travailler avec des OS (DOS, Windows, Mac OS Classique) 
franchement mal foutu � ce niveau transforme un "bug" de ces OS en un 
r�flexe "anormal" pour quiconque travaille avec un syst�me plus s�rieux � ce 
niveau. Mais tr�ve de plaisanterie...

> > Comment os X g�re t-il sa m�moire ?

Le principe de base d'un syst�me bas� sur un noyau Unix est que tout programme 
souhaitant utiliser ne serait-ce qu'un octet en m�moire doit demander 
son "allocation" (malloc) au noyau qui en garde trace. Dans le cas o� le noyau 
doit "liquider" une t�che parce qu'elle fait une r�f�rence � un espace m�moire 
qu'elle n'a pas re�u, car pas demand� � l'OS, le noyau dispose de la liste 
compl�te des espaces m�moires allou�s et peut donc lib�rer la totalit� de la 
m�moire allou�e � ce processus. Il existe 2 exceptions � cette r�gle :

- les zones de m�moire partag�es (Shared Memory) qui, r�clam�es par un 
processus, ne sont pas obligatoirement d�truites par ce m�me processus. En 
effet, le principe d'une zone de m�moire partag�e est qu'elle est susceptible 
d'�tre "r�cup�r�e" par un autre processus, et les donn�es qu'elle contient sont 
�videmment sens�es �tre pouvoir relues par le second processus. 

- certaines allocation m�moire qui, r�alis�e pour un processus utilisateur, se 
retrouvent en fait allou�es par des devices drivers ou des modules du noyau, 
lesquels ne sont pas obligatoirement avertis que le processus pour lequel ils 
ont r�alis� cette allocation m�moire est termin�. Un exemple qui me vient � la 
t�te : l'allocation de buffers lors d'une gravure d'un CD. 

Cette derni�re situation dans laquelle la m�moire du syst�me s'�puise petit � 
petit est ce qu'on appelle un ph�nom�ne de "memory leak". Il est plus 
particuli�rement fr�quent quand on a des cycles entres diff�rents processus a-
>b->c->a qui doivent chacun faire une allocation m�moire pour le pr�c�dent. Le 
fil des allocations m�moire devient parfois extr�mement difficile � retrouver, 
� moins de fusiller l'ensemble des processus concern�s.

Dans le premier cas, il est normalement toujours possible � l'administrateur 
d'identifier les zones de m�moire partag�es (commande ipcs sur les syst�me 
UNIX) et de les supprimer manuellement. Dans le cas d'une allocation dans un 
module, le d�chargement/rechargement du module r�soud � 99.99% le probl�me... 
Encore faut-il pouvoir le faire *sans* red�marrer le syst�me.

C'�tait la th�orie.

Pour l'approche pragmatique : qu'au bout de 300 jours d'uptime un syst�me se 
retrouve en renon de m�moire, c'est relativement normal. L'essentiel est de 
jeter un coup d'oeil (par exemple, directement apr�s chaque ouverture de 
session) sur la liste des processus et la m�moire allou�e. Si la liste est 
stable, normalement il ne devrait pas y avoir moins de m�moire libre � chaque 
ouverture de session. et s'il y a effectivement un probl�me, il faut identifier 
le processus qui "bouffe" la m�moire (le plus souvent par une boucle sur un 
malloc), le fusiller, et faire rapport au programmeur en indiquant le bug...

> > Est-ce que quand une application quitte (volontairement ou pas) elle 
> > lib�re par la m�me la place en m�moire qu'elle occupais pour les 
> > autres ?
> 
> Normalement c un des avantages du X avec le fait qu'elle soit 
> r�ellement prot�g�e mais d'autres technos plus pointus te 
> l'expliquerons ds le d�tail... Hein les gars ;-))))
> >
> > Ou bien faut-il de temps en temps rebooter (comme sous os 9) pour 
> > lib�rer plus de m�moire.
> 
> X est fait pour rester en fonctionnement pdt de longues p�riodes donc 
> ce serait un peu emb�tant... Perso, je lance et quitte bcp (la machine 
> ne red�marre pas souvent) et je n'ai jamais eu de probl�mes similaires 
> � ceux qui se produisaient sous le 9. Je quitte les apps par habitude 
> sinon je pense que ce n'est m�me pas n�c�ssaire (une app ne consomme 
> que ce qu'elle a besoin et donc si elle ne fait rien elle ne consomme 
> presque rien en m�moire).

Si l'application est correctement programm�e, c'est tout � fait exact. Mais des 
bugs dans les applications, �a existe :-)
 
> vh
-- 
Didier Belhomme
FUNDP - SIU
Unix Systems Manager

--
Avec i-mode, vivez une toute nouvelle experience de la communication
et des services en ligne.  Plus d�info sur http://www.imode.be
CyberCafe 2.0 <http://www.cybercafe.tv> Chaque Mardi 19h15 sur La 2!
Desabonnement par email :  <mailto:[EMAIL PROTECTED]>

Répondre à