Diapostives de la deuxième partie

Transcription

Diapostives de la deuxième partie
II Allocation de la mémoire centrale JJ
II Mémoire centrale (RAM) JJ
• Mémoire centrale (RAM)
La mémoire centrale (RAM pour Random Access Memory) est une
zone de stockage composée d’octets (8 bits).
• Organisation logique / physique
• Organisation en partitions
Chaque octet est repéré par un adresse physique (sur 32 ou 64 bits).
• Pagination et segmentation
0x00000000
...
0xFFFFFFFF
+---+
|
|
+---+
|
|
| . |
| . |
| . |
|
|
+---+
|
|
+---+
2^32
2^32
2^22
2^12
2^2
adresses soit
octets soit
kilo-octets soit
méga-octets
giga-octets
La mémoire physique est contigüe (les adresses varient de N à M ).
Uniformité : tous les processeurs ont accès à tous les octets.
2
1
Les mots doivent être alignés sur une adresse physique multiple de leur
taille :
Il est préférable d’écrire :
struct S1 {
char c1;
char c2;
int v1;
};
struct S1 {
char c1;
int v1;
char c2;
};
void main(void) {
printf("sizeof(char) = %d\n", sizeof(char));
printf("sizeof(int) = %d\n", sizeof(int));
printf("sizeof(S1)
= %d\n", sizeof(struct S1));
}
Exécution :
sizeof(char) = 1
sizeof(int) = 4
sizeof(S1)
= 8
Exécution :
Placement des données en mémoire :
sizeof(char) = 1
sizeof(int) = 4
sizeof(S1)
= 12
+--+--+--+--+--+--+--+--+
|c1|c2|--|--|
v1
|
+--+--+--+--+--+--+--+--+
Placement des données en mémoire :
+--+--+--+--+--+--+--+--+--+--+--+--+
|c1|--|--|--|
v1
|c2|--|--|--|
+--+--+--+--+--+--+--+--+--+--+--+--+
3
4
II Utilisation de la mémoire JJ
Avec la RAM il existe trois opérations :
Un exemple :
• lecture d’un octet ou d’un mot
• écriture d’un octet ou d’un mot
int x;
• lecture pour exécution d’un mot
void main(void) {
sleep(1);
printf("%x ", &x);
sleep(1);
}
Exécution :
6008e8 6008e8 6008e8 6008e8 6008e8 6008e8 6008e8 6008e8 6008e8
Chaque processus travail dans une mémoire logique qui est une partie de
la mémoire centrale.
Les octets de la mémoire logique sont repérés par des adresses logiques.
5
Lors de l’exécution, les processus génèrent des adresses logiques qui varient
de 0 à N − 1 (N étant la taille de la mémoire logique du processus).
6
II Allocation de mémoire JJ
II Mémoire logique contiguë JJ
• Correspondance entre adresses logiques et adresses physiques,
La mémoire logique des processus est constitué d’un seul morceau (une
partition) :
. fixe : établie à la compilation
Niv. Logique
contigu
. statique : établie au chargement
P1
P2
P3
. dynamique : variable dans le temps
• Gestion de la mémoire physique.
• Partage de données entre processus.
• Protection de chaque processus.
7
Niv. physique
contigu
(partitions)
RAM
Niv. physique
non-contigu
(pagination)
RAM
P2
P2
P3
P1
P2
P1
P2
P3
P3
P2
8
II Mémoire logique non contiguë JJ
II Système à partition unique JJ
La mémoire logique des processus est constitué de plusieurs morceaux
(segments) :
RL
S.E.
Niv. Logique
Non-contigu
(segmentation)
P1
P2a
P2b
P3a
partition unique
mémoire
P3b
RB
Le va-et-vient simple ou swapping. Caractéristiques :
Niv. physique
contigu
(segmentation)
Niv. physique
non-contigu
(seg-pagination)
RAM
P2a
P3a
P1
P3b
P2b
• les processus sont tous et toujours à la même adresse physique (correspondance à la compilation ou au chargement)
• la réquisition de la CPU entraı̂ne la sauvegarde de la partition et le
chargement d’un nouveau processus (monoprogrammation)
RAM
P2a
P3a
P2b
P1
P2b
P3b
P2a
• la CPU est inutilisée durant les sauvegardes/récupérations
• La protection est assurée par le jeu des deux registres spécialisées RB
(registre de base) et RL (registre limite).
9
10
II Les recouvrements JJ
II Système à partitions fixes JJ
Objectif : Limiter la taille de la mémoire occupée par le code du programme.
• Les programmes
indépendantes.
importants
sont
découpés
en
plusieurs
S.E.
zone 1
mémoire
zone 2
A
C
programmes
B
parties
Allocation de la mémoire
• Une partie reste systématiquement en mémoire, c’est la racine du recouvrement.
A(1)
C(2)
B(1)
U.C.
• Les autres parties sont chargées en mémoire à la demande.
Canal.
chargement
C(2)
A(1)
B(1)
C(2)
mémoire physique
A
A
A
B
C
B
sauvegarde
Chronogramme d'activité
programme (3 parties)
configuration 1
C
programme(zone)
configuration 2
11
•
•
•
•
La mémoire est divisée en zones de taille fixe (spécialisation)
Les processus s’exécutent toujours dans la même zone
Pendant les échanges sur Z1, un autre processus s’exécute en Z2
Protection possible par les registres RB et RL
12
II Système à partitions variables JJ
II Allocation par chaı̂nage des zones libres JJ
Les partitions sont allouées et libérées à la demande (création ou fin
d’un processus).
Les zones libres sont placées dans une liste chainée. Il existe plusieurs
stratégies de recherche :
Le registre de base pointe sur la partition et le registre limite en indique
la taille.
0
RL
RB
6
150
A
150
1
B
151
B
2
C
152
C
3
D
153
D
4
E
154
E
5
F
155
F
3
oui
3 < RL
+
non
• Première zone libre (first-fit).
• Meilleur ajustement (best-fit) pour utiliser au mieux les zones libres.
Mais,
. il faut parcourir toutes les zones,
. il reste des petits résidus inutilisables.
A
• Plus grand résidu (worst-fit) pour combattre l’émiettement.
• Algorithmes spécialisés.
déroutement sur
erreur d'adressage
RB et RL sont utilisés par la CPU pour traduire à chaque accès mémoire
les adresses logiques en adresses physiques.
13
II Allocation par subdivision (buddy system) JJ
14
Un exemple d’allocations/libérations :
La taille des zones suit une règle définie par une relation de récurrence :
8
A
• binaire : (1, 2, 4, 8, . . .) Si+1 = 2 × Si
• fibonacci : (1, 2, 3, 5, 8, . . .) Si+1 = Si + Si−1
Il existe une liste des zones libres pour chaque taille.
hallouer un bloc de taille T i
Soit Si la plus petite taille telle que Si ≥ T
si hil existe un bloc de taille Sii alors
hrenvoyer ce bloci
sinon
hallouer un bloc de taille Si+1i
hlibérer la deuxième partie de ce bloci
hrenvoyer la première partiei
fin si
2
4
Alloc. de A, longueur = 2
4
Alloc. de B, longueur = 1
A
B
1
A
B
1
C
2
Alloc. de C, longueur = 2
2
B
1
C
2
Libération de A
2
B
1
4
8
Libération de C
Libération de B
La recherche d’une zone libre est rapide et il est facile de reconstruire des
zones à la libération.
15
16
II Fragmentation externe/interne JJ
II Compactage de la mémoire JJ
La fragmentation externe est due à l’émiettement de la mémoire lors des
allocations/libérations.
Le compactage de la mémoire procède par recopie des partitions pour faire
apparaı̂tre une zone libre de taille suffisante.
La fragmentation interne c’est l’unité de mémoire minimum que le S.E.
est capable de gérer (généralement plusieurs Kilo-octets).
Exemple :
100
100
100
100
100
100
50
100
100
100
50
100
50
50
200
50
150
100
50
17
18
II Mémoire paginée JJ
II Mémoire paginée : principe JJ
La mémoire est divisée en page de taille fixe (quelques Kilo-octets). Cette
taille est toujours une puissance de deux (2m).
• Principe
• Correspondance des adresses
Une adresse logique paginée sur n bits (avec n > m) est un couple
• Mémoires associatives
◦
h n
| de page
{z logique} , déplacement
|
{zdans la page} i
sur n − m bits
sur m bits
• Partage de pages
Une adresse physique paginée sur p bits (avec p > m) est un couple
◦
h n
| de page
{z physique} , déplacement
|
{zdans la page} i
sur p − m bits
sur m bits
Exemple : avec une page de 4 ko (212 octets) :
123.456.789
19
=
=
|00000111010110111100|110100010101|
|<------- 20 ------->|<--- 12 --->|
30140
3349
(30149 * 4096)
+
3349
20
La fonction de pagination assure la correspondance entre numéro de page
logique et numéro de page physique.
Mémoire
logique
II Pages logiques versus pages physiques JJ
Pour chaque processus, le système prépare une table de pages logiques
(notée desc ci-dessous).
Mémoire
physique
0
0
1
1
adr. logique
npl
dep
Fonction de
pagination
2
n
-1
vérifier que
npl < RL
npp
+
n
prot
2 -1
npp
RL
npp
dep
adr. physique
R. de base
Table des pages (desc)
21
22
II Exemple et discussion JJ
Version algorithmique de la correspondance :
Un exemple avec deux processus :
logique vers physique( adresse logique )
hnpl, dépli := adresse logique
si (npl < RL) alors
-- lecture de la table des pages
hnpp, proti := mem[ npl + RB ]
si hles protections prot sont respectéesi alors
adresse physique := hnpp, dépli
renvoyer (adresse physique)
sinon
hinterruption sur violation de protectioni
fin si
sinon
hinterruption sur erreur d’adressagei
fin si
Mémoire
logique du
processus 1
Table des
pages du
processus 1
pages physiques
A
B
C
A
D
F
C
B
Table des
pages du
processus 2
Mémoire
logique du
processus 2
D
E
F
G
E
G
Avantages :
• Gestion mémoire plus simple
(liste des pages libres)
• Compactage inutile
• Protections différentes pour
chaque page
23
Inconvénients :
• temps d’accès doublé
• nécessite une PMMU (Page
Memory Management Unit)
24
II Comportement des processus JJ
II Mémoires associatives JJ
Comportement « en moyenne » des processus :
Principe des mémoires associatives :
• Non uniformité : 20% des pages regroupent 90% des accès
entre 16
et 512
• Principe de localité :
. stabilité des accès sur une courte période
100
. l’activité actuelle est une bonne estimation de l’activité future
100
500
500
échec
• Rapidité : les tests sont faits en parallèle (quelques nanosecondes)
• Ces circuits sont très couteux
26
25
II Mémoires associatives et pagination JJ
Conséquences :
Principe : retenir les derniers couples (page logique, page physique),
pour éviter l’accès mémoire à la table des pages.
mémoire
associative
• Il faut mettre à jour la mémoire associative après les échecs
adr. logique
• Il faut vider la mémoire associative lors des changement de processus
npl
• Le taux de réussite est lié à la taille de la M.A. (entre 80% et 95%).
dep
. 0, 80 × (100 + 20) + 0, 20 × (100 + 100 + 20) = 140 ns
succès
. 0, 95 × (100 + 20) + 0, 05 × (100 + 100 + 20) = 125 ns
échec
vérifier que
npl < RL
+
npp
prot
npp
RL
npp
dep
adr. physique
RB
Table des pages (desc)
27
28
II Partage de pages entre processus JJ
Mémoire
logique du
processus 1
Table des
pages du
processus 1
pages physiques
Table des
pages du
processus 2
Pb
• Partage de segments,
Pb
D1
D4
D2
D2
• Correspondance des adresses,
Pa
Pb
D1
• Notion de segments,
Mémoire
logique du
processus 2
Pa
Pa
II Mémoire segmentée JJ
• Pagination d’une mémoire segmentée,
D5
D4
D6
D5
D7
D6
D7
Les pages contenant le programme (Pa et Pb) sont partagées,
mais les pages de données (D1, …, D7) ne le sont pas.
Les pages contenant le programme Pa et Pb sont partagées, tandis que
les pages Dx ne le sont pas.
Pour une même page physique, il est possible d’avoir des protections
différentes suivant le processus qui l’utilise.
29
II Notion de segments JJ
30
II Transformation des adresses segmentées JJ
Un segment est un bloc de donnée de taille variable.
Le S.E. détient une table des segments pour chaque processus.
mémoire
physique
2
code 2
L2
3
RB
data 2
L3
1
data 1
L1
0
L0
1
L1
2
L2
3
L3
origine
L0
prot
code 1
taille
0
code 2
RL
code 1
table des segments (desc)
Une adresse logique segmentée est un couple
h numéro de segment, déplacement i
Cette organisation logique de la mémoire corresponds à l’organisation logique à l’intérieur d’un programme.
31
32
Version algorithmique :
adr. logique (32 bits)
accès (2)
164040
10
seg (17) dep (15)
hseg, depli := adresse logique
si (seg < RL) alors
-- lecture de la table des segments
htaille, prot, originei := mem[ RB + seg ]
si (depl < taille) alors
si hles protections prot sont respectéesi alors
adresse physique := origine + depl
sinon
hinterruption sur violation de protectioni
fin si
sinon
hinterruption sur erreur d’adressagei
fin si
sinon
hinterruption sur erreur d’adressagei
fin si
5
accès (2)
200
10
5 < RL
non
+ RB
32 bits
orig. (15) prot (2)
taille (15)
500
125
200 < 500
10
non
10 ? 10
non
200 + (1024 * 125)
CPU
Mémoire
adr. physique (32 bits)
déroutement
128200
33
34
II Mémoire segmentée : discussion et partage JJ
P2
P1
Inconvénients : l’allocation de segments implique
1
data 1
0
code
1
data 2
0
• un problème de fragmentation externe
• une obligation du tassage de la mémoire
Avantages :
taille
• les protections concernent les segments
prot
origine
0
data 1
1
• on peut utiliser les mémoires associatives
table des segments de P1
code
• le partage de segment est simple
taille
prot
origine
0
1
data 2
table des segments de P2
35
36
adr. segmentée et paginée
II Pagination d’une mémoire segmentée JJ
seg
npl
dep
Une adresse segmentée et paginée est un triplet
adr. physique
npp
+
h numéro de segment, numéro de page, déplacement i
vérifier que
(npl < L)
dep
+
La taille des segments s’exprime maintenant en nombre de pages.
R. de base
npp
L
L
Table des segments
Table des pages
du segment seg
Avantages : plus de problème de fragmentation interne puisque les segments ne sont plus contigus en mémoire physique.
37
38
II Mémoire virtuelle paginée : principe JJ
Fonction de pagination virtuelle :
Principe : les programmes utilisent 20% de leur page, donc il est inutile de
toutes les conserver en mémoire.
zone de pagination
en mémoire
secondaire
Mémoire
virtuelle
Mémoire
physique
Exemple : 1000 pp = 10 processus de 100 pages logiques ou 50 processus
de (100 x 0,2) pages utiles.
Fonction de
pagination
Le système doit détecter (avec l’aide du matériel) :
• les pages inutilisées (réquisition)
Défaut de
page
• les pages utiles et présentes en mémoire physique
• les pages utiles et absentes de la mémoire physique (défaut de page)
1
II Hiérarchie de mémoire JJ
2
II Adresses virtuelles versus adresses physiques JJ
Pour chaque processus, le système prépare une table des pages virtuelles
(pointée par le registre de base) :
La mémoire virtuelle implante la gestion d’un cache :
adr. virtuelle
Registres de la CPU
npv
Compilation
dep
Mémoire cache (de la CPU)
mémoire
associative
Mémoire secondaire rapide
Swapping
in / out
1
0
npp
échec
prot
Mémoire centrale
succès
modif
+
Mémoire secondaire standard
npp
npp
RL
Gestion
de la
mémoire
virtuelle
Gestion
de la
mémoire
cache
présent
Mémoire cache (lente)
Mémoire secondaire lente (bandes, ...)
dep
adr. physique
RB
défaut de page
si présent = 0
3
Table des pages
virtuelles (desc)
4
II Un exemple sur deux processus JJ
Correspondance des adresses (c’est la partie matérielle de la pagination) :
-- lecture de la table des pages virtuelles
hprésent, prot, nppi := mem[ RB + npv ]
Processus
1
-- vérification des protections
si hprot non respectéesi interruption violation de protec.
-- vérification de la présence
si (présent = 0) interruption défaut de page
Processus
2
-- construction de l’adresse physique
adresse physique := hnpp, depli
renvoyer adresse physique
présent
modif
npp
fonction transformation( adr : adresse virtuelle )
hnpv, depli := adr
si (npv >= RL) interruption erreur d’adressage
A
0
-
-
B
1
0
C
1
1
D
1
1
E
0
-
F
1
0
G
0
-
H
1
1
A
B
H
-
D
C
F
?
E
F
?
Mémoire
physique
5
II Le traitement du défaut de page JJ
?
G
-
Mémoires
Tables des
virtuelles pages virtuelles
B
Zone de
pagination
6
Algorithme de libération d’une page :
Algorithme du défaut de page :
procédure defaut de page( v : numéro de page virtuelle )
hsuspendre le processus qui a provoqué le défauti
p := liberer une page physique()
hcharger la page virtuelle v dans la page physique pi E/S
desc[v].présent := 1
desc[v].modif := 0
desc[v].npp := p
hreprendre le processus qui a provoqué le défauti
7
fonction liberer une page physique( )
si hil existe une page physique p librei alors
finir et renvoyer p
fin si
v := hchoisir un page virtuelle victimei
p := desc[v].npp
si (desc[v].modif = 1) alors
hsauver la page physique pi
fin si
desc[v].présent = 0
renvoyer p
E/S
8
II Pagination a plusieurs niveaux JJ
Organisation :
adr.
virtuelle
Exemple : Une mémoire de 256 Mo (soit 228 octets) est divisée en
228/210 = 218 pages. La table des pages a donc 218 entrées soit 1 Mo.
mémoire
associative
nhyp
npv
succès
dep
adr.
physique
vérifier que
npv < L
présent
Conséquence : malgré la pagination, nous devons allouer des ensembles
de pages contigus pour les tables de pages.
+
modif
+
présent
Principe : Si la mémoire est importante le nombre de pages augmente et
la table des pages devient imposante.
1
0
npp
dep
npp
L
R. de base
Solution : paginer la table des pages ce qui revient à faire une pagination
à deux niveaux.
L
1
Table des pages
de l'hyperpage nhyp
Table des hyperpages
défaut de page
si présent = 0
Il peut y avoir jusqu’à 5 niveaux de pagination. Dans ce cas
temps d’accès = (0, 98 × 120) + (0, 02 × 520) = 128
10
9
II Mémoire virtuelle segmentée et paginée JJ
II Discussion sur la taille des pages JJ
Transformation des adresses :
adr.
virtuelle
paginée
segmentée
La taille des pages doit être grande pour
mémoire
associative
seg
page
succès
• diminuer le nombre de pages, donc le nombre de défauts de page et
la taille de la table des pages
dep
adr.
physique
+
modif
origine
prot
vérifier que
page < L
présent
+
1
0
npp
dep
• optimiser le temps de transfert vers ou depuis la zone de pagination
• utiliser des mémoires centrales de plus en plus grandes
La taille des pages doit être petite pour
L
RB
• limiter la fragmentation interne
L
• définir avec plus de précision les pages utiles
Table des pages
du segment seg
Table des segments
défaut de page
si présent = 0
Actuellement la taille des pages varie entre 1 ko et 32 ko.
Avantage : le processus est capable d’informer le système d’un changement dans le mode d’utilisation d’un segment.
11
Certains systèmes autorisent plusieurs tailles différentes.
12
II Algorithmes de remplacement JJ
II Algorithmes de remplacement (suite) JJ
Principe : On choisit en priorité les pages virtuelles propres (qui n’ont
pas été modifiées).
Algorithme FINUFO (First In Not Used First Out) ou algorithme de la
deuxième chance. On dispose
• d’un pointeur global de page physique P
Algorithmes :
• Algorithme optimale (base de référence) : choisir la page virtuelle qui
est utilisée le plus tard possible ou qui n’est plus utilisée.
• d’un bit d’utilisation par page physique noté U[k]
• U[k] est forcé à 1 après chaque accès à la page physique k
Algorithme du choix de la victime FINUFO :
• Algorithme aléatoire (le moins bon).
• Algorithme FIFO (il ne tient pas compte de l’utilisation des pages).
• Algorithme LRU (Least Recently Used) est basé sur le principe de
localité : choisir la page dont la date du dernier accès est la plus ancienne.
choisir victime FINUFO ()
tant que (U[P ] = 1) faire
U[P ] := 0
P := (P + 1) mod NB PAGES PHYSIQUES
fin faire
U[P ] = 1
victime := P
P := (P + 1) mod NB PAGES PHYSIQUES
renvoyer victime
14
13
II Comportement en mémoire virtuelle paginée JJ
Un exemple pour une mémoire physique à deux pages :
5
0
1
5
2
1
3
2
4
5
1
3
1
3
1
3
0
2
1
2
0
2
1
4
1
Nombre
de défauts
de page
pointeur FINUFO
bit FINUFO
N° de page virtuelle
Performances :
OPT > LRU > LFU > FINUFO > FIFO > ALEA
Taille de la mémoire
15
16
II Allocation des pages physiques JJ
II Écroulement d’un système paginé JJ
Allocation équitable : On donne à chaque processus un part égale de la
mémoire physique.
Définition : Augmentation considérable du nombre de défaut de page
provoquant un chute du taux d’utilisation de la CPU.
Allocation proportionnelle : on donne à chaque processus un part proportionnelle à la taille de sa mémoire virtuelle.
Processus 1
Processus 2
Processus 3
Mémoires
Virtuelles
25
70
35
130
Taux
d'utilisation
de la CPU
Physiques
20
53
27
100
Politique de choix de la victime :
• choix local : on choisit parmis les pages du processus demandeur.
• choix global : on choisit parmis tous les processus
→ équilibrage des taux de défauts de page
17
II La méthode de l’ensemble de travail JJ
dégré de multiprogrammation
Faible taux de CPU → plus de processus → moins de mémoire
→ plus de défauts → baisse du Tx de CPU
18
II Approximation de l’ensemble de travail JJ
On utilise une approximation en associant n bits b1, . . . , bn à chaque page
physique.
L’ensemble de travail d’un processus au temps t noté
W (t, T ) = ensemble des pages ayant été référencées entre t et (t − T )
T est appelé la fenêtre d’observation.
Propriété : la probabilité que l’une des pages de W(t, T ) soit référencée
au temps (t + 1) est forte.
Conséquence : si les pages physiques allouées à un processus ne peuvent
contenir l’ensemble de travail, le nombre de défauts de page sera important.
Problème : il est très coûteux de maintenir un ensemble de travail pour
chaque processus.
• chaque accès à une page provoque la mise à 1 du bit b1 associé
• régulièrement (sur interruption d’horloge), le système décale les bits
b1, . . . , bn−1 vers la droite et le bit b1 est forcé à zéro
donc, les bits b1, . . . , bn donnent un historique d’utilisation de la page physique.
P0 | 0
1
0
1
0
P1 | 1
0
0
0
0
P2 | 1
1
0
1
0
. |
.
.
. |
.
.
Pn | 1
1
1
1
1
---+------------------------| t
t+1 t+2 t+3 t+4
Une page physique appartient à W(t, T ) ssi il existe j < T tel que bj = 1.
19
20
II La méthode du taux de défaut de page JJ
Le taux de défaut de page pour chaque processus doit être compris entre
deux bornes.
Si le taux est trop bas, alors le nombre de pages physiques allouées à ce
processus est trop important.
Si le taux est trop haut, alors le nombre de pages physiques allouées à ce
processus n’est pas suffisant pour contenir son ensemble de travail. Deux
actions sont possibles :
• enlever des pages physiques au processus dont le taux est trop bas afin
de les redistribuer au processus qui manque de pages physiques ;
• appliquer le swapping out de processus pour diminuer le degré de multiprogrammation, et libérer des pages.
Tentative d’égaliser les taux de défaut de page pour tous les processus.
21