Vous êtes sur la page 1sur 17

THEME : TECHNIQUES D’ALLOCATION DE LA MÉMOIRE

SOMMAIRE

INTRODUCTION GÉNÉRALE ............................................................................................................. 2


I. DÉFINITION ET RÔLES ................................................................................................... 2
II. TECHNIQUES D’ALLOCATION DE LA MÉMOIRE ET LEURS
FONCTIONNEMENTS .............................................................................................................. 3
1. Allocation contiguë de la mémoire ...................................................................................... 3
a) Partitionnement................................................................................................................ 3
b) La Fragmentation............................................................................................................. 6
2. Allocation non contiguë de la mémoire ............................................................................... 8
a) Pagination ........................................................................................................................ 8
b) Segmentation ................................................................................................................. 13
CONCLUSION GENERALE ............................................................................................................... 17

1
Devoir rédigé par : BAHOUACK ABEGA, DEMANOU RENEL CADIN et DINAMOU MICHAEL
THEME : TECHNIQUES D’ALLOCATION DE LA MÉMOIRE

INTRODUCTION GÉNÉRALE

La mémoire principale est le lieu où se trouvent les programmes et les données quand
le processeur les exécute. On l’oppose au concept de mémoire secondaire, représentée par
les disques, de plus grande capacité, où les processus peuvent séjourner avant d’être
exécutés. La nécessité de gérer la mémoire de manière optimale est toujours fondamentale,
car en dépit de sa grande disponibilité, elle n’est, en général, jamais suffisante. Ceci en
raison de la taille continuellement grandissante des programmes.

Nous allons dans un premier temps définir quelques termes, donner les rôles de la
gestion de la mémoire ; ensuite nous expliquerons les techniques d’allocations de la
mémoire et leurs fonctionnements et une conclusion générale mettra fin à notre travail.

I. DÉFINITION ET RÔLES

Le gestionnaire de mémoire est un sous-ensemble du système d'exploitation. Son rôle


est de partager la mémoire entre l'OS et les diverses applications. Le terme "mémoire" fait
surtout référence la mémoire principale, c'est à dire à la RAM, mais la gestion de celle-ci
demande la contribution de la mémoire auxiliaire (mémoire de masse, spacieuse mais lente)
et à la mémoire cache (rapide mais de taille restreinte).
Voici quatre fonctions qu'on attend du gestionnaire de mémoire :
L'allocation de la mémoire aux processus
- Répertorier les emplacements libres de la mémoire
- Allouer la mémoire nécessaire aux nouveaux processus
- Récupérer la mémoire des processus qui s'achèvent
Cette récupération peut nécessiter une réallocation des processus en cours pour
optimiser l'emploi de la mémoire. La zone mémoire attribuée à un processus peut
donc changer au cours de son exécution.
Il faut s'assurer que les adresses générées par chaque processus ne concernent que la zone
mémoire qui lui est impartie, sans quoi, l'intégrité du système d'exploitation et des autres
processus n'est pas garantie. Certaines zones mémoire doivent pourtant servir
simultanément à plusieurs processus : le code de fonctions servant à plusieurs applications
qui tournent en parallèle ou les données utilisées simultanément par divers processus

2
Devoir rédigé par : BAHOUACK ABEGA, DEMANOU RENEL CADIN et DINAMOU MICHAEL
THEME : TECHNIQUES D’ALLOCATION DE LA MÉMOIRE

La segmentation de l'espace d'adressage. Les programmes sont subdivisés en segments : le


code, les données modifiables, celles qui ne le sont pas, la pile. On attend donc du
gestionnaire de mémoire qu'il permette la segmentation de l'espace d'adressage des
Programmes pour les raisons suivantes :
- pouvoir coder les segments séparément et les paramétrer en fonction de
l'application
- permettre des degrés de protection différents selon les segments ( lecture
seule, exécution)
- accepter le partage de certains segments.
La mémoire virtuelle Elle offre aux applications une mémoire de taille
supérieure à celle de la mémoire principale. L'espace d'adressage qu'offre la
mémoire centrale est parfois insuffisant.

II. TECHNIQUES D’ALLOCATION DE LA MÉMOIRE ET


LEURS FONCTIONNEMENTS

1. Allocation contiguë de la mémoire

Nous avons plusieurs programmes à exécuter


Nous pouvons les charger en mémoire les uns après les autres le lieu où un programme est
lu n’est connu qu’au moment du chargement.
Besoins de matériel : un registre de base et un registre borné suffisent à décrire l’espace
de l’adresse du processus
a) Partitionnement

Partitions Fixes
Mémoire principale subdivisée en régions distinctes : partitions. Les partitions sont
soit de même taille ou de tailles inégales. N’importe quel programme peut être affecté à
une partition qui soit suffisamment grande.
o Un programme doit tenir sur une seule partition ;
o Une partition ne peut contenir qu’un seul programme
 Problème de fragmentation : Il y’a assez d’espace pour exécuter un programme,
mais cet espace est fragmenté de façon non contiguë.
o Fragmentation interne : espace entre les partitions ;
o Fragmentation externe : espace dans les partitions ;

3
Devoir rédigé par : BAHOUACK ABEGA, DEMANOU RENEL CADIN et DINAMOU MICHAEL
THEME : TECHNIQUES D’ALLOCATION DE LA MÉMOIRE

Partitions Fixes de Tailles Égales : Le principe consiste à diviser la mémoire en N


partitions de même taille. Chaque nouvelle tâche est placée dans la première partition libre.

 Problèmes : La taille de partition doit être assez grande pour n’importe quel
processus. Gros problème de fragmentation interne.

4
Devoir rédigé par : BAHOUACK ABEGA, DEMANOU RENEL CADIN et DINAMOU MICHAEL
THEME : TECHNIQUES D’ALLOCATION DE LA MÉMOIRE

Partitions Fixes de Tailles Inégales : Le principe ici est de diviser la mémoire en N


partitions qui peuvent être de tailles inégales et associer à chaque partition une file
d’attente. Chaque nouvelle tâche est placée dans la file d’attente de la plus petite partition
qui peut la contenir. L’espace non utilisé dans une partition est perdu (problème de
fragmentation)

Partitions Dynamiques : Initialement, la mémoire n’est pas partitionnée. Les partitions se


créent au fur et à mesure que les processus entrent et sortent de la mémoire. Ils varient en
nombre, en taille et en position.

5
Devoir rédigé par : BAHOUACK ABEGA, DEMANOU RENEL CADIN et DINAMOU MICHAEL
THEME : TECHNIQUES D’ALLOCATION DE LA MÉMOIRE

Cette technique utilise la technique de va-et-vient ou encore SWAPPING : La mémoire


est une ressource ne pouvant pas contenir tous les processus. Il est alors nécessaire de déplacer
quelques processus sur le disque et de les ramener en RAM avant de les exécuter.

 Problème : On a le problème de fragmentation externe dans ce cas.

b) La Fragmentation

Les algorithmes d’allocation de la mémoire contiguë précédents, produisent la


fragmentation de la mémoire. En effet, suite aux différentes entrées et sorties de processus, des
miettes séparées se froment dans la mémoire.

6
Devoir rédigé par : BAHOUACK ABEGA, DEMANOU RENEL CADIN et DINAMOU MICHAEL
THEME : TECHNIQUES D’ALLOCATION DE LA MÉMOIRE

Chaque fois qu’un processus est chargé ou supprimé du bloc de mémoire physique, il
crée un petit trou dans l’espace mémoire appelé fragment. En raison de la fragmentation,
le système ne parvient pas allouer l’espace mémoire contigu à un processus même s’il a la
quantité de mémoire demandée mais, de manière non contiguë. La fragmentation est
classée en deux catégories :

 La fragmentation interne
 La fragmentation externe.

Cette classification affecte la vitesse d’accès aux données du système. La différence


clé entre la fragmentation interne et externe se produit lorsque les blocs de mémoire de
taille fixe sont alloués au processus sans se soucier de la taille du processus, et une
fragmentation externe se produit lorsque les processus sont alloués dynamiquement.

Le tableau ci-dessous donne les raisons, les différences et les solutions derrière la
fragmentation interne et externe :

Fragmentation interne Fragmentation externe


Définition : cela se produit lorsque les Définition : cela se produit lorsque
blocs de mémoire de taille sont alloués au l’espace mémoire de taille variable est
processus alloué dynamiquement au processus

Occurrence : lorsque la mémoire affecté Occurrence : lorsque le processus est


au processus est logement plus grande que supprimé de la mémoire, il crée l’espace
la mémoire demandée par le processus cela libre dans la mémoire provoquant une
crée de l’espace libre dans le bloc alloué fragmentation externe
provoquant une fragmentation interne
Solution : la mémoire doit être Solution : compaction, pagination et
partitionnée en blocs de taille variable et segmentation
affecter le meilleur bloc au processus.

7
Devoir rédigé par : BAHOUACK ABEGA, DEMANOU RENEL CADIN et DINAMOU MICHAEL
THEME : TECHNIQUES D’ALLOCATION DE LA MÉMOIRE

La fragmentation interne et externe est liée à l’espace mémoire inutilisé ou à la perte de


mémoire. La fragmentation interne souffre d’une allocation de mémoire inefficace qui se
produit lorsque la mémoire allouée à un processus est supérieur à ce qui est demandé, laissant
l’espace inutilisé dans le bloc de mémoire causant la fragmentation interne. Une fois le
processus retiré de la mémoire physique, l’espace libre est distribué ici et là et aucun bloc de
mémoire adjacent ne peut être trouvé, provoquant une fragmentation externe. Cependant, les
deux fragmentations peuvent être évitées. La fragmentation interne peut être réduite en allouant
dynamiquement la mémoire aux processus, tandis que la fragmentation externe peut être évitée
par le compactage, la pagination et la segmentation.

2. Allocation non contiguë de la mémoire


Afin de réduire la fragmentation, tous les systèmes d’aujourd’hui utilisent l’allocation
non contiguë pour diviser un programme en morceaux et permettre l’allocation séparée de
chaque morceau. Les morceaux sont beaucoup plus petits que le programme entier et donc
permettent une utilisation plus efficace de la mémoire. Les petits trous peuvent être utilisés
plus facilement. Il y a deux techniques de base pour faire ceci : la pagination et la
segmentation.

a) Pagination

La pagination utilise des parties de programme arbitraires (morcellement du


programme en pages de longueur fixe).

Définition : La mémoire est partitionnée en petits morceaux de même taille : les pages
physiques ou cadres ou frames. Chaque processus est aussi partitionné en petits morceaux
de même taille appelés pages logiques (pages). Les pages logiques d’un processus peuvent
donc être assignées aux cadres disponibles n’importe où en mémoire principale.
Conséquences : un processus peut être éparpillé n’importe où dans la mémoire physique. La
fragmentation externe est éliminée.
Exemple : Supposons que le processus B de la figure suivante se termine ou est suspendu.

8
Devoir rédigé par : BAHOUACK ABEGA, DEMANOU RENEL CADIN et DINAMOU MICHAEL
THEME : TECHNIQUES D’ALLOCATION DE LA MÉMOIRE

• Nous pouvons maintenant transférer en mémoire un processus D, qui demande 5 cadres. Bien
qu’il n’y ait pas 5 cadres contigus disponibles.
• La fragmentation externe est limitée au cas où le nombre de pages disponibles n’est pas
suffisant pour exécuter un processus en attente
• Seule la dernière page d’un processus peut souffrir de fragmentation interne. En moyenne
1/2 cadre par processus.

9
Devoir rédigé par : BAHOUACK ABEGA, DEMANOU RENEL CADIN et DINAMOU MICHAEL
THEME : TECHNIQUES D’ALLOCATION DE LA MÉMOIRE

Table des pages

• Le SE doit maintenir une table de pages pour chaque processus ;


• Chaque descripteur de pages contient le numéro de cadre où la page correspondante est
physiquement localisée ;
• Une table de pages est indexée par le numéro de la page afin d’obtenir le numéro du cadre
• Une liste de cadres disponibles est également maintenue (free frame List).

Traduction d’Adresses :
• L’adresse logique est facilement traduite en adresse physique
 Car la taille des pages est une puissance de 2
 Les pages débutent toujours à des adresses qui sont des puissances de 2
 Qui ont autant de 0 à droite que la longueur de l’offset
 Donc ces 0 sont remplacés par l’offset (déplacement)

10
Devoir rédigé par : BAHOUACK ABEGA, DEMANOU RENEL CADIN et DINAMOU MICHAEL
THEME : TECHNIQUES D’ALLOCATION DE LA MÉMOIRE

• Exemple : si 16 bits sont utilisés pour les adresses et que la taille d’une
page = 1K : on a besoin de 10 bits pour le décalage, laissant ainsi 6 bits pour le
numéro de page
• L’adresse logique (p, d) est traduite en adresse physique (f,d) en utilisant
p comme index sur la table des pages et en le remplaçant par l ’adresse f trouvée
depuis la table.
 d ne change pas

11
Devoir rédigé par : BAHOUACK ABEGA, DEMANOU RENEL CADIN et DINAMOU MICHAEL
THEME : TECHNIQUES D’ALLOCATION DE LA MÉMOIRE

12
Devoir rédigé par : BAHOUACK ABEGA, DEMANOU RENEL CADIN et DINAMOU MICHAEL
THEME : TECHNIQUES D’ALLOCATION DE LA MÉMOIRE

b) Segmentation

Chaque processus est constitué d'un ensemble de segments. Chaque segment est un
espace linéaire.
Les segments sont des espaces d'adressages indépendants de différentes longueurs et
qui peuvent même varier en cours d'utilisation. Ils correspondent à des subdivisions logiques
déterminées par le programmeur ou par le compilateur.
Les segments contiennent des informations de même nature : le code, les données, la
pile, des tables, etc. Il est dès lors possible d'attribuer des protections adaptées à chaque type
de segment : un segment de code peut être déclaré en exécution seule, une table de constantes
en lecture seule mais pas en écriture ni en exécution. Certaines zones de code en exécution
seule peuvent être partagées par plusieurs processus ; cela se fait par exemple pour des
bibliothèques de sous-programmes.
L'accès aux segments se fait via une table de segments. Chaque entrée de la table
comporte l'adresse de départ du segment et sa taille.
L'adresse logique est constituée du numéro de segment et d'un offset. Contrairement aux
pages dont le fonctionnement est transparent pour le programmeur, les segments sont des
entités logiques qu'il connaît et manipule. Il distingue les deux informations contenues dans
l'adresse : le numéro du segment et l'offset.
Le numéro de segment sert d'index pour retrouver l'adresse du début du segment dans
la table de segment. Cet offset doit être inférieur à la taille du segment consignée elle aussi
dans la table de segment. Si ce n'est pas le cas, une erreur est générée qui provoque l'abandon
du programme. L'offset est ensuite ajouté à l'adresse de début de segment pour former
l'adresse physique.
La Segmentation utilise des parties de programme qui ont une valeur logique (des
segments: main, méthodes, variables globales, objets, matrices, etc.)

13
Devoir rédigé par : BAHOUACK ABEGA, DEMANOU RENEL CADIN et DINAMOU MICHAEL
THEME : TECHNIQUES D’ALLOCATION DE LA MÉMOIRE

Les segments comme unités d’allocation mémoire :

Étant donné que les segments sont plus petits que les programmes entiers, cette
technique implique moins de fragmentation

 Mécanisme pour la segmentation : Un tableau contient l’adresse de début de tous


les segments dans un processus;
 Chaque adresse dans un segment est ajoutée à l’adresse de début du segment par
la MMU

14
Devoir rédigé par : BAHOUACK ABEGA, DEMANOU RENEL CADIN et DINAMOU MICHAEL
THEME : TECHNIQUES D’ALLOCATION DE LA MÉMOIRE

 le tableau des segments contient: descripteurs de segments adresse de base longueur


du segment Infos de protection, on verra…
 Dans le PCB du processus il y aura un pointeur à l’adresse en mémoire du tableau
des segments
 Il y aura aussi le nombre de segments dans le processus
 Au moment de la commutation de contexte, ces infos seront chargées dans les
registres appropriés d’UCT

15
Devoir rédigé par : BAHOUACK ABEGA, DEMANOU RENEL CADIN et DINAMOU MICHAEL
THEME : TECHNIQUES D’ALLOCATION DE LA MÉMOIRE

 Exemple : de la segmentation simple

 Partage de segments : le segment 0 est partagé

16
Devoir rédigé par : BAHOUACK ABEGA, DEMANOU RENEL CADIN et DINAMOU MICHAEL
THEME : TECHNIQUES D’ALLOCATION DE LA MÉMOIRE

Mécanisme pour 2 processus qui exécutent un seul programme sur données différentes

La même instruction, si elle est exécutée :


 Par le proc 1, son adresse est modifiée par le contenu du reg de base 1
 Par le proc 2, son adresse est modifiée par le contenu du reg de base 2
Ceci fonctionne même si l’instruction est exécutée par plusieurs UCT au même instant, si
les registres se trouvent dans des UCT différentes

Segmentation et protection
 Chaque entrée dans la table des segments peut contenir des infos de protection :
longueur du segment privilèges de l’usager sur le segment : lecture, écriture,
exécution Si au moment du calcul de l’adresse on trouve que l’usager n’a pas de
droit d’accès

CONCLUSION GENERALE

Nous pouvons retenir que la gestion de mémoire repose sur ses différents concepts :

 Problème de fragmentation (interne et externe), complexité et efficacité des


algorithmes
 Deux méthodes très utilisées : pagination et segmentation
 Problème en pagination et segmentation : taille des tableaux de segments et de
pages, pagination de ces tableaux, efficacité fournie par la translation.

17
Devoir rédigé par : BAHOUACK ABEGA, DEMANOU RENEL CADIN et DINAMOU MICHAEL