0% ont trouvé ce document utile (0 vote)
4 vues7 pages

Comprendre la mémoire virtuelle et sa gestion

Transféré par

meriem has
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
4 vues7 pages

Comprendre la mémoire virtuelle et sa gestion

Transféré par

meriem has
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

IV.

Mémoire virtuelle :

IV.1. définition :
La mémoire virtuelle est une technique qui permet d’exécuter des programmes dont la taille
excède la taille de la mémoire réelle. L’espace d’adressage d’un processus, généré par les
compilateurs et les éditeurs de liens, constitue la mémoire virtuelle du processus ou espace
d’adressage logique, Avec des techniques adéquates, sa taille peut être très supérieure à celle
de la mémoire physique ou réelle, et donc La mémoire virtuelle est une technique autorisant
l’exécution de processus pouvant ne pas être complètement en mémoire.

Le concept de mémoire virtuelle a été mis au point après que l’on a constaté que dans de
nombreux cas, on n’a pas besoin d’un programme dans sa totalité.

[Link] Principaux objectifs du concept de mémoire virtuelle :


Le concept de mémoire virtuelle permet :

1. Au programmeur d’écrire des programmes sans tenir compte des contraintes de la taille de
la mémoire centrale(RAM).

2. A un processus dont la taille du programme est supérieure à la taille de la mémoire


principale de s’exécuter.

Le principal avantage est que les programmes peuvent être plus grands que la mémoire
physique, La mémoire virtuelle fournit donc un espace d’adressage extrêmement grand alors
que la mémoire physique est limitée. Cela est possible en utilisant une mémoire auxiliaire
comme espace de travail pour charger et décharger les différentes pages par le SE.

[Link] de la pagination :
Le principe est le suivant :

 Les adresses mémoires émises par le processeur sont des adresses virtuelles, indiquant la
position d'un mot dans la mémoire virtuelle.
 Cette mémoire virtuelle est formée de zones de même taille, appelées pages. Une adresse
virtuelle est donc un couple (numéro de page, déplacement dans la page).
 La mémoire vive est également composée de zones de même taille, appelées cadres
(frames en anglais), dans lesquelles prennent place les pages (un cadre contient une page :
taille d'un cadre = taille d'une page). La taille de l'ensemble des cadres en mémoire vive
utilisés par un processus est appelé Resident set size.
 Un mécanisme de traduction assure la conversion des adresses virtuelles en adresses
physiques, en consultant une table des pages pour connaître le numéro du cadre qui
contient la page recherchée. L'adresse physique obtenue est le couple (numéro de cadre,
déplacement).
 Il peut y avoir plus de pages que de cadres (c'est là tout l'intérêt) : les pages qui ne sont
pas en mémoire sont stockées sur un autre support (disque), elles seront ramenées dans un
cadre quand on en aura besoin.
figIV.1 : schéma montrant la pagination des pages et des cadres

IV.4. la pagination à la demande


Notons tout d'abord que la mémoire virtuelle telle qu'elle a été présentée ci-dessus, peut être
de taille très importante, et beaucoup plus grande que ce que peut être une taille raisonnable
de mémoire physique. Dans un contexte de multiprogrammation, il peut être nécessaire de
disposer de plusieurs mémoires virtuelles. Pour résoudre cette difficulté, on a imaginé de ne
mettre en mémoire physique que les pages de mémoire virtuelle dont les processus ont besoin
pour leur exécution courante, les autres étant conservées sur mémoire secondaire (disque)

Au lieu de transférer en mémoire un processus complet, la routine de pagination ramène


seulement les pages qui lui sont nécessaires. Ainsi, elle évite que l’on charge en mémoire des
pages qui ne seront jamais employée, Avec cette technique, le SE doit disposer de moyens
pour distinguer les pages qui sont en mémoire, et celles qui sont sur disque. Par exemple, on
peut utiliser dans la table des pages un bit valide/invalide pour décrire si la page est chargée
en mémoire ou non.

IV.5. Défauts de page et « page file »


Que se passe-t-il si le processus illustré plus haut tente d’accéder à une page (mémoire
virtuelle), qui n’a pas de correspondance dans la mémoire physique ?
Il se produit alors un défaut de page : le système d’exploitation doit sélectionner un cadre de
page (physique), le libérer en le copiant sur le disque (mémoire secondaire) et le remplacer
par la mémoire désirée. On met la table des pages à jour ensuite.
La partie du disque qui sert à stocker les pages qui ne tiennent plus en mémoire s’appelle
« swap file » (fichier de va-et-vient) ou « page file »
figIV.2: schéma montrant l’exécution d’une défaut de page

IV.6. Remplacement de pages :


Lorsque le SE se rend compte au moment de charger une page qu’il n’existe aucun cadre de
page disponible, il peut faire recours à un remplacement de page. Ainsi le code complet d’une
procédure de traitement d’un défaut de pages est le suivant :

1. Trouver l’emplacement de la page désirée sur disque.

2. Trouver un cadre de page libre. S’il existe un cadre de pages libre, l’utiliser, sinon utiliser
un algorithme de remplacement de pages pour sélectionner un cadre de page victime.

3. Enregistrer la page victime dans le disque et modifier la table de page.

4. Charger la page désirée dans le cadre de page récemment libéré et modifier la table de
pages.

5. Redémarrer le processus utilisateur.


figIV.3 :page victime

IV.7. algorithmes de remplacements de pages


Lorsqu'un défaut de page se produit, il faut amener la page manquante en mémoire centrale.
S'il y a de la place pour elle, il suffit de la charger. S'il n'y a pas de place, il faut en libérer une,
et le choix de la victime est réalisé par l‘un des algorithmes de remplacement.

Il existe plusieurs algorithmes différents de remplacement de pages. En général, on souhaite


celui qui provoquera le taux de défauts de pages le plus bas.

Nous allons expliquer et évaluer les algorithmes en utilisant la chaîne de référence pages
suivante

2, 3, 2, 1, 5, 2, 4, 5, 3, 2, 5, 2

IV.7.1. Algorithme FIFO (First in-First out) :


Premier arrivé, premier sorti

La page la plus ancienne est la victime (celle qui a été placé en mémoire depuis le plus long
temps). Cet algorithme est très simple à implémenter!

Logique: une page qui a été longtemps en mémoire a eu sa chance d’exécuter

Les cadres forment conceptuellement un tampon circulaire, débutant à la plus vieille page
Lorsque la mémoire est pleine, la plus vieille page est remplacée. Donc: “first-in, first-out”
Simple à mettre en application tampon consulté et mis à jour seulement aux défauts de
pages...

Mais: Une page fréquemment utilisée est souvent la plus vielle, elle sera remplacée avec
FIFO!

figIV.4 : algorithme FIFO

Nombre de défaut de page : 6

IV.7.2. Algorithme optimal :


La règle de remplacement est «remplacer la page qui ne sera pas utilisée pendant la durée la
plus longue». Malheureusement, cet algorithme nécessiterait de connaître l'avenir.

L’algorithme optimal (OPT) choisit pour page à remplacer celle qui a été référencée le plus
récemment produit le + petit nombre de défauts de page

Impossible à réaliser (car il faut connaître le futur) mais sert de norme de comparaison pour
les autres algorithmes

figIV.5 : algorithme optimal

Nombre de défaut de page : 3

IV.7.3. Algorithme LRU (Least Recently Used):


Il consiste à choisir comme victime le cadre qui n'a pas été référencé depuis le plus
longtemps.

Remplace la page dont la dernière référence remonte au temps le plus lointain (le passé utilisé
pour prédire le futur).

En raison de la localité des références, il s’agit de la page qui a le moins de chance d’être
référencée.

Performance presque aussi bonne que l’algorithme OPT.


figIV.6 : algorithme LRU

Nombre de défaut de page :4

IV.7.4. Algorithmes basés sur le comptage :


Il existe de nombreux algorithmes de remplacement de pages basés sur le comptage du
nombre de références effectuées à chaque page. Pour cela, on utilise un compteur pour chaque
numéro de page.

IV.7.4.a. L’algorithme LFU (Least Frequently Used):


«la moins souvent utilisée» : on garde un compteur qui est incrémenté à chaque fois que le
cadre est référencé, et la victime sera le cadre dont le compteur est le plus bas.

IV.7.4.b. L’algorithme MFU (Most Frequently Used):


L’algorithme de remplacement MFU (Most Frequently Used) requiert que l’on remplace la
page la plus fréquemment utilisée. La raison de cette sélection est que la page ayant le compte
le plus petit vient probablement d’être ramenée en mémoire et doit encore être utilisée.
V. Conclusion :
Les systèmes d'exploitation ont pour mission de fournir une interface avec le matériel aux
logiciels voulant s'exécuter sur une plate-forme donnée. Au cours de l'histoire les noyaux
n'ont cessé d'évoluer et leurs fonctionnalités n'ont cessé de se modifier en suivant un lien
assez étroit avec l'évolution du matériel. De systèmes monoprogrammés sans sécurité nous
sommes passés en quelques années à des systèmes multiprogrammés permettant une forte
isolation entre les processus. Ainsi au cours du temps les systèmes d'exploitation en sont
venus à fournir une abstraction matérielle très élevée, les processus n'ont plus (ne peuvent) à
interagir directement avec tout une partie du matériel mais utilise la couche d'abstraction
qu'est le système d'exploitation. Cette couche d'abstraction nécessite que le système fournisse
des primitives pour répondre aux besoins des processus. Un des besoins fondamentaux est la
mémoire. Tout programme pour s'exécuter à besoin de mémoire pour contenir son code et ses
données.

Vous aimerez peut-être aussi