Comment organiser la mémoire physique

publicité
Noyau d'un système d'exploitation
INF2610
Chapitre 7 : Gestion de la mémoire
Département de génie informatique et génie logiciel
Chapitre 7 - Gestion de la mémoire
• Généralités
• Comment organiser la mémoire physique ?
• Comment organiser l’espace d’adressage d’un processus ?
• La pagination pure
- Conversion d’adresses virtuelles en adresses physiques
- Table des pages à plusieurs niveau et table inversée
- Algorithmes de remplacement de page
• Segmentation / pagination
• Linux
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 2
Généralités
•
Le gestionnaire de la mémoire est le composant du système d’exploitation
qui se charge de gérer l’allocation d’espace mémoire aux processus :
- Comment organiser la mémoire physique ? (Partitions fixes ou variables,
cadres de même taille).
- Comment mémoriser l’état de la mémoire? Parmi les parties libres en
mémoire, lesquelles allouer au processus? (politique de placement)
- Faut-il allouer tout l’espace nécessaire avant l’exécution ou à la demande
? (politique d’allocation).
- S’il n’y a pas assez d’espace en mémoire, doit-on libérer de l’espace en
retirant des parties ou des processus entiers ? Si oui lesquels ?
(politique de remplacement).
- Les adresses figurant dans les instructions sont-elles relatives
(logiques /virtuelles) ? Si oui, comment les convertir en adresses
physiques.
- Si plusieurs processus peuvent être résidents en mémoire, comment
assurer la protection des processus (éviter qu’un processus soit altéré
par un autre) ?
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 3
Généralités (2)
Exigences :
•Efficacité : la mémoire doit être allouée équitablement et à moindre coût tout en
assurant une meilleure utilisation des ressources (mémoire, processeurs et
périphériques).
•Protection : Les processus ne peuvent pas se corrompre.
•Transparence : Chacun des processus doit ignorer l’existence des autres en
mémoire.
•Relocalisation : la possibilité de déplacer un processus en mémoire.
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 4
(Algorithmes de gestion de mémoire)
Taille fixe (e.g. pages, blocs sur disque): on peut maintenir une liste
des objets libres ou une carte (bitmap).
Taille variable: on peut maintenir une liste des objets libres et chercher
(premier assez gros, taille la plus proche...); on peut avoir différentes
listes pour différentes catégories de tailles (algorithme des
subdivisions).
Ramasse-miettes (garbage collection): déterminer automatiquement la
mémoire libérée (décompte de référence, marquage et balayage,
compaction, copie, par générations).
Le noyau Linux utilise plusieurs de ces algorithmes (liste des objets
libres, subdivisions, décompte de référence) et maintient des réservoirs
de mémoire libre par processeur.
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 5
Comment organiser la mémoire physique ?
Multiprogrammation :
•La mémoire physique est partagée entre le système d'exploitation et plusieurs
processus.
•Le but est d’optimiser le taux d'utilisation du processeur.
Taux d’utilisation = 1 – Pn
où P est le taux d’attente d’E/S et n est le nombre de processus.
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 8.6
Chapitre 7- 6
Comment organiser la mémoire physique ? (2)
• Partitions fixes
• unité d’allocation  partition
• Un processus est chargé dans une partition
SE
Partition 2K
Fragmentation
interne
Partition 4K
Partition 6K
Partition vide
Partition 3K
Mémoire
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 7
Comment organiser la mémoire physique ? (3)
•
•
•
Partitions variables
unité d’allocation  partition
Un processus est chargée dans une partition
0K
0K
SE
SE
40K
40K
processus 5
processus 1
90K
100K
100K
Fin du processus 1
processus 4
Arrivée du processus 5
processus 4
170K
170K
200K
200K
processus 3
processus 3
230K
230K
256K
256K
Fragmentation externe
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 8
Comment organiser la mémoire physique ? (4)
• Cadres (cases ou frames) de même taille  fragmentation interne
• unité d’allocation  cadre
• Un processus peut occuper plusieurs cadres contigus ou non
P1
P1
P2
P3
P1
P3
P2
P2
P1
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 9
Comment organiser la mémoire physique ? (5)
Pour gérer l'allocation et la libération de l'espace mémoire, le gestionnaire doit :
•Connaître l'état de la mémoire : tables de bits ou listes chaînées.
Mémorisation de l’état de la
mémoire cas de BSD 4.
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 10
Comment organiser la mémoire physique ? (6)
Pour gérer l'allocation et la libération de l'espace mémoire, le gestionnaire doit :
• Avoir une politique de placement et de récupération d’espace.
- Premier ajustement (first fit) : première zone libre qui convient.
- Meilleur ajustement (best fit) : plus petite zone libre qui convient.
- Pire ajustement (worst case) : plus grande zone libre qui convient
- Par subdivision
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 11
Comment organiser la mémoire physique ? (7)
Par subdivision (cas de Linux) :
La mémoire centrale est gérée comme suit :
•Initialement, la mémoire est composée d’une seule zone libre.
•Lorsqu’une demande d’allocation arrive, la taille de l’espace demandé est
arrondie à une puissance de 2. La zone libre initiale est divisée en deux. Si la
première est trop grande, elle est, à son tour, divisée en deux et ainsi de suite...
Sinon, elle est allouée au demandeur.
•Le gestionnaire de la mémoire utilise un tableau qui contient des têtes de listes.
Le premier élément du tableau contient la tête de la liste des zones de taille 1.
Le deuxième élément contient la tête de la liste des zones de taille 2…
•Cet algorithme conduit vers une importante fragmentation interne. Les espaces
non utilisés (de la fragmentation interne) sont récupérés et gérés différemment.
•Lors de la libération de l’espace, les zones contiguës de même taille sont
regroupées en une seule zone.
 Allocation très rapide.
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 12
Comment organiser la mémoire physique ? (8)
Par subdivision (cas de Linux) :
Demande de 6 pages  8 pages
Demande de 5 pages  8 pages
Demande de 3 pages  4 pages
Libération de 8 pages + Libération de 8 pages  16 pages
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 13
Comment organiser l’espace d’adressage d’un processus ?
• Espace d’adressage d’un processus = ensemble de segments
Segments = zones contiguës de tailles différentes
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 14
Comment organiser l’espace d’adressage d’un processus ?(2)
•
Espace d’adressage d’un processus = ensemble de pages de même taille.
7
6
5
4
0
0
0
0
0
1
Mémoire physique
4
4
3
2
1
3
2
1
0
3
0
0
0
1
2
0
1
1
Table des pages
Espace d'adressage linéaire
•
0
1
0
2
1
0
6
0
0
3
Représenté par
1
Espace d’adressage d’un processus = ensemble de segments.
Segment = ensemble de pages de même taille.
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 15
Comment organiser l’espace d’adressage d’un
processus ? (3)
● D’une manière générale, l’espace d’adressage est structuré en blocs de :
– même taille (pages-> pagination) ou
– tailles différentes (segments->segmentation).
● Les deux organisations peuvent être combinées : segment = {pages}
● Le format de l’adresse de cet espace est :
– (numéro de page, déplacement dans la page) pour la pagination;
– (numéro de segment, déplacement dans le segment) pour la segmentation;
– (numéro de segment, numéro de page, déplacement dans la page) pour la
segmentation/pagination.
•
L’allocation de l’espace mémoire physique nécessaire peut se faire :
- avant l’exécution ou
- à la demande au cours de l’exécution  Mémoire virtuelle
•
Mémoire virtuelle
- Taille de l’espace d’adressage peut être >> à celle de la mémoire physique
- Espace d’adressage virtuel = {adresses virtuelles}
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 16
Comment organiser l’espace d’adressage d’un
processus ? (4)
Exemple 1 :
● Supposez le format d’adresse virtuelle (b, d) sur 32 bits avec n bits pour d (offset) :
– Le nombre maximal de blocs que peut contenir l’espace virtuel : 232-n
– La taille maximale d’un bloc (page ou segment) : 2n
– La taille maximale de l’espace d’adressage : 232
n  => pertes par fragmentation  et table des blocs 
n  => pertes par fragmentation  et table des blocs 
● La table des blocs (pages ou segments) d’un processus permet de localiser les
différents blocs de l’espace d’adressage. Elle contient une entrée par bloc :
(bit de présence, adresse physique du début du bloc, ….).
● L’adresse de la table des blocs fait partie du contexte du processus à sauver ou à
restaurer lors du changement de contexte.
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 17
Comment organiser l’espace d’adressage d’un
processus ? (5)
•
Il y a deux types d’adresses dans les systèmes implantant la mémoire virtuelle :
- Celles référencées par les processus (adresses virtuelles, relatives,
logiques),
- Celles de la mémoire physique (adresses physiques ou réelles).
● Il faut notamment :
– Un mécanisme de conversion d’adresses virtuelles rapide.
– Une politique de remplacement de pages / segments
=> moins de fautes de pages / segments.
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 18
La pagination pure
•
L’espace d’adressage (virtuel) et la mémoire physique sont structurées en
unités d’allocations (pages pour l’espace d’adressage et cases (ou cadres)
pour la mémoire physique).
•
La taille d’une page est fixe et égale à celle d’une case. Elle varie entre 512
octets et 8 Kio. (commande pagesize)
•
L’unité d’allocation est la page (le cadre). Il n’y a pas de fragmentation
externe car toutes les pages sont de même taille.
•
Par contre, il peut y avoir une fragmentation interne si une page de l’espace
d’adressage n’est pas pleine.
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 19
La pagination pure (2)
Exemple : Soit un programme de 64 Kio sur une machine 32 Kio de mémoire
physique
•Taille d’une page = Taille d’une case = 4 Kio.
7
•L’espace d’adressage virtuel
6
d’un processus est composé
5
4
3
de 16 pages de 4 Kio.
2
1
0
Mémoire physique
•La mémoire physique est
composée de 8 cases (cadres) de 4 Kio.
4
3
2
1
0
Espace d'adressage virtuel
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 20
Conversion d’adresses virtuelles
● Adresse virtuelle = (numéro de page, déplacement dans la page).
● Les adresses virtuelles référencées par l’instruction en cours
d’exécution doivent être converties en adresses physiques.
● La correspondance entre les pages et les cases est mémorisée dans
la table de pages. Le nombre d’entrées dans la table est égal au
nombre de pages virtuelles.
● La table des pages d’un processus doit être (en totalité ou en partie)
en mémoire centrale lors de l’exécution du processus. Elle est
nécessaire pour la conversion des adresses virtuelles en adresses
physiques.
● Chaque entrée de la table des pages est composée de plusieurs
champs, notamment :
–
–
–
–
–
–
Le bit de présence
Le bit de référence (R)
Les bits de protection (un, deux ou trois bits)
Le bit de modification (M appelé bit dirty/clean)
Le numéro de case correspondant à la page
son emplacement sur disque
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 21
Conversion d’adresses virtuelles (2) : exemple
● Supposons que l’adresse virtuelle est sur 16 bits :
(numéro de page (4 bits), déplacement dans la page (12 bits)).
● La conversion est réalisée en examinant l’entrée dans la table des pages
correspondant au numéro de page.
● Si le bit de présence est à 0, la page n’est pas en mémoire, il faut alors lancer
son chargement en mémoire.
● Sinon, on détermine l’adresse physique sur 15 bits en recopiant dans :
– les 3 bits de poids le plus fort, le numéro de case (110) correspondant au
numéro de page (0010) et
– les 12 bits de poids le plus faible, les 12 bits de poids le plus faible de
l’adresse virtuelle.
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 22
Conversion d’adresses virtuelles (3) : exemple
● L’adresse virtuelle 8196 (0010 0000 0000 0100) est convertie en
adresse physique 24580 (110 0000 000 0100).
0
0
1
0
0
0
0
010
1
1
001
1
2
3
110
1
000
1
100
1
011
1
000
000
0
0
000
0
101
1
000
111
0
1
000
0
000
0
000
000
0
0
Table des pages
15
Noyau d'un système d'exploitation
0
0
0
0
0
0
0
1
0
Adresse virtuelle
0
110
Adresse physique
1Adresse
1
0physique
0
0
0
0
0
0
0
0
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
0
1
0
0
Chapitre 7- 23
Exercice 1
•
Dans un système de mémoire virtuelle, la taille des pages virtuelles et
physiques est 1024 octets et l’adressage virtuel est sur 16 bits. Un processus
P1 utilise les 9 premières pages de son espace virtuel. Les champs P (bit de
présence) et Cadre (numéro de cadre physique) de la table des pages de
l’espace virtuel de P1 sont :
1. Quelle est la taille maximale (en nombre de pages) de l’espace virtuel d’un
processus ?
2. Quelle est l'adresse physique correspondant à chacune des adresses
virtuelles de P1 suivantes codées en hexadécimal : 0x0A2A et 0x01F1 ?
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 24
Conversion d’adresses virtuelles (4) : MMU
● Cette conversion d’adresse est effectuée par un composant matériel du
processeur le MMU : Memory Management Unit (MMU).
● Le MMU vérifie si l’adresse virtuelle reçue correspond à une adresse en
mémoire physique (en consultant la table des pages).
● Si c’est le cas, le MMU transmet sur le bus de la mémoire l’adresse réelle,
sinon il y a un défaut de page.
● Un défaut de page provoque un déroutement (trap) dont le rôle est de
ramener à partir du disque la page manquante référencée (l’unité de
transfert est la page).
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 25
Conversion d’adresses virtuelles (5) : MMU
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 26
Conversion d’adresses virtuelles (6)
MMU avec mémoire associative TLB
• Pour accélérer la translation d’adresse, le MMU est doté d’un composant,
appelé mémoire associative, composé d’un petit nombre d’entrées (8 à 128).
• Ce composant appelé aussi TLB (Translation Lookaside Buffers) contient des
informations sur les dernières pages référencées. Chaque entrée est
composée de :
-Un bit de validité
-Un numéro de page virtuelle
-Un bit de modification (M)
-Un, deux ou trois bits de protection
-Un numéro de case
1
1
1
1
Noyau d'un système d'exploitation
140
20
130
129
1
0
1
1
RW
RX
RW
RW
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
31
38
29
62
Chapitre 7- 27
Conversion d’adresses virtuelles (7)
MMU avec mémoire associative TLB
•
Lorsqu’une adresse virtuelle est présentée au MMU, il vérifie d’abord si le
numéro de la page virtuelle est présent dans la mémoire associative (en le
comparant simultanément à toutes les entrées).
•
S’il le trouve et le mode d’accès est conforme aux bits de protection, le
numéro de case est pris directement de la mémoire associative (sans
passer par la table des pages).
•
Si le numéro de page est présent dans la mémoire associative mais le
mode d’accès est non conforme, il se produit un défaut de protection.
•
Si le numéro de page n’est pas dans la mémoire associative, le MMU
accède à la table des pages à l’entrée correspondant au numéro de page.
•
Si le bit de présence de l’entrée trouvée est à 1, le MMU remplace une
des entrées de la mémoire associative par l’entrée trouvée. Sinon, il
provoque un défaut de page.
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 28
Conversion d’adresses virtuelles (8)
MMU avec mémoire associative TLB
A
Début
Mémoire
Pleine?
UCT accède
au TLB
Oui
Non
Remplacement
de page
Page
dans TLB?
Oui
Non
Accès à la table
de pages
Transfert de la page
du disque vers la mémoire
Mise à jour
de la table de pages
Noyau d'un système d'exploitation
A
Non
Page en
Mémoire?
Oui
Mettre à jour TLB
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
UCT génère
l’adresse physique
Chapitre 7- 29
Conversion d’adresses virtuelles (9)
MMU avec mémoire associative TLB
● Supposons qu’il faut 100ns pour accéder à la
table des pages et 20ns pour accéder à la
mémoire associative.
● Si la fraction de références mémoire trouvées
dans la mémoire associative (taux d’impact) est
s, le temps d’accès moyen est :
s * 20 + (1-s) *100.
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 30
Table des pages à plusieurs niveaux
● La taille de la table de pages peut être très grande: 220 entrées
(plus d’un million) pour un adressage virtuel sur 32 bits et des
pages de 4 Ko.
● Pour éviter d’avoir des tables trop grandes en mémoire, de
nombreux ordinateurs utilisent des tables de pages à plusieurs
niveaux.
● Par exemple, une table de pages à deux niveaux, pour un
adressage sur 32 bits et des pages de 4 Ko, est composée 1025
tables de 1024 entrées. Il est ainsi possible de ne charger que les
tables nécessaires.
● Dans ce cas, une adresse virtuelle de 32 bits est composée de
trois champs :
– un pointeur sur la table du 1er niveau (10 bits),
– un pointeur sur une table du 2nd niveau (10 bits) et
– un déplacement dans la page (12 bits).
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 31
Table des pages à 2 niveaux
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 32
ntains either the PPN of some physical page or the address of a disk block
ss, the MMU must access PTEs before it can determine the PPN. As wit
Table des pages à k niveaux
O is identical to the VPO.
VIRTUAL ADDRESS
n-1
VPN 1
VPN 2
Level 2
Page Table
Level 1
Page Table
...
... ...
p-1
VPN k
0
VPO
Level k
Page Table
PPN
m-1
p-1
PPN
0
PPO
PHYSICAL ADDRESS
Figure 10.19: Addresstranslation with a -level pagetable.
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 33
Table des pages inversée
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 34
Algorithmes de remplacement de page
● A la suite d’une faute de page (lourde), le système d’exploitation doit ramener
en mémoire la page manquante à partir du disque.
● S’il n’y a pas de case libre en mémoire, il doit retirer une page de la mémoire
pour la remplacer par celle demandée.
● Si la page à retirer a été modifiée depuis son chargement en mémoire, il faut la
réécrire sur le disque.
● Quelle est la page à retirer de manière à minimiser le nombre de défauts de
page ?
– Le choix de la page à retirer peut se limiter aux pages du processus qui a
provoqué le défaut de page (allocation locale) ou à l’ensemble des pages en
mémoire (allocation globale).
– En général, l’allocation globale produit de meilleurs résultats que l’allocation
locale.
● Ces algorithmes mémorisent les références passées aux pages. Le choix de la
page à retirer dépend des références passées.
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 35
Algorithme aléatoire
● Critère : choisir au hasard une page victime (à retirer de la mémoire)
● Facile
● Version locale et globale
● Utilisé pour des comparaisons entre méthodes
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 36
Algorithme optimal (BELADY)
● Critère : remplacer la page qui sera référencée le plus tard possible dans le futur
● Irréalisable, ne peut être fait que a posteriori
● Version locale et globale
● Intérêt pour faire des études analytiques comparatives
Nombre d'accès: 20
Fautes de page: 9 (45%)
Exemple 1 : avec 3 cadres
7 0
7 7
1
7
2
2
0
2
3
2
0
2
4
2
2
2
3
2
0
2
3
2
2
2
1
2
2
2
0
2
1
2
7
7
0
7
1
7
0
0
0
0
0
0
4
4
4
0
0
0
0
0
0
0
0
0
0
1
1
1
3
3
3
3
3
3
3
3
1
1
1
1
1
1
1
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 37
Algorithme FIFO
● Critère : la page dont le temps de résidence est le plus long
● Implémentation facile : pages résidentes en ordre FIFO (on expulse la première)
● Ce n’est pas une bonne stratégie : critère non fondé sur l’utilisation de la page
● Anomalie de Belady : en augmentant le nombre de cadres on augmente le
nombre de défauts de page au lieu de le diminuer.
7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
7 7 7 2 2 2 2 4 4 4 0 0 0 0 0 0 0 7 7 7
0 0 0 0 3 3 3 2 2 2 2 2 1 1 1 1 1 0 0
1 1 1 1 0 0 0 3 3 3 3 3 2 2 2 2 2 1
Nombre d'accès: 20
Fautes de page: 15 (75%)
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 38
Algorithme FIFO (2)
Anomalie de Belady
Exemple 2 avec 3 cadres
Nombre d'accès: 20
Fautes de page: 15 (75%)
7 0 1 2 7 0 3 7 0 1 2 3 7 0 1 2 3 2 4 3
7 7 7 2 2 2 3 3 3 3 3 3 7 7 7 2 2 2 2 2
0 0 0 7 7 7 7 7 1 1 1 1 0 0 0 3 3 3 3
1 1 1 0 0 0 0 0 2 2 2 2 1 1 1 1 4 4
Exemple 2 avec 4 cadres
Nombre d'accès: 20
Fautes de page: 16 (80%)
7 0 1 2 7 0 3 7 0 1 2 3 7 0 1 2 3 2 4 3
7 7 7 7 7 7 3 3 3 3 2 2 2 2 1 1 1 1 1 1
0 0 0 0 0 0 7 7 7 7 3 3 3 3 2 2 2 2 2
1 1 1 1 1 1 0 0 0 0 7 7 7 7 3 3 3 3
2 2 2 2 2 2 1 1 1 1 0 0 0 0 0 4 4
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 39
Algorithme LRU
•
Critère : page résidente la moins récemment utilisée
•
Basé sur le principe de localité : une page a tendence à être réutilisée dans un
futur proche.
•
Difficile à implémenter sans support matériel
Exemple 1 avec 3 cadres
Nombre d'accès: 20
Fautes de page: 12 (60%)
7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
7 7 7 2 2 2 2 4 4 4 0 0 0 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 3 3 3 3 3 3 0 0 0 0 0
1 1 1 3 3 3 2 2 2 2 2 2 2 2 2 7 7 7
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 40
Algorithme LRU (2)
Comment l’implémenter ?
•
Mémoriser pour chaque page en mémoire la date de la dernière référence.
•
Vieillissement :
•
-
Un registre de n bits est associé à chaque page,
-
Le bit le plus significatif est mis à 1 à chaque référence
-
Régulièrement, on décale vers la droite les bits de ce registre,
-
On choisit la page dont la valeur est la plus petite
Utilisation d’une pile :
-
Ajouter ou déplacer, en sommet de pile, le numéro de la page référencée,
-
On remplace la page située au fond de la pile.
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 41
Algorithme de l’horloge (seconde chance)
● Approximation de LRU
● Les pages en mémoire sont mémorisées dans une liste circulaire en forme
d’horloge.
● On a un indicateur sur la page la plus ancienne et un indicateur de
référencement R sur chaque page..
● Lorsqu’un défaut de page se produit, les pages sont examinées, une par
une, en commançant par celle pointée par l’indicateur.
● La première page rencontrée ayant son bit de référence R à 0 est
remplacée. Le bit R de la page ajoutée est à 1.
● Le bit R des pages examinées est remis à 0.
● Une variante de cet algorithme, tient compte du bit de modification M.
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 42
Algorithme de l’horloge (2)
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 43
Comment répartir la mémoire entre les
processus ?
● Allouer un même nombre cadres (cases) à chaque processus. Par
exemple, si la mémoire totale fait 100 cadres et qu’il y a cinq processus,
chaque processus recevra 20 cadres.
● Allouer les cases proportionnellement aux tailles des programmes ou en
tenant compte des priorités. L’architecture impose un nombre minimum.
● L’allocation des cases peut se faire lors du chargement ou à la demande,
au cours de l’exécution.
Espace de travail (working set) :
● W(t,) est l'ensemble des pages qui ont fait l'objet d'au moins une
référence entre le temps t- et t.
● On conserve en mémoire les pages référencées entre t et t- .
● Cet espace de travail ne doit pas excéder une certaine limite.
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 44
Problème de l’écroulement du système
● Le système passe plus de temps à traiter les défauts de page qu’à
exécuter des processus.
● Si le nombre de processus est trop grand et l’espace propre à chacun est
insuffisant, ils passeront leur temps à gérer des fautes de pages.
● On peut limiter le risque d’écroulement en surveillant le nombre de défauts
de page provoqués par un processus.
● Si un processus provoque trop de défauts de pages (au-dessus d’une
limite supérieure) on lui allouera plus de pages; au-dessous d’une limite
inférieure, on lui en retirera.
● S’il n’y a plus de cases disponibles et trop de défauts de pages, on devrait
suspendre un des processus.
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 45
Problème de l’écroulement du système (2)
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 46
Retour sur instruction
● Sur la plupart des processeurs, les instructions se codent sur plusieurs
octets.
● Si un défaut de page se produit au milieu d’une instruction, le processeur
doit revenir au début de l’instruction initiale, avant de lancer le chargement
de la page manquante en mémoire.
● Ce retour sur instruction n’est possible qu’avec l’aide du matériel.
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 47
Segmentation/pagination
● L’espace d’adressage d’un processus est composé d’un ensemble de
segments. Ces segments sont de tailles différentes (fragmentation externe).
● La segmentation facilite l’édition de liens, le partage entre processus de
segments de données ou de codes.
● La segmentation peut être combinée avec la pagination : Chaque segment
est composé d’un ensemble de pages. Les adresses virtuelles sont dans ce
cas des triplets :
(numéro du segment, numéro de page, déplacement dans la page)
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 48
Linux
514
Espace d’adressage d’un processus
• Chaque processus sur une
machine de 32-bit a 3 GB
d’espace d’adressage virtuel
accessible en mode
utilisateur,
• le GB restant est réservé aux
tables des pages, la pile
d’exécution, données et code
du système d’exploitation,
accessible en mode noyau.
process-specific data
structures
(e.g., page tables,
task and mm structs, kernel
stack)
different for
each process
physical memory
identical for
each process
kernel
virtual
memory
kernel code and data
0xc0000000
%esp
user stack
0x40000000
Memory mapped region
for shared libraries
process
virtual
memory
brk
runtime heap (via malloc)
0x08048000
0
Noyau d'un système d'exploitation
uninitialized data (.bss)
initialized data (.data)
program text (.text)
forbidden
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 49
Linux (2)
Espace d’adressage d’un processus
task_struct
mm
vm_area_struct
mm_struct
pgd
mmap
vm_end
vm_start
vm_prot
vm_flags
vm_next
vm_end
vm_start
vm_prot
vm_flags
• L’espace d’adressage est
composé d’un ensemble de
régions.
process virtual memory
shared libraries
0x40000000
data
0x0804a020
vm_next
• Chaque région est un ensemble
de pages contiguës avec les
mêmes propriétés (text, data,
pile, librairies partagées, fichier
mmap,...).
text
vm_end
vm_start
vm_prot
vm_flags
vm_next
0x08048000
0
Figure 10.29: HowLinux organizesvirtual memory.
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 50
Linux (3)
Espace d’adressage d’un processus
task_struct
mm
vm_area_struct
mm_struct
pgd
mmap
vm_end
vm_start
vm_prot
vm_flags
vm_next
•
•
•
vm_start et vm_end : pointent
vers le début et la fin de la
région.
vm_prot : indique les
permissions d’accès read/write
aux pages de la région.
process virtual memory
vm_end
vm_start
vm_prot
vm_flags
shared libraries
0x40000000
data
0x0804a020
vm_next
text
vm_end
vm_start
vm_prot
vm_flags
vm_next
0x08048000
0
Vm_flags : indique notamment si
10.29: HowLinux organizesvirtual memory.
la région est privéeFigure
ou non.
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 51
Linux (4)
Espace d’adressage d’un processus
• Comment vérifier si une adresse virtuelle
est légale ?
process virtual memory
vm_area_struct
• Comment vérifier si la page de l’adresse
virtuelle est en mémoire ?
vm_end
vm_start
r/o
shared libraries
vm_next
vm_end
vm_start
r/w
• Comment vérifier si l’accès est légal ?
data
• Comment récupérer l’adresse physique ?
1
segmentation fault:
accessing a non-existing page
3
normal page fault
vm_next
vm_end
vm_start
r/o
text
2
protection exception:
e.g., violating permissions by
writing to a read-only page
vm_next
Noyau d'un système d'exploitation
0
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 52
Linux (5)
Espace d’adressage d’un processus
515
Adresse virtuelle
Table des pages à 4 niveaux
task_struct
mm
vm_area_struct
mm_struct
pgd
mmap
process virtual memory
vm_end
vm_start
vm_prot
vm_flags
vm_next
vm_end
vm_start
vm_prot
vm_flags
shared libraries
0x40000000
data
0x0804a020
vm_next
text
vm_end
vm_start
vm_prot
vm_flags
vm_next
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
0x08048000
0
Chapitre 7- 53
physical
and systems such as digital signal processors, embe
Linuxaddressing,
(6)
y supercomputers
continue to d’un
do so. processus
However, modern processors desig
Espace d’adressage
ngTranslation
use a form
of addressing known as virtual addressing (Figure 10.2).
d’adresses
CPU
CPU chip
chip
CPU
CPU
Virtual
Virtual
Address
Address
(VA)
(VA)
Address
Address
translation
translation
MMU
MMU
Physical
Physical
address
address
(PA)
(PA)
4100
4100
44
Main
Main memory
memory
0:
0:
1:
1:
2:
2:
3:
3:
4:
4:
5:
5:
6:
6:
7:
7:
...
M-1:
M-1:
Data
Data word
word
Figure 10.2: A systemthat usesvirtual addressing.
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 54
Linux (7)
Mémoire physique
•
Linux supporte des architectures NUMA (Non Uniform Memory Access) qui
utilisent des unités mémoires hétérogènes avec des caractéristiques différentes.
•
Linux offre la possibilité de gérer ces unités mémoires en associant à chaque
unité un nœud (de type struct_pglist_data). Ces nœuds sont chainés entre-eux.
•
Dans une architecture UMA, un seul nœud est présent.
•
Pour certaines architectures (ex. x86), il n’est pas possible de traiter toute la
mémoire physique (unité mémoire) de la même manière. Chaque nœud (unité
mémoire) est composé de trois zones mémoires :
-
•
ZONE_DMA (16 Mo sur x86) réservée pour l’accès DMA des périphériques
(qui ne peuvent accéder qu’aux 16 premiers Mio de la mémoire physique),
ZONE_NORMAL (à mappage direct dans l’espace noyau) et
ZONE_HIGHMEM utilisée si la taille des deux zones précédentes est
supérieure à 896 Mo sur x86 (adresses non mappées de façon permanente).
ZONE_DMA et HIGHMEM peuvent être vides.
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 55
Linux (8)
Mémoire physique
•
Le noyau conserve une
image de la mémoire
physique (ZONE_NORMAL).
•
La mémoire physique est
constituée de trois parties.
•
Les deux premières
(réservées au noyau et à
l’image de la mémoire) sont
fixées en mémoire (jamais
swappées).
•
Le reste est divisé en cadres.
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 56
Linux (9)
Politique d’allocation : buddy algorithm
• Un système de pagination à la demande sans prépaginiation ni
concept d’ensemble de travail.
• Allocation de la mémoire physique par subdivision
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 57
Linux (10)
Politique de remplacement
• Au démarrage, Init lance un démon de pages (processus kswapd qui exécute
l’algorithme de remplacement de pages de type « horloge ») pour chaque
nœud mémoire.
• Ce démon est réveillé périodiquement ou suite à une forte allocation d’espace
mémoire, pour vérifier si le nombre de cases libres en mémoire est trop bas
(inférieur à un seuil min). Si ce n’est pas le cas, il se remet au sommeil.
• Sinon, Il parcourt les listes active et inactive de chaque zone à la recherche
de pages à libérer.
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 58
Linux (11)
Appels système
• Les appels systèmes splice et sendfile permettent d'éviter les
copies: transférer les pages d'un espace d'adressage virtuel à
l'autre par le biais des tables de pages.
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 59
Exercice 1
Caractéristiques du système :
Mémoire physique de 64 mots de 8 bits
Taille d’une page = 4 mots
Table des pages à deux niveaux:
Adresse virtuelle sur 6 bits : 2 bits (niv. 1), 2 bits (niv. 2), 2 bits (décalage)
Une entrée dans la table des pages sur 8 bits:
- 2 bits de contrôle : bit de présence, bit de référence (10,11)
si bit de présence =0 et bit de référence =1, la page est dans la zone de « «swap »
- 6 bits pour l’adresse
Deux processus P1 et P2 sont en mémoire.
La table de premier niveau de P1 commence à 32
La table de premier niveau de P2 commence à 52.
Supposez que l’état courant de la mémoire est :
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 60
Figure 1
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 61
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 62
Noyau d'un système d'exploitation
Génie informatique et génie logiciel
Ecole Polytechnique de Montréal
Chapitre 7- 63
Téléchargement