Vous êtes sur la page 1sur 29

Chapitre 4 : Gestion de Mémoire

Sommaire du CourS

i. introduCtion

ii. GeStion baSique de la mémoire

iii. GeStion aveC reCouvrement SanS paGination

iv. GeStion aveC reCouvrement et paGination

v. alGorithme de remplaCement de paGeS


introduCtion

On appelle mémoire, le lieu où sont stockées les données et les programmes pour bien
exécuter un processus. La mémoire dans un système se subdivise en deux catégories:
1) La mémoire vive ou centrale (RAM) à accès rapide.
2) La mémoire de masse: beaucoup plus lente d’accès.

Le stockage temporaire des programmes et de données que nous utilisons présente


des inconvénients. Même si la mémoire augmente, elle peut rester insuffisante. C’est
le cas des SE à multiprogrammes qui partagent de la mémoire centrale. D’où une
gestion moderne de cette mémoire. On fait appel au gestionnaire de mémoire dont le
rôle est de :

définir un espace d’adressage séparé pour chaque processus.


 allouer une place mémoire pour le code et les données.
 protéger l’espace d’adressage vis-à-vis de l’accès d’autres processus.
 traiter le recouvrement entre le disque et la mémoire centrale.
introduCtion

On se fixe les concepts suivants qui sont directement en rapport avec l’abstraction et
le rôle du SE.

Mémoire physique: la mémoire RAM de la machine,


Adresses physiques: les adresses de cette mémoire,
Mémoire logique: l’espace d’adressage d’un programme,
Adresses logiques: les adresses dans cet espace.

Une adresse logique est une adresse à une location de programme


◦ - par rapport au programme lui-même
◦ - ’indépendante’ de la position du programme en mémoire Physique.

donc l’adresse physique est différente de l’adresse logique.


Gestion Basique de la Mémoire
GeStion baSique de la mémoire

La multiprogrammation

Le programme est subdivisé en plusieurs processus.


Plusieurs utilisateurs peuvent travailler en temps partagé.

Plus le nombre de processus est élevé, plus le taux d’utilisation du


processeur est élevé. On peut utiliser la multiprogrammation avec
partitions fixes.
GeStion baSique de la mémoire

Multiprogrammation avec partitions fixes


La mémoire est divisée en n partitions fixes, de tailles pas
nécessairement égales. Dans ce cas il existe deux méthodes de gestion.

1) On crée une file d'attente par partition. Chaque nouveau processus


est placé dans la file d'attente de la plus petite partition pouvant le
contenir.

Inconvénients :
 On perd en général de la place au sein de chaque partition
 Il peut y avoir des partitions inutilisées (leur file d'attente est vide)
GeStion baSique de la mémoire

2) On crée une seule file d'attente globale. Il utilise deux stratégies :

a) Dés qu'une partition se libère, on lui affecte la première tache de la


file qui peut y tenir.
Inconvénient : on peut ainsi affecter une partition de grande taille a
une petite tache et perdre beaucoup de place.

b) Dés qu'une partition se libère, on lui affecte la plus grande tache de la


file qui peut y tenir.
Inconvénient : on pénalise les processus de petite taille.
GeStion baSique de la mémoire

Ces méthodes sont les plus simples techniques utilisées pour charger
des processus. On parle aussi de gestion sans recouvrement ni
pagination.
Gestion avec Recouvrement sans Pagination
GeStion aveC reCouvrement
SanS paGination

Définition : La technique du recouvrement (swapping) permet de


stocker temporairement sur disque des images de processus afin de
libérer de la mémoire centrale pour d'autres processus.

On utilise en pratique des partitions de taille variable car le nombre, la


taille, et la position des processus peuvent varier dynamiquement au
cours du temps.

On n'est plus limité par des partitions trop grandes ou trop petites
comme avec les partitions fixes. Cette amélioration de l'usage de la
mémoire centrale nécessite un mécanisme plus complexe d'allocation et
de libération.
GeStion aveC reCouvrement
SanS paGination

Lorsqu’il y’a des espaces inutilisés, on utilise le compactage de la


mémoire pour les regrouper. L’allocation dynamique de la mémoire se
fait selon trois mécanismes principaux:

1) Les tables de bits


2) Les listes chainées
3) Les subdivisions
GeStion aveC reCouvrement
SanS paGination

1. Gestion de la mémoire par table de bit:

On divise la mémoire centrale en unités d'allocations de quelques octets


à quelques Ko. A chaque unité, correspond un bit de la table de bits
avec la convention suivante:
 0 si l'unité est libre,
 1 sinon.

Cette table est stockée en mémoire centrale. Le SE doit utiliser un


algorithme pour sélectionner la zone de mémoire dans laquelle le
processus sera chargé.
GeStion aveC reCouvrement
SanS paGination

1-1 Algorithme de la première zone libre (First Fit)


Le SE recherche toutes les sections de mémoire libre. Le processus est
alloué à la première zone libre dont la taille est supérieure à celle du
processus.

1-2 Algorithme du meilleur ajustement (Best Fit)


Le SE recherche dans la liste des zones libres la plus petite dont la taille
est supérieure ou égale a celle du processus.
GeStion aveC reCouvrement
SanS paGination

1-3 Algorithme du plus grand résidu (Worst Fit):

Dans les situations où l’algorithme du meilleur ajustement établit une


correspondance presque parfaite, la zone qui reste est quasiment
inutile, car trop petite. Pour éviter la création de ce type de zones,
l’algorithme du pire ajustement fonctionne à l’opposé de celui du
meilleur ajustement. Il choisit toujours la zone restante la plus grande.
GeStion aveC reCouvrement
SanS paGination

2. Gestion de la mémoire par liste chainée


On utilise une liste chainée des zones libres en mémoire centrale. La
représentation en mémoire de l'ordinateur est une succession de
maillons faits d'un contenu et d'un pointeur vers une autre cellule. On
applique

soit l'un des algorithmes précédents,

soit un algorithme de placement rapide (quick fit). On crée des listes


séparées pour chacune des tailles les plus courantes, et la recherche
est considérablement accélérée.
GeStion aveC reCouvrement
SanS paGination

3. Gestion de la mémoire par subdivisions:

Le système par subdivisions propose un compromis entre l’allocation de


la taille fixe et l’allocation de taille variable.
La mémoire est allouée en unités qui sont des puissances de 2.
Le gestionnaire mémorise une liste de blocs libres dont la taille est
une puissance de 2.
Gestion avec Recouvrement et Pagination ou
Segmentation
GeStion aveC reCouvrement et
paGination ou SeGmentation

La taille d'un processus peut dépasser la taille de la mémoire physique


disponible, même si l'on enlève tous les autres processus. En
1961, J. Fotheringham proposa le principe de la mémoire virtuelle: le SE
conserve en mémoire centrale les parties utilisées des processus et
stocke si nécessaire, le reste sur disque.

La mémoire virtuelle fait appel à deux mécanismes: segmentation ou


pagination. On travaille avec des segments ou des pages.
Sans recours à la mémoire virtuelle, un processus est entièrement
chargé à des adresses contigües;
Avec le recours à la mémoire virtuelle, un processus peut être chargé
dans des pages ou des segments non contigus.
GeStion aveC reCouvrement et
paGination ou SeGmentation

4- 1 Pagination
La mémoire est divisée en blocs de taille fixe appelés cadres de pages, et
constituent l’unité d’allocation. Les processus sont divisés en blocs
appelés pages, de la même taille que les cadres.

Pour charger un processus en mémoire, le SE charge chaque page


dans un cadre de page inutilisé.

Pour chaque processus, une table de pages stocke le numéro du cadre


de page (index) alloué a chaque page.
GeStion aveC reCouvrement et
paGination ou SeGmentation

4- 1 Pagination

Si un processus utilise un grand nombre de pages, on peut utiliser un


système hiérarchisé d’index en divisant le numéro de la page en un ou
plusieurs composants.

L’adresse logique d’une donnée (instruction) est composée du numéro


de page et de l’offset (décalage).

 L’accès à une information est réalisée via le pair (page, offset).


GeStion aveC reCouvrement et
paGination ou SeGmentation
4-2 Segmentation :
On divise le programme en un certain nombre de blocs appelés
segments générés à la compilation.

Chaque segment est alloué indépendamment à la mémoire.

Contrairement à la pagination, la division en segment est faite en


concordance avec la logique du programme, par l’utilisateur (ou
compilateur). Les segments sont de taille variable.

Néanmoins, la table de segments est comparable à la table


de pages. Le SE garde une liste d’espace libre et les alloue aux
segments.
Algorithmes de Remplacement de Pages
alGorithme de remplaCement de
paGe
Ces algorithmes reposent sur 3 stratégies :

1. une stratégie de chargement qui choisit les pages à charger et


l'instant de chargement.
2. une stratégie de placement qui choisit un cadre libre pour chaque
page à charger.
3. une stratégie de remplacement destinée a libérer certains cadres.

La recherche se fait soit sur l'ensemble des pages (recherche globale),


soit sur les pages « appartenant » au processus (recherche locale). Les
stratégies de placement sont dépendantes des stratégies de
remplacement: on charge nécessairement une page dans le cadre qui
vient d‘être libéré.
alGorithme de remplaCement de
paGe

Stratégie de chargement/déchargement
Objectif : Etablir un algorithme qui permet de charger/décharger la
bonne portion.

Chargement
Charger toutes les portions en une seule fois (idéale), requiert une
mémoire assez grande, mais facile à mettre en œuvre.

Charger les portions à la demande; méthode la plus utilisée et


nécessite un bon choix de la portion à décharger au cas où elle était
déjà attribuée.
alGorithme de remplaCement de
paGe

Déchargement

Stratégie FIFO (First In First Out)


Si les portions sont chargées séquentiellement, alors celles qui ont
duré le plus longtemps dans la mémoire ont la probabilité plus faible
d’être l’objet d’un accès.

 Facile a mettre en œuvre et pas couteux.


 Pas si efficace. FIFO ne prend pas en compte les pages
fréquemment utilisées, qui demeurent alors le plus en
mémoire.
alGorithme de remplaCement de
paGe

 Stratégie LRU (Least Recently Use)


La page à laquelle on n’a pas accédé pendant l’intervalle de temps le
plus long sera libérée.

Plus performante que FIFO


Cout de réalisation assez élevé (complexité de l’algorithme,
occupation de la mémoire)
Utilisation d’un tableau avec des intervalles et des pages pour la
modélisations
alGorithme de remplaCement de
paGe

 Least Frequently Use (LFU)


Pendant un intervalle de temps donné, on détermine la page
la moins fréquemment utilisée pour la décharge.

Mise en œuvre équivalente a celle de LRU mais plus performante

Garantir que la page qui vient d’être chargée reste en mémoire


pendant un minimum de temps afin de ne pas la décharger
aussitôt.
FIN

Vous aimerez peut-être aussi