Gestion de la mémoire centrale Allocation de la mémoire ...
Transcript of Gestion de la mémoire centrale Allocation de la mémoire ...
Joëlle Delacroix AMSI1999/2000 1
Gestion de la mémoire centraleAllocation de la mémoire physique
Joëlle Delacroix AMSI1999/2000 2
Fonction de mémorisationMémoire centrale CPU
Bus donnéesBus adresses
Bus commandes
RAD
RDO
ensemble linéaire de mots d'adresses contigues
Joëlle Delacroix AMSI1999/2000 3
Monoprogrammation
0SYSTEME
D'EXPLOITATION
PROGRAMMEUTILISATEUR
P1
P1 : 100 ms calcul / 100 ms E/S50 % d'inactivité du processeur
NP1
CPU
DMA
Joëlle Delacroix AMSI1999/2000 4
Multiprogrammation : cas idéal
P1 : 100 ms calcul / 100 ms E/SP2 : 100 ms calcul / 100 ms E/S0 % d'inactivité du processeur
0SYSTEME
D'EXPLOITATION
PROGRAMMEUTILISATEUR
P1
PROGRAMMEUTILISATEUR
P2
N
P1
P2
CPU
DMA
Joëlle Delacroix AMSI1999/2000 5
Multiprogrammation
• Le degré de multiprogrammation est défini par nombre de processus présents en mémoire centrale
ici mettre la courbe
Joëlle Delacroix AMSI1999/2000 6
Multiprogrammation et gestion mémoire
• Trois problèmes à résoudre vis-à-vis de la mémoire :
– Définir un espace d'adressage indépendant pour chaque processus
– Protéger les espaces d'adressages des processus entre eux
– Allouer de la mémoire physique à chaque espace d'adressage
Joëlle Delacroix AMSI1999/2000 7
Multiprogrammation et gestion mémoire programme
ensemble insécable de mots contigus
ensemble sécable de mots contigus
espace d'adressage linéaire
allocation en partitionsfixes ou variables espace d'adressage paginé
espace d'adressage segmenté
Joëlle Delacroix AMSI1999/2000 8
Allocation d'un seul tenant
• Le programme est considéré comme un espace d'adresses insécable
• La mémoire physique est découpée en zones disjointes de taille fixe ou variable : les partitions
0
n
Partition 1
Partition 2
Partition 3programme
partitionensemble d'adresses physique contigues
Joëlle Delacroix AMSI1999/2000 9
Allocation en partition fixe
• A la génération du système, la mémoire est découpée en partitions de taille fixe, non nécessairement identiques
Allocation : choisir la partition libretelle queTaille (Zone) - Taille (programme)soit le plus petit possible
Partition 1
Partition 2
Partition 3
0
nprogramme
Joëlle Delacroix AMSI1999/2000 10
Allocation en partition fixe
n
Partition 1
Partition 2
Partition 3
Partition n-1
Partition n
Système0
nn+1 Programme
Partition 2
Système0
nn+1
Initialement
Programme
Programme
Programme
à l'instant t
Trous
Joëlle Delacroix AMSI1999/2000 11
Allocation en partition variable
• La mémoire est découpée en partitions de taille variable, c'est-à-dire adaptables à la taille des programmes.
• La mémoire est formée d'un ensemble de zones libres et de zones occupées (partitions allouées)
• Allouer un programme P de taille Taille(P) :trouver une zone libre telle que Taille (Zone Libre) > Taille (P)
Fisrt Fit : la première zone qui convientBest Fit : celle générant le moins de perte
Joëlle Delacroix AMSI1999/2000 12
Système0n
n+1 Programme 1
Système0n
n+1
Programme 2
Programme 4
Programme 3
Programme 5
ChargementZONELIBRE
ZONELIBRE
La mémoire est formée d'un ensemble de zones libreset de zones occupées (partitions allouées)
Programme 1
Système0n
n+1
Programme 3
Programme 5
Zone libre
Zone libre
Zone libre
Fin P2, P4
à l'instant t'à l'instant tInitialement
Joëlle Delacroix AMSI1999/2000 13
Allocation First Fit
0
Programme 6
Système
Programme 3
Programme 5
Zone libre
Zone libre
Zone libre
Zone libre
0
Programme 6
Système
Programme 3
Programme 5
Programme 7
Zone libre
Zone libre
Zone libren n
80K60K 60K
120K40KProgramme 7
100K 100K
150K 150K
Joëlle Delacroix AMSI1999/2000 14
Allocation Best Fit
0
Programme 6
Système
Programme 3
Programme 5
Zone libre
Zone libre
Zone libre
Zone libre
0
Programme 6
Système
Programme 3
Programme 5
Programme 7
Zone libre
Zone libre
Zone libre
n n
80K60K 60K
120K120 K
Programme 7
100K20K
150K 150K
Joëlle Delacroix AMSI1999/2000 15
Compactage de la mémoire
0 0
Programme 6
Système
Programme 3
Programme 5
Programme 7
Zone libre
Zone libre
Zone libre
Programme 6
Système
Programme 3
Programme 5
Programme 7
Zone libre
n n
180K60 K
120 KProgramme 8
20K
150K350 K
Fragmentation
Joëlle Delacroix AMSI1999/2000 16
Compactage de la mémoire
• Allocations et désallocations successives des programmes créent des trous (zones libres de taille insuffisante) en mémoire centrale : fragmentation
• Le compactage consiste à déplacer les programmes en mémoire centrale de manière à ne créer qu'une seule et unique zone libre.
• Le compactage est une opération très coûteuse. Elle suppose une translation des adresses dynamique.
Joëlle Delacroix AMSI1999/2000 17
LE CHARGEMENT statique : les adresses du programme sont translatées de la valeur de l'adresse d'implantation en MC au chargement
Editeur de texte
Compilateur
Editeur de liensChargeur
0adr
adr +
adresse d'implantation
Chargementstatique
Adresse d'implantationen mémoire centrale
programme relogeableExécutable sur disque
Exécutable en mémoire
Joëlle Delacroix AMSI1999/2000 18
LE CHARGEMENT dynamique: les adresses du programme sont translatées de la valeur de l'adresse d'implantation en MC à l'exécution
Editeur de texte
Compilateur
Editeur de liens Chargeur
0
Adresse d'implantationen mémoire centrale
adr
adr
Chargementdynamique
Registre de translation
programme relogeableExécutable sur disque
Exécutable en mémoire
Joëlle Delacroix AMSI1999/2000 19
Compactage
adr
adr
Registre de translation
• Déplacer un programme : modifier la valeur du registre de translation
Joëlle Delacroix AMSI1999/2000 20
Compactage de la mémoire centrale
Systèmed'exploitation
P1 200K
P2 100K
P3 200K
P4 400K
400K
300K
200K
Systèmed'exploitation
P1 200K
P2 100KP3 200K
P4 400K
900K
Systèmed'exploitation
P1 200K
P2 100K
P4 400K
P3 200K
900K
Systèmed'exploitation
P1 200K
P2 100K
P4 400K
P3 200K
900K
600K déplacés 400K déplacés 200K déplacés
Joëlle Delacroix AMSI1999/2000 21
Protection en allocation d'un seul tenant
• Toute adresse générée par l'exécutuion du programme doit appartenir à l'intervalle des adresses qui lui sont allouées
Programme P
Registres Borneschargés par le systèmeMin
Sup
Joëlle Delacroix AMSI1999/2000 22
Faiblesses de l'allocation d'un seul tenant
• Nécessité d'une opération de compactage de la mémoire
• Exigence d'allouer le programme en une zone d'un seul tenant
Diviser le programme en portions de taille fixe et égale à l'unité d'allocation de la mémoire centrale : les pages
Joëlle Delacroix AMSI1999/2000 23
La paginationMémoire
Page 1
Page 3
Page 2
Case1
Page 1
Page 2Page 4
Page 3
Case 2
Case 3
Case 4
Case 5
Case 6Espace d'adressagedu programme
Case 7Page 4
Joëlle Delacroix AMSI1999/2000 24
La pagination
• L'espace d'adressage du programme est découpé en morceaux linéaires de même taille : la page.
• L'espace de la mémoire physique est lui-même découpé en morceaux linéaires de même taille : la case
• La taille d'une case est égale à la taille d'une page
• Charger un programme en mémoire centrale consiste à placer les pages dans n'importe quelle case disponible.
Joëlle Delacroix AMSI1999/2000 25
La mémoire paginée
PAGEDe 512 octets
à8192 octetsadresse
physique
<n°page; deplacement>
Il faut convertir l'adresse paginée en son équivalent adresse physiqueAdresse physique = adresse implantation case contenant la page
+ deplacement
Table des pages
Joëlle Delacroix AMSI1999/2000 26
La mémoire paginéeMémoire
Page 1
Page 2
Page 4
Numéropage1
2
3
4
Page 3
Numérocase Page 1
Page 3
Page 2
Page 4
2
6
3
7
Table des pages Case1
Case 2
Case 3
Case 4
Case 5
Case 6
Espace d'adressagedu programme
Case 7
Joëlle Delacroix AMSI1999/2000 27
Implémentation de la table des pages
• Un ensemble de registres matériels – commuter de processus = charger tous les registres avec les
adresses des pages du processus– la table des pages ne peut pas être très grande (256 entrées)
• En mémoire centrale, repérée par un registre PTBR (page table base register)– commuter de processus = charger le registre PTBR avec l'adresse
de la table des pages du processus– pas de limite de taille à la table des pages
problème : le temps d'accès à un emplacement mémoire d'un programme
Joëlle Delacroix AMSI1999/2000 28
La mémoire paginéeMémoire
Adresse logique
p d
Registre adresseTable des pages
adresse table
+adr page
Adresse phy sique
+
Table des pages
Joëlle Delacroix AMSI1999/2000 29
Implémentation de la table des pages• temps d'accès à un emplacement mémoire d'un programme :
deux accès mémoire
p d
adresse table
+adr page
Adresse logique
Adresse phy sique
+
Table des pages
Joëlle Delacroix AMSI1999/2000 30
Implémentation de la table des pages
• Un cache associatif contenant les derniers couples <page, case> accédés est placé en amont de la table des pages
p dAdresse logique
adresse table
+adr page<p, adr page>
non trouvé
Adresse phy siquetrouvé
+
Table des pages
Joëlle Delacroix AMSI1999/2000 31
Pagination - Segmentation
Segment 1
Segment 2
Segment 3
Segment 4Pile
Programmeprincipal
Sqrt
données
Vue Utilisateur
Espace d'adressagedu programme
Ensemble de pagesEspace d'adressage
du programmeEnsemble de segments
Joëlle Delacroix AMSI1999/2000 32
La mémoire segmentée
• Le programme est divisé en segments par le compilateur, un segment étant un espace d'adressage linéaire formé d'adresses contigues.
• Un segment correspond à une partie logique du programme : segment de code, segment de données, segment de pile
S1
S2
S3
100 K
50 K30 K
Espace d'adressage segmenté
180K
Espace d'adressage linéaire
Joëlle Delacroix AMSI1999/2000 33
La mémoire segmentée
S1
S2
S3
100 K
50 K
Espace d'adressage segmenté
0
180K
Espace d'adressage linéaire 0
Adresse du mot avant chargementDéplacement depuis 0
Adresse du mot après chargementAdresse d'implantation + Déplacement
Adresse du mot avant chargementN° segment, Déplacement depuis 0
Adresse du mot après chargementAdresse d'implantation du segment
+ Déplacement
Joëlle Delacroix AMSI1999/2000 34
La mémoire segmentée
SEGMENTadresse
physique
<n°segment; deplacement>
Il faut convertir l'adresse segmentée en son équivalent adresse physiqueAdresse physique = adresse implantation segment + deplacement
Table des segments
Joëlle Delacroix AMSI1999/2000 35
La mémoire segmentée Mémoire
Segment 120K
Segment 225K
Segment 315K
Segment 410K
Segment 1
Segment 4
Segment 3
Segment 2
Numéro Position
1
2
3
4
50 K
195 K
95 K
150 K
Table des segments50K
95K
150 K
195 KEspace d'adressage
du programme
Joëlle Delacroix AMSI1999/2000 36
La mémoire segmentéeMémoire
<s d
LT adresse table
Registre adresseTable des Segments
< +
taille adr debut
+
oui
Table des segments
Joëlle Delacroix AMSI1999/2000 37
La segmentation
• Allouer un segment S de taille Taille(S) :trouver une zone libre telle que Taille (Zone Libre) > Taille (S)
• Allocations et désallocations successives des segments créent également un problème de fragmentation
combiner segmentation et pagination : paginer les segments
Joëlle Delacroix AMSI1999/2000 38
La mémoire segmentée paginéeMémoire
<
d
p d'
ouis d
LT adresse table
< +
tailleAdresse
tabledes pages
+ cRegistre adresseTable des Segments +
oui
Table des segments
Joëlle Delacroix AMSI1999/2000 39
Gestion mémoire• L'allocation en partitions fixes ou variables considère le programme
comme un ensemble d'adresses insécables. Ce type d'allocation pose un problème de fragmentation et nécessite des opérations de compactage de la mémoire centrale
• La pagination découpe l'espace d'adressage du programme en pageset la mémoire physique en cases de même taille. Une adresse générée par le processeur est de la forme <n°page, déplacement dans la page>. La table des pages du processus permet de traduire l'adresse paginée en adresse physique
• La segmentation découpe l'espace d'adressage du programme en segments correspondant à des morceaux logiques du programme. Uneadresse générée par le processeur est de la forme <n°segment, déplacement dans le segment>. La table des segments du processuspermet de traduire l'adresse segmentée en adresse physique
• Segmentation et pagination sont très souvent associées.
Joëlle Delacroix AMSI1999/2000 40
Gestion de la mémoire centraleMémoire Virtuelle
Joëlle Delacroix AMSI1999/2000 41
Mémoire virtuelle
Espaces d'adressagedes programmes
Case 1
Case 2
Case 3
Case 4
Case 5
Case 6
Case 7
Page 1
Page 2Page 4
Page 3 Page 1-1
Page 3-2
Page 2-1
Page 4-1
Mémoire physique
Page 1
Page 2
Page 3Page 1
Page 2Page 4
Page 3
Programme 1
Programme 2
Programme 3
Page 2-2
Page 1-2
Page 3-1
Joëlle Delacroix AMSI1999/2000 42
Mémoire virtuelle
• La capacité de la mémoire centrale est trop petite pour charger l'ensemble des pages des programmes utilisateurs.
Ne charger que les pages utiles à un instant. Mémoire physique
Page 1
Page 2Page 4Page 3
Page 1Page 2
Page 3Page 1
Page 2Page 4Page 3
Programme 1
Page 1-1
Page 3-2
Page 2-3
Page 1-3
Page 2-1
Page 3-3 Case 1
Case 2
Case 3
Case 4Programme 2
Case 5
Case 6Programme 3
Case 7Page 4-1
Joëlle Delacroix AMSI1999/2000 43
Bit de validation
• Ne charger que les pages utiles à un instant
il faut pouvoir tester la présence d'une page en mémoire centrale
N° de case physiqueV
• Bit validation à vrai si la page est présente en mémoire centrale
Joëlle Delacroix AMSI1999/2000 44
Bit de validationVVIV
24-7
IIV
--3
VVVI
561-Processus 2
Processus 1 Processus 3 Mémoire physique
Page 1
Page 2Page 4Page 3
Page 1Page 2
Page 3Page 1
Page 2Page 4Page 3
Programme 1
Page 1-1
Page 3-2
Page 2-3
Page 1-3
Page 2-1
Page 3-3 Case 1
Case 2
Case 3
Case 4Programme 2
Case 5
Case 6Programme 3
Case 7Page 4-1
Joëlle Delacroix AMSI1999/2000 45
Bit de validation et défaut de pageVVIV
24-7
IIV
--3
VVVI
561-Processus 2
Processus 1 Processus 3 Mémoire physique
Page 1
Page 2Page 4Page 3
Page 1Page 2
Page 3Page 1
Page 2Page 4Page 3
Programme 1
Page 1-1
Page 3-2
Page 2-3
Page 1-3
Page 2-1
Page 3-3 Case 1
Case 2
Case 3
Case 4Processus 2 : accès à la page 2
DEFAUT DE PAGEProgramme 2 Case 5
Case 6Programme 3
Case 7Page 4-1
Joëlle Delacroix AMSI1999/2000 46
Bit de validation et défaut de page
• Ne charger que les pages utiles à un instant
il faut pouvoir tester la présence d'une page en mémoire centrale : rôle du bit de validation
si un processus cherche à accéder à une page non présente en mémoire centrale, il se produit un déroutement de défaut de page
• le système d'exploitation lance une entrée/sortie disquepour charger la page en mémoire dans une case libre
Joëlle Delacroix AMSI1999/2000 47
Défaut de page Mémoire
Adresse logiquep d
adresse table
Registre adresseTable des pages
+
-I
1. DéroutementE/S disque
Table des pages
Joëlle Delacroix AMSI1999/2000 48
Défaut de page Mémoire
p d
adresse table
+
5I
case libre
3. Mise à jour table des pages
Adresse logique4. Reprise instruction
Registre adresseTable des pages
2 Chargement de la page
Table des pages
Joëlle Delacroix AMSI1999/2000 49
Chargement de page
• Lors d'un défaut de page, la page manquante est chargée dans unecase libre
la totalité des cases de la mémoire centrale peuvent être occupéesil faut libérer une case globalement (parmi l'ensemble des cases) ou localement (parmi les cases occupées par les pages du processus en défaut)
• le système d'exploitation utilise un algorithme pour choisirune case à libérer
- FIFO (First In, First out)- LRU (Least Recently Used)
Joëlle Delacroix AMSI1999/2000 50
Algorithmes de remplacement de page
• FIFO : la page la plus anciennement chargée est la page remplacée
Chaine de référence
7 0 1 2 0 3 0 4 2 3 0
7 7
0
1
2
0
1
2
0
1
2
3
1
2
3
0
4
3
0
4
2
0
4
2
3
0
2
3
7
0
D DD D DD DD D D
Joëlle Delacroix AMSI1999/2000 51
Algorithmes de remplacement de page
• LRU : la page la moins récemment accédée est la page remplacée
Chaine de référence
7 0 1 2 0 3 0 4 2 3 0
7 7
0
1
2
0
1
2
0
1
2
0
3
2
0
3
4
0
3
4
0
2
4
3
2
0
3
2
7
0
D DD D DDD D D
Joëlle Delacroix AMSI1999/2000 52
Algorithme de remplacement de page
N° de case physiqueVMA
• Bit modification à vrai si la page a été modifiée en mémoire centrale
• Champ Accès :FIFO : date de chargementLRU : date de dernier accès
Joëlle Delacroix AMSI1999/2000 53
Conversion d'une adresse virtuelle
Procedure Conversion (in adresse_virtuelle, out adresse_physique)
debutentrée := adresse_virtuelle.page + adresse_table(processus)Si (entrée.V = FAUX)alors
-- defaut de pageCharger_page(adresse_virtuelle.page, adresse_case);entrée.V = vrai;entrée. case := adresse_case;
fsiadresse physique := adresse_case + adresse_virtuelle.deplacement;return (adresse_physique);
fin
Joëlle Delacroix AMSI1999/2000 54
Conversion d'une adresse virtuelle
Procedure Charger_Page (in page, out case)
debutSi (Trouver_case_Libre( ) = FAUX)alors
Choisir_case_à_libérer (case_à_liberer, page_victime);si (page_victime.M = Vrai)alors
Ecrire_Disque(page_victime)fsiLire_Disque(case_à_liberer, page)return (case_à_liberer)
fin
Joëlle Delacroix AMSI1999/2000 55
Ecroulement
• On appelle Ecroulement, une haute activité de pagination. Un processus s'écroule lorsqu'il passe plus de temps à paginer qu'às'exécuter.
Ecroulement
Uti l
isat
ion
de l'
UC
Degré de multiprogrammation
Joëlle Delacroix AMSI1999/2000 56
Mémoire virtuelle
• Les pages d'un processus ne sont chargées en mémoire centrale que lorsque le processus y accède
• Lorsqu'un processus accède à une page non présente en mémoire centrale, il se produit un défaut de page. La page manquante est alors chargée dans une case libre.
• Si aucune case n'est libre, le système utilise un algorithme de remplacement de page pour choisir une case à libérer.
• L'écroulement est la situation pour laquelle un ou plusieurs processus passent plus de temps à paginer qu'à s'exécuter.