4.4. M�moire virtuelle�: informations d�taill�es
Il convient tout d'abord d'examiner un nouveau concept, celui de l'espace d'adressage virtuel. Ce dernier correspond � la quantit� maximale d'espace d'adressage disponible pour une application. Il varie en fonction de l'architecture du syst�me et du syst�me d'exploitation lui-m�me. L'espace d'adressage virtuel d�pend de l'architecture car c'est elle qui d�finit la quantit� de bits disponibles � des fins d'adressage. L'espace adressage virtuel d�pend aussi du syst�me d'exploitation car il est possible que la mani�re selon laquelle il a �t� impl�ment� fasse intervenir des limites suppl�mentaires allant au-del� de celles impos�es par l'architecture elle-m�me.
Le mot "virtuel" dans l'expression espace d'adressage virtuel fait r�f�rence au nombre total d'emplacements de m�moire dot�s d'une adresse unique qui sont disponibles pour une application mais il ne fait pas r�f�rence � la quantit� de m�moire physique, quelle soit install�e dans le syst�me ou d�di�e � l'application � tout moment donn�.
Dans notre exemple, l'espace d'adressage virtuel de notre application est de 15000 octets.
Afin d'impl�menter la m�moire virtuelle, il est n�cessaire que le syst�me informatique dispose de mat�riel sp�cifique pour la gestion de m�moire. Ce dernier est souvent connu sous l'acronyme MMU (de l'anglais Memory Management Unit ou unit� de gestion de m�moire). Sans MMU, lorsque le CPU acc�de � la RAM, les emplacements de cette derni�re ne changent jamais — l'adresse m�moire 123 correspond toujours au m�me emplacement physique au sein de la m�moire vive.
Cependant, avec une MMU, les adresses m�moire font l'objet d'une �tape de traduction avant tout acc�s � la m�moire. Ainsi, l'adresse m�moire 123 se verra peut-�tre mise en correspondance avec l'adresse physique 82043 � un moment donn� et avec l'adresse physique 20468 � un autre. Dans une telle situation n�anmoins, le temps de gestion du syst�me n�cessaire pour effectuer le suivi individuel de la correspondance entre les adresses virtuelles et les adresses physiques pour des millions d'octets de m�moire serait beaucoup trop long. Ainsi, au lieu de ce processus, la MMU d�coupe la m�moire vive en pages — des sections de m�moire contigu�s d'une taille d�termin�e qui sont trait�es par la MMU comme des entit�s ind�pendantes.
Effectuer le suivi des pages et des traductions de leurs adresses peut sembler �tre une �tape quelque peu inutile et compliqu�e. Toutefois, elle repr�sente en fait un �l�ment crucial � l'impl�mentation de m�moire virtuelle. C'est la raison pour laquelle il est important de prendre l'�l�ment suivant en consid�ration.
Revenant � notre application hypoth�tique dot�e d'un espace d'adressage de 15000 octets, imaginez que la premi�re instruction de l'application acc�de � des donn�es stock�es � l'adresse 12374. Supposez �galement que notre ordinateur ne dispose que de 12288 octets de RAM physique. Que se passe-t-il lorsque le CPU tente d'acc�der � l'adresse 12374�?
Le processus ayant lieu dans ce cas est appel� d�faut de page.
4.4.1. D�fauts de pages
Un d�faut de page correspond � une s�rie d'�v�nements se d�roulant lorsqu'un programme essaie d'acc�der � des donn�es (ou � un code) qui se trouvent dans son espace d'adressage mais ne sont pas actuellement plac�es dans la m�moire vive (ou RAM) du syst�me. Le syst�me d'exploitation doit traiter les d�fauts de pages en permettant, d'une mani�re ou d'une autre, l'acc�s � la m�moire des donn�es recherch�es afin que le programme puisse continuer ses op�rations, comme si le d�faut de page ne s'�tait jamais produit.
Dans le cas de notre application hypoth�tique, le CPU transmet d'abord l'adresse recherch�e (12374) � la MMU. Toutefois, ne disposant d'aucune traduction pour cette adresse, la MMU interrompt le CPU et engendre l'ex�cution du logiciel appel� gestionnaire de d�fauts de pages. Ce dernier d�termine alors les mesures � prendre pour r�soudre le d�faut de page en question. � cet �gard, il peut�:
Trouver l'emplacement de la page recherch�e sur le disque et la lire (c'est g�n�ralement le cas si le d�faut de page se situe au niveau d'une page de code)
Confirmer que la page recherch�e se trouve d�j� dans la m�moire vive (mais n'est pas allou�e au processus en cours) et reconfigurer la MMU de mani�re � ce qu'elle renvoie bien � cette page
Pointer vers une page sp�ciale ne contenant rien d'autre que des z�ros et allouer ensuite une page au processus seulement si le processus tente d'enregistrer des donn�es sur la page sp�ciale (on parle alors d'une page copi�e par �criture ou copy on write�; cette technique est souvent utilis�e pour des pages de donn�es initialis�es avec des z�ros)
Obtenir la page souhait�e depuis un autre emplacement (un point que nous traiterons ult�rieurement de mani�re plus d�taill�e)
Alors que les trois premi�res mesures sont relativement simples, la derni�re elle, ne l'est pas du tout. Pour bien comprendre ce dernier point, il est n�cessaire d'aborder d'autres sujets.
4.4.2. Jeu de pages de travail
L'ensemble des pages de m�moire physique actuellement d�di�es � un processus sp�cifique est connu sous le terme de jeu de pages de travail (ou working set) de ce processus. Le nombre de pages faisant partie de ce jeu de pages de travail peut augmenter ou diminuer selon la quantit� globale de pages disponibles sur l'ensemble du syst�me.
La taille du jeu de pages de travail augmente lorsqu'une page du processus fait d�faut. En revanche sa taille diminue au fur et � mesure que le nombre des pages libres baisse. Afin d'�viter d'�tre compl�tement � cours de m�moire, il est n�cessaire de retirer des pages des jeux de pages de travail des processus et de les transformer en pages libres qui pourront �tre utilis�es ult�rieurement. Le syst�me d'exploitation r�duit les jeux de pages de travail des processesus de plusieurs mani�res�:
En enregistrant des pages modifi�es dans un endroit particulier du p�riph�rique de stockage de masse (auquel on fait g�n�ralement r�f�rence sous le terme d'espace d'�change ou de pagination, parfois aussi appel� swapping ou paging space)
En identifiant des pages non modifi�es comme �tant des pages libres (il n'est pas n�cessaire d'enregistrer ces pages sur un disque �tant donn� qu'elles n'ont pas �t� modifi�es)
Afin de d�terminer des jeux de pages de travail pour tous les processus, le syst�me d'exploitation doit effectuer un suivi des informations relatives � l'utilisation de toutes les pages. De cette mani�re, il est � m�me de d�terminer les pages pr�cises qui sont activement utilis�es (et doivent donc demeurer en m�moire) et celles qui ne le sont pas (et peuvent par cons�quent �tre supprim�es de la m�moire). Dans la plupart des cas, un genre d'algorithme bas� sur les pages utilis�es le moins r�cemment permet de d�terminer les pages sp�cifiques pouvant �tre supprim�es des jeux de pages de travail des processus.
4.4.3. �change (ou swapping)
Alors que l'�change ou swapping (c'est-�-dire l'�criture de pages modifi�es dans l'espace de pagination du syst�me) fait partie des op�rations normales d'un syst�me, il est possible que le swapping devienne trop important. Il est important de pr�ter une attention toute particuli�re � un swapping excessif car la situation d�crite ci-dessous peut facilement se produire de fa�on r�p�t�e�:
Des pages d'un processus sont �chang�es
Le processus est en mesure d'�tre ex�cut� et tente d'acc�der � une page �chang�e
La page est remise en m�moire (for�ant probablement le d�chargement des pages d'autres processus)
Un peu plus tard cette page est �chang�e � nouveau
Si cette s�rie d'�v�nements est g�n�ralis�e (on parle alors d'�croulement ou de thrashing), elle indique que la quantit� de m�moire vive est insuffisante pour faire face � la charge de travail actuelle. L'�croulement a un impact extr�mement n�gatif sur la performance du syst�me dans la mesure o� le CPU et les charges d'E/S qui peuvent r�sulter d'une telle situation d�passent rapidement la charge impos�e par le travail r�el d'un syst�me. Dans des cas extr�mes, il est possible que le syst�me n'effectue aucun travail utile et monopolise toutes ses ressources pour le d�placement de pages de et vers la m�moire.