Princess Nora University
Département Informatique
Système
d’exploitation 1
1 2023-2024
Chapitre-4
Gestion de la mémoire
Introduction
Chapitre 4: La Gestion de la mémoire
1. Introduction
2. La mémoire et le gestionnaire de la mémoire
3. Le Swapping
4. Exigence de gestion de la mémoire
5. Les techniques de gestion de la mémoire
3
OBJECTIFS:
➢ Fournir une description détaillée des différentes manières pour
organiser la mémoire
➢ Discuter de diverses techniques de gestion de la mémoire,
comme la pagination et la segmentation
4
Introduction
5 5
Introduction
La mémoire est une ressource importante qui doit être gérée avec
attention.
Même si la quantité de mémoire d’un ordinateur a beaucoup
augmentée, la taille des programmes s’accroît aussi.
La situation idéale serait de donner à chaque programmeur une
mémoire infiniment grande, infiniment rapide, non volatile et, de
plus, bon marché. La technologie ne fournit pas de telles
mémoires.
Le SE a le rôle de coordonner l’utilisation des différentes mémoires.
6
Introduction
Une machine comporte différents types de mémoire, de la plus
rapide/coûteuse/petite à la plus lente/bon marché/grande.
7
La mémoire et le gestionnaire
de la mémoire
8 8
La mémoire et le gestionnaire de la mémoire
Mémoire: grand tableau de mots (octets), chacun possédant sa propre
adresse.
La CPU extrait les instructions de la mémoire en fonction de la valeur
d’un compteur d’instructions.
Système de gestion de la mémoire (Memory manager ): partie du SE qui
gère la hiérarchie de stockage
Suivre les parties de la mémoire qui sont utilisées ou non utilisées.
Allouer/libérer espace mémoire aux processus.
Contrôler le swapping entre la mémoire principale et le disque.
9
La mémoire et le gestionnaire de la mémoire
Mémoire principale: Emplacement 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.
10
La mémoire et le gestionnaire de la mémoire
La gestion efficace de la mémoire est indispensable dans un
système de multiprogrammation.
Termes de gestion de la mémoire
Cadre Un bloc de la mémoire principale de longueur fixe.
Un bloc de données de longueur fixe et qui réside dans la mémoire
secondaire (comme le disque). Une page de données peut
Page
temporairement être copié dans un cadre de mémoire principale.
Un bloc de données de longueur variable et qui réside dans la
mémoire secondaire. Un segment entier peut temporairement être
copié dans une région disponible de mémoire principale
Segment (segmentation).
Un segment peut être divisé en pages qui peuvent être copiés dans
la mémoire principale (segmentation combinée et pagination)
11
La mémoire et le gestionnaire de la mémoire
Tous les processus ont besoin d'être ordonnancés de façon à ce que tous les
utilisateurs obtiennent l'illusion que leurs processus résident dans la mémoire RAM.
La fonction du gestionnaire de la mémoire:
Garder une trace des parties de la mémoire qui sont en cours
d'utilisation et les parties qui ne le sont pas.
Allouer de la mémoire à des processus quand ils en ont besoin et la
désallouer quand ils achèvent leurs traitements.
Gérer le swapping entre la mémoire principale et le disque lorsque la
mémoire principale n’a pas assez d’espace pour contenir tous les
processus.
12
Swapping
13 13
Le swapping (le va-et-vient)
Recopier (swap out) sur une “mémoire de réserve” (un espace sur le
disque) les processus non actifs ;
Ramener (swap in) en mémoire centrale les processus réactivés.
14
Exigence de gestion de la
mémoire
15 15
Exigence de gestion de la mémoire
Divers mécanismes et politiques sont nécessaires à la gestion
efficace de la mémoire:
1. Réallocation
2. Protection
3. Partage
4. Organisation logique
5. Organisation physique
16
Exigence de gestion de la mémoire
1. Relocation
Dans un système multiprogrammation, la mémoire principale disponible est
généralement partagée entre un certain nombre de processus.
Généralement, un programmeur, au moment de l’exécution de son programme, ne
peut pas connaitre en avance quels autres programmes qui sont résidents dans
la mémoire principale.
Une fois qu'un programme est chargé sur le disque (enregistrer), il serait impossible
de savoir si au cours de son prochain chargement dans la mémoire principale
(exécution) d'être placé dans la même zone de mémoire principale comme
précédemment ou non.
Nous ne pouvons pas savoir à l'avance où le programme sera placé dans la
mémoire.
17
Exigence de gestion de la mémoire
1. Relocation
Le système d'exploitation devra connaître l'emplacement des
processus:
18
Exigence de gestion de la mémoire
2. Protection
Chaque processus doit être protégé contre les interférences
indésirables causées par d'autres processus, même accidentelle ou
intentionnelle.
Les programmes dans d'autres processus n’ont pas le droit de se
référencer à des emplacements mémoires occupés par un autre
processus à des fins de lecture ou d'écriture sans autorisation de ce
dernier.
La satisfaction de l'exigence de réallocation augmente la difficulté
de satisfaire à l'exigence de protection.
19
Exigence de gestion de la mémoire
2. Protection
Puisque l'emplacement d'un programme dans la mémoire principale est
imprévisible, il est impossible de vérifier lors de la compilation les
adresses absolues pour assurer sa protection.
Toutes les références de mémoire générées par un processus doivent
être vérifiées au moment de l'exécution pour s’assurer qu'ils ne
portent que sur l'espace mémoire alloué à ce processus.
20
Exigence de gestion de la mémoire
2. Protection
un processus utilisateur ne peut pas accéder à aucune partie du
système d'exploitation, ni programme, ni données.
Sans des procédures spéciaux (autorisation), un processus ne
peut pas accéder à la zone de données d'un autre processus.
➢ Le processeur doit être en mesure d'interrompre de telles
instructions au point d'exécution.
21
Exigence de gestion de la mémoire
2. Protection
l'exigence de protection de la mémoire doit être assurée par le
processeur (matériel) et non pas par le système d'exploitation
(logiciel).
Ceci est parce que le système d'exploitation ne peut pas anticiper
toutes les adresses mémoire qu'un programme l’occupe.
Même si une telle anticipation était possible, il serait extrêmement
laborieuse pour surveiller chaque programme à l'avance pour les
éventuelles violations des adresses mémoire.
22
Exigence de gestion de la mémoire
2. Protection
Protection fondamentale : en général, chaque processeur
dispose de 2 registres
REGISTRE DE BASE : contient l’adresse début de la zone de
processus
REGISTRE LIMITE : indique la taille de la zone de processus.
➢ Permet de contrôler que les accès sont limités à la zone
allouée au processus en cours!
23
Exigence de gestion de la mémoire
2. Protection
Si le registre de base contient la valeur
300,040 et le registre limite est
120,900; le programme peut légalement
accéder à toutes les adresses de
300,040 à 420,939 (inclus).
La protection de cette espace mémoire
est accomplie par le processeur qui
compare chaque adresse générée en
mode utilisateur avec les registres.
24
Exigence de gestion de la mémoire
2. Protection
Toute tentative par le programme qui s’exécute en mode utilisateur pour accéder à
un espace mémoire du système d'exploitation ou espaces mémoires des autres
utilisateurs provoque une erreur fatale.
25
Exigence de gestion de la mémoire
3. Partage
Tout mécanisme de protection doit offrir une souplesse nécessaire pour
permettre à plusieurs processus d’accéder à une même zone de la mémoire
principale.
Exemple:
Si un certain nombre de processus sont en cours d'exécuter le même
programme, il est avantageux de permettre à chaque processus d’accéder à la
même copie du programme plutôt que d'avoir sa propre copie distincte.
Le système de gestion de la mémoire doit donc permettre un accès
contrôlé aux zones de mémoire partagées sans compromettre la protection
essentielle!
26
Exigence de gestion de la mémoire
4. Organisation Logique/physique
Une adresse mémoire physique : une « case » dans la mémoire
centrale ;
Une adresse mémoire logique : une adresse utilisée par un
programme et est calculée lors de la compilation.
Les adresses de l'espace d'adressage du processus ne sont pas les
adresses physiques.
⇒ Nécessite de faire la correspondance entre adresse physique et
adresse logique ➔ Adresse physique ≠ Adresse logique
27
Exigence de gestion de la mémoire
4. Organisation Logique/physique
Le CPU manipule des adresses logiques (emplacement relatif).
Les programmes ne connaissent que des adresses logiques, ou virtuelles.
L'espace d'adressage logique (virtuel) est donc un ensemble d'adresses pouvant
être générées par un programme.
L'unité mémoire manipule des adresses physiques (emplacement mémoire).
Elles ne sont jamais vues par les programmes utilisateurs.
L'espace d'adressage physique est un ensemble d'adresses physiques
correspondant à un espace d'adresses logiques.
28
Exigence de gestion de la mémoire
4. Organisation Logique/physique
Au moment de l’exécution, il est nécessaire de convertir les adresses logiques en
adresses physiques!
▪ Imaginons un système où une adresse physique est obtenue en ajoutant à
chaque adresse logique (manipulée par le CPU) l’adresse de base contenue
dans un registre.
29
Schéma de conversion
Adresse physique= adresse logique + registre
de transition
❑ registrede transition
contient 14000
o si l’adresse logique =0 alors
l’adresse physique= 0+14000
=14000
o si l’adresse logique =346
adresse physique=
346+14000=14346
30
Exigence de gestion de la mémoire
4. Organisation Logique/physique
300,040 420,939
420,440
406,440
31
Les techniques de gestion de
la mémoire
32 32
Les techniques de la gestion de Mémoire
Les méthodes d’allocation
Méthodes d’allocation Pagination
Segmentation
contiguë
Partitionnement Partitionnement
statique dynamique.
(Fixed-partition (Variable size method)
allocation)
33
Les techniques de gestion de la mémoire
Durant la phase de chargement du processus, l’OS doit connaître le
mode d’allocation à utiliser.
Pour un espace donné on peut choisir deux modes d’allocation :
Allocation contiguë : consiste à placer la totalité d’un programme à
des adresses consécutives.
➢ Espace d’adressage linéaire.
Allocation non contiguë : consiste à fractionner le programme et à
placer les différents fragments à des adresses dispersées.
34
Les techniques de gestion de la mémoire
Allocation contiguë:
Partitionnement statique.
Partitions fixes.
Partitionnement dynamique.
Partitions variable.
Allocation non contiguë
Segmentation.
Pagination simple.
Pagination à la demande.
Les systèmes récents utilisent la mémoire virtuelle
35
Les techniques de gestion de la mémoire
1. Les méthodes d’allocation contiguë
❑ La Méthode la plus simple :
Mémoire principale subdivisée en régions distinctes:
partitions.
Les partitions sont soit de même taille ou de tailles inégales.
Chaque partition peut contenir un processus:
Limiter du nombre de processus au nombre de partitions.
Quand une partition est libérée, un autre processus est choisi
36
Les techniques de gestion de la mémoire
1. Les méthodes d’allocation contiguë
1.1 Partition fixe
tout processus dont la taille est
inférieure ou égale à la taille de la
partition peut être chargé dans
n’importe quelle partition disponible.
Si toutes les partitions sont pleines, le
système d'exploitation peut décharger
(swapper out) les processus qui ne
sont ni à l’état prêt ni à l’état
exécution et charger (swap in) d’autres
processus.
37
Les techniques de gestion de la mémoire
1. Les méthodes d’allocation contiguë
1.1 Partition fixe
Un programme peut être trop
volumineux pour être allouer dans
une partition.
Dans ce cas, le programmeur doit
concevoir un programme de sorte
qu’une seule partie du programme
doit être chargée dans la mémoire
principale à un instant donné
(module).
38
Les techniques de gestion de la mémoire
1. Les méthodes d’allocation contiguë
1.1 Partition fixe
Etant donnée la taille d’une partition et la taille d’un processus, 3 cas se présentent:
Cas 1: taille de la partition = taille de processus ➔ Aucune perte de mémoire
Cas 2: taille de la partition > taille de processus ➔ fragmentation interne --
perte de mémoire
Cas 3 : taille de la partition < taille de processus ➔ fragmentation externe
P4
P3
5Ko
P2
2Ko
P1
1Ko
SE
39
Les techniques de gestion de la mémoire
1. Les méthodes d’allocation contiguë
1.2 Partition variable
Pour surmonter certaines difficultés avec partitionnement statique,
une approche connue sous le partitionnement dynamique a été
développée.
Avec le partitionnement dynamique, les partitions varient en tailles
et en nombre.
Quand un processus est mis en mémoire principale, il est affecté
exactement autant de mémoire qu’elle a besoin et pas plus!
40
Les techniques de gestion de la mémoire
1. Les méthodes d’allocation contiguë
1.2 Partition variable
41
Les techniques de gestion de la mémoire
1. Les méthodes d’allocation contiguë
1.2 Partition variable
Au cours de temps, la mémoire devient de plus en plus fragmentée, et
l'utilisation de la mémoire diminue.
Ce phénomène est connu sous le nom de fragmentation externe, indiquant
que la mémoire externe à l'ensemble des partitions est de plus en plus
fragmentée.
Une technique pour surmonter la fragmentation externe est le compactage:
De temps en temps, le système d'exploitation déplace les processus de sorte
qu'ils deviennent contigus et la totalité de la mémoire libre deviennent
ensemble dans un seul bloc.
Le compactage de la mémoire consomme de temps!
42
Les techniques de gestion de la mémoire
1. Les méthodes d’allocation contiguë
1.2 Partition variable
La mémoire est formée d’un ensemble de zones libres et de zones
occupées (allouées).
Allouer un programme P de taille « Taille(P) » :
Trouver une zone libre telle que Taille(zone libre) >= Taille(P)
3 stratégies principales :
La première zone qui convient (le premier ajustement) --
First Fit
Le meilleur ajustement -- Best Fit
Le pire ajustement -- Worst Fit
43
Les techniques de gestion de la mémoire
1. Les méthodes d’allocation contiguë
1.2 Partition variable
First Fit
Trouver la première zone libre suffisamment grande pour pouvoir y placer le
programme.
n-1 n-1
150K 150K
P6 P6
80K
100K 100K
P5 P5
Programme P7 40K
120K P7
P3 P3
60K 60K
Système Système
0 0
☺ Solution simple, peu coûteuse et la recherche est accélérée.
Concentration des résidus en tête de la liste chaînée des zones libres!
44
Les techniques de gestion de la mémoire
1. Les méthodes d’allocation contiguë
1.2 Partition variable
Best Fit
Chercher dans toute la liste des zones libre, et choisir la plus petite zone libre qui puisse
contenir le programme à allouer.
n-1
Produire le plus petit trou résiduel.
n-1 150K
150K
P6
P6 20K P7
100K 80K P5
P5 120K
120K Programme P7 P3
P3 60K
60K Système
0
Système
0
Parcourir toute la liste chaînée de zones libre → pas assez efficace
Trier (ordre croissant) la liste selon les tailles des zones libres
Génération de fragments qui risquent d’être inutilisables!
45
Les techniques de gestion de la mémoire
1. Les méthodes d’allocation contiguë
1.2 Partition variable
Worst Fit
Politique du plus grand résidu.
Chercher à placer un programme dans la plus grande zone libre.
n-1 n-1
70K
150K
P7
P6 P6
100K 80K 100K
P5 P5
120K
120K Programme P7
P3 P3
60K 60K
Système Système
0 0
46
Les techniques de gestion de la mémoire
1. Les méthodes d’allocation contiguë
1.3 Fragmentation
Fragmentation interne : certains processus peuvent ne pas utiliser
toutes la mémoire qui leur est allouée.
Exemple – Méthode de partition fixe
Fragmentation externe : il se peut qu’il n’y ait pas de segment
continue de mémoire pouvant accueillir un processus alors que la
somme de l’espace dans les zones libres serait suffisant
Exemple – Méthode de partition variable
47
Les techniques de gestion de la mémoire
1. Les méthodes d’allocation contiguë
1.3 Fragmentation
Solutions du problème de la fragmentation
1- Le compactage
Objectif: Brasser les contenus de la mémoire afin de placer toute la mémoire
libre ensemble dans un seule bloc.
Le compactage n’est pas toujours possible. Quand il est possible, nous
devons estimer son coût. . Peut être très cher!
2- Les méthodes d’allocation non-contiguë
L’utilisation du techniques pagination et segmentation
48
Les techniques de gestion de la mémoire
2. Les méthodes d’allocation non-contiguë
Adresse logique ou adresse virtuelle (virtual address)
Adresse générée par la CPU.
Adresse physique
Adresse vue par l’unité de mémoire.
MMU (Memory Management Unit ): Dispositif matériel
qui fait la conversion des adresses virtuelles à physiques
49
Les techniques de gestion de la mémoire
2. Les méthodes d’allocation non-contiguë
2.1 Pagination
Pagination : découpage arbitraire d’un programme en plusieurs pages de
même taille ;
Méthode permettant de fractionner la mémoire en petits blocs égaux
(frames);
On va fractionner les programmes en petits blocs (pages) de même
dimension que les partitions de la mémoire.
Le terme frames ou cadre en français est utilisé car un cadre va tenir une
page d’information.
Taille de frame=taille du page
50
Les techniques de gestion de la mémoire
2. Les méthodes d’allocation non-contiguë
2.1 Pagination
Nous aurons cependant besoin d’une table pour pouvoir retrouver les adresses de
chaque partie de notre programme.
La Figure ci-dessous illustre la table des pages au temps (F). On peut y voir aussi une
liste des frames qui sont disponibles.
51
Les techniques de gestion de la mémoire
2. Les méthodes d’allocation non-contiguë
2.1 Pagination
objectif
Éliminer fragmentation en raison de larges segments.
Ne pas allouer de la mémoire qui ne sera pas utilisé.
Activez le partage fine.
Pagination: mémoire est divisée en pages de taille fixes
Pour l’ensemble la mémoire virtuelle et physique.
Autre terminologie
Une page virtuelle: la page
Une page physique: cadre
52
Les techniques de gestion de la mémoire
2. Les méthodes d’allocation non-contiguë
2.1 Pagination
Bits d’adresse = numéro de page + offset de page
Traduire le numéro d’une page virtuel (VPN) vers une numéro de
page physique (cadre) (PPN / PFN) à l'aide table de page.c
53
Les techniques de gestion de la mémoire
2. Les méthodes d’allocation non-contiguë
2.1 Pagination
Chaque adresse générée par la CPU est divisée en deux parties: un
numéro de page (p) et un décalage de page ou offset (d).
Le numéro de page est utilisé comme index dans une table de pages.
La taille d'une page est une puissance de 2, variant entre
512 octets et 1 Go par page, selon l'architecture de
l'ordinateur.
La table de page contient l'adresse de base de chaque page en
mémoire physique.
Cette adresse de base est combinée avec le décalage de page (d) pour
définir l'adresse de mémoire physique qui est envoyée à l'unité de
mémoire.
54
Les techniques de gestion de la mémoire
2. Les méthodes d’allocation non-contiguë
2.1 Pagination
m= nombre de bits de l’adresse logique
n= nombre de bits de l’offset
m-n= nombre de bits du numéro de page
Comment convertir de l’addresse logique a
l’adresse physique en pagination???
l’adresse physique= address de base + offset
= (frame # * taille du frame) + offset
55
Les techniques de gestion de la mémoire
2. Les méthodes d’allocation non-contiguë
2.1 Pagination
Exemple:
Soit:
n=2 bits
m=4 bits
Taille du page=4 B
Taille du mémoire physique=32 B
>>Convertir l’adresse logique (13) à une adresse physique.
Address logique= 13 (in décimal) = (1101) binaire
Page # = (11) (binaire) = 3 (décimal)
Offset= (01) (binaire) = 1 (décimal)
En utilisant la table de pages>>> frame # = 2
>>> l’adresse Physique du (13) =(2* 4) + 1=9
56
Les techniques de gestion de la mémoire
2. Les méthodes d’allocation non-contiguë
2.1 Pagination
Table des Pages avec Quelques Pages sur Disque
57
Les techniques de gestion de la mémoire
2. Les méthodes d’allocation non-contiguë
2.1 Pagination
• m-bits d’adresse virtuelles ou logiques,
• x-bits d’adresse physique,
• n-bits de l’offset
• L’espace des addresses logique = 2m
• L’espace des addresses physique = 2x
• L’espace des addresses logique (/size ou taille) = # of pages × page size
• L’espace des addresses physique (/size ou taille) = # of frames × frame size
• Taille du Page= taille du frame = 2n
• # of pages= 2m-n
• Nombre de pages pour un processus = taille process / taille du page (Rounded
up)
58
Les techniques de gestion de la mémoire
2. Les méthodes d’allocation non-contiguë
2.1 Pagination
Nous avons une adresse virtuelle sur 8-bits, adresse physique sur 10
bits, chaque page est de 64 octets.
1. Combien nous pouvons avoir de pages virtuelles?
▪ 28/64 = 4 pages virtuelles
2. Combien nous pouvons avoir des pages physique?
▪ 210/64 = 16 pages physiques
3. Combien nous pouvons avoir dans la table des pages?
▪ La table de pages contient 4 entrées
4. Étant donnée la table de page suivante = [2,5,1,8], quelle est
l’adresse physique pour l’adresse virtuelle 241?
241 = 11110001b
Taille de page = 3 = 11b
offset = 49 = 110001b
Page_table[3] = 8
Adresse physique = 8 * 64 +49 = 561 = 1000110001b
59
Les techniques de gestion de la mémoire
2. Les méthodes d’allocation non-contiguë
2.1 Pagination
Processeur 32bits, page de 4Ko → nombre de pages = 232/ 212
= 220 pages: une table de pages de plus que un million d’entrées!
Pagination n’a pas de fragmentation externe mais elle souffre de la fragmentation
interne (toujours dans la dernière page)
Exemple:
>> Un processus (p1) taille= 1030 octet , taille du page= 512 octet: Combien de
pages nécessaire pour P1??
# de pages= 1030/512≈ 2.01➔ 3 pages
La dernière pqge est Presque toujours vide…. (allouée mais non utilisée / Internal
fragmentation )
>> La fragmentation s’apparaît dans P1?
L’espace alloué dans les 2 première pages=2*512=1024B
L’espace alloué dans la dernière page (page#3) = 1030-1024= 6B
L’espace non utilisé dans la dernière page= total du fragmentation = 512-6=506 B
60
Les techniques de gestion de la mémoire
2. Les méthodes d’allocation non-contiguë
2.1 Pagination
Pagination supporte le partage en mémoire (possibilité de partager le
même code).
Exemple : considérons un système prenant en charge 40 utilisateurs,
chacun d'entre eux exécutant un éditeur de texte. Si l'éditeur de texte
comprend 150 Ko de code et que la taille moyenne des données
utilisateur est de 50 Ko.
Pas de partage→ l’espace alloué de mémoire = 8,000 KB
Si le code est partagé→ l’espace alloué de mémoire = 2,150 KB
Avantages du partage de mémoire :
Efficacité de l'espace (moins d'espace mémoire sera alloué)
Efficacité du temps (moins de temps de chargement)
61
Les techniques de gestion de la mémoire
2. Les méthodes d’allocation non-contiguë
2.1 Pagination
Partage de code dans un environnement de pagination
62
Les techniques de gestion de la mémoire
2. Les méthodes d’allocation non-contiguë
2.2 Segmentation
Segmentation : découpage d’un programme en fonction de sa
structure en plusieurs segments de tailles différentes.
63
Les techniques de gestion de la mémoire
2. Les méthodes d’allocation non-contiguë
2.2 Segmentation
La segmentation: dans cette solution l’espace d’adressage d’un processus est divisé
en segments, générés à la compilation. Chaque segment est repéré par son numéro S
et sa longueur variable L.
Un segment est un ensemble d’adresses virtuelles contiguës.
Une adresse n’est plus donnée de façon absolue, par rapport à l’adressage virtuel.
l’adresse est représentée par le couple (S,d), où S est le numéro de segment et d le
déplacement dans le segment ➔d є [0,L[.
Chaque segment peut croître indépendamment ;
Les segments peuvent être partagés entre plusieurs programmes ;
Une adresse est spécifiée par un numéro de segment et une adresse dans le segment
(offset).
64
Les techniques de gestion de la mémoire
2. Les méthodes d’allocation non-contiguë
2.2 Segmentation
Encore une fois, on sépare le programme en petites parties appelées chacune segment.
Ces segments n’ont pas à être de la même taille, il existe cependant une taille maximum
à la longueur d’un segment.
Comme pour la pagination, une adresse est constituée de deux parties : un numéro de
segment et un déplacement (offset)
Étant donné que les segments ne sont pas nécessairement de même longueur, la
segmentation est semblable au partitionnement dynamique.
L’addresse logique < numéro de segment, offset >
65
Les techniques de gestion de la mémoire
2. Les méthodes d’allocation non-contiguë
2.2 Segmentation
Table de segments: utilisé pour convertir des adresses logiques en adresses
physiques
Entrée de la table des segments = (segment de base, limite du segment)
Chaque processus a une table de segments.
❖ Base = adresse physique de début du segment en mémoire
❖ Limite = taille du segment
L’addresse logique est composée de:
❖ Numéro du segment (s) -- utilisé comme index dans la table de segments.
❖ offset du segment (d)- est ajouté à l'adresse de base pour définir l'adresse
de la mémoire physique
❖ L’offset de l'adresse logique doit être compris entre 0 et la limite du
segment. Si ce n'est pas le cas, on retourne vers l'OS (tentative d'adressage
logique au-delà de la fin du segment).
66
Les techniques de gestion de la mémoire
2. Les méthodes d’allocation non-contiguë
2.2 Segmentation
Segmentation hardware
Comment convertir une adresse logique en adresse physique en segmentation?
IF (offset < limit) then
Physical address= base address+ offset
Else
Trap (address error)
67
Les techniques de gestion de la mémoire
2. Les méthodes d’allocation non-contiguë
2.2 Segmentation
Exemple: Consider le système de segmentation suivant. Convertissez les
adresses logiques suivantes (données en décimal) en adresses physiques.
cas(1): L.A.= 2,53
Segment # =2 , Offset= 53
Base= 4300, Limit= 400
53<400 →TRUE
P.A. = 4300+53=4353
cas(2): L.A.= 0, 1222
Segment # =0 , Offset= 1222
Base= 1400, Limit=1000
1222 < 1000 →FALSE
So, it is illegal address, trap to OS (Adresse non valide)
68
Les techniques de gestion de la mémoire
2. Les méthodes d’allocation non-contiguë
2.2 Segmentation
• La segmentation souffre d’une fragmentation externe.
• Prise en charge de la partage en mémoire.
• Protection de la mémoire implémentée dans la segmentation
en comparant l’offset avec la limite [IF (offset < limit)].
69
Summary
Method Pros (++) Cons (- - )
CMA (Fixed-partition • Simple • Internal fragmentation.
method) • Does NOT Support sharing in memory
(i.e. NO space & time efficiency)
• The degree of multiprogramming is
bound by the number of partition (low
CPU utilization ).
• Amount of fragmentation is high
CMA (Variable- • Simple • External fragmentation.
partition method) • The degree of multiprogramming • Does NOT Support sharing in memory
is NOT bound (high CPU (i.e. NO space & time efficiency)
utilization ). • Amount of fragmentation is high
PAGING • Efficient method • Internal fragmentation.
• Support sharing in memory (i.e. • page table size
space & time efficiency) • Required HW support
SEGMENTATION • Efficient method • External fragmentation.
• Support sharing in memory (i.e. • Segment table size
space & time efficiency)
70
Merci
Fin du Chapitre 4
71