Mémoire

Transcription

Mémoire
Chapitre 5
Gestion de la mémoire
Jean Privat
Université du Québec à Montréal
INF3172 — Principes des systèmes d’exploitation
Automne 2016
Jean Privat (UQAM)
05 — Memoire
INF3172 — Automne 2016
1 / 42
Plan
1
Mémoire, SE et processus
2
Problèmes d’allocation
3
Pagination
4
Mémoire virtuelle
5
Pagination avancée
Jean Privat (UQAM)
05 — Memoire
INF3172 — Automne 2016
2 / 42
Rôles du SE (rappel)
Gestion
Gestion
Gestion
Gestion
des processus
de la mémoire
des fichiers
des entrées-sorties
Jean Privat (UQAM)
05 — Memoire
INF3172 — Automne 2016
3 / 42
Objectifs
Comprendre
Comment la mémoire est gérée par le SE (et le
matériel)
Les algorithmes liés à la gestion de la mémoire
(utilisables dans d’autre contextes)
Jean Privat (UQAM)
05 — Memoire
INF3172 — Automne 2016
4 / 42
Mémoire
La bonne mémoire
est rapide
est grande
est bon marché
est non volatile
mais elle n’existe pas (encore)
En attendant
Hiérarchie de mémoire
caches, ram, disques
Jean Privat (UQAM)
05 — Memoire
INF3172 — Automne 2016
5 / 42
Plan
1
Mémoire, SE et processus
2
Problèmes d’allocation
3
Pagination
4
Mémoire virtuelle
5
Pagination avancée
Jean Privat (UQAM)
05 — Memoire
INF3172 — Automne 2016
6 / 42
Gestionnaire de mémoire
Une composante du SE dédiée
Le gestionnaire de la mémoire
Son rôle : gérer la ressource mémoire
Entre processus
Entre processus et SE
Son outil principal : le processeur
Chaque processeur édicte ses propres règles
Et ça facilite pas les choses
Jean Privat (UQAM)
05 — Memoire
INF3172 — Automne 2016
7 / 42
Rôles du gestionnaire de la mémoire
Allocation
Trouver où loger un nouveau processus
Satisfaire ses demandes de mémoire supplémentaire
Libérer l’espace des processus terminés
Le tout sans gaspiller
Protection
Ne pas laisser un processus accéder ou corrompre la
mémoire qui n’est pas à lui
Jean Privat (UQAM)
05 — Memoire
INF3172 — Automne 2016
8 / 42
Mémoire et programmes
Un programme est constitué d’adresses
Données (ex. lecture d’une variable globale)
Instructions (ex. appel de fonction)
Qui décide de la valeur de ces adresses ?
Le compilateur et l’éditeur de liens
Le choix est-il immuable ?
Non, sinon adieu multi-programmation
Un mécanisme est nécessaire pour translater les
adresses
Jean Privat (UQAM)
05 — Memoire
INF3172 — Automne 2016
9 / 42
Relogement (ou relocation)
Principe
Un processus doit pouvoir être situé n’importe où en
mémoire (voire changer de place)
Adresses virtuelles (ou relative)
Le compilateur et éditeur de liens déterminent les
adresses à partir de 0
Adresses réelles
Un mécanisme matériel permet de passer de
l’adresse relative à l’adresse réelle
De nombreux mécanismes différents existent
Jean Privat (UQAM)
05 — Memoire
INF3172 — Automne 2016
10 / 42
base/limit
Coté processeur
Un registre processeur particulier : base
Accessible en mode noyau uniquement
Le MMU (Memory Managment Unit) fait
adresse absolue = adresse relative + base
Coté SE
Adresse base connue pour chaque processus
Base est correctement positionné lors des
changement de contexte
Jean Privat (UQAM)
05 — Memoire
INF3172 — Automne 2016
11 / 42
base/limit - protection
Coté processeur
Un registre privilégié en plus : limit
Le MMU fait
si adresse relative>limit alors erreur (interruption)
sinon adresse absolue = adresse relative + base
Coté SE
limit dans la table des processus
veiller aux changement de contextes
si interruption alors envoyer SIGSEGV au processus
fautif
Jean Privat (UQAM)
05 — Memoire
INF3172 — Automne 2016
12 / 42
Plan
1
Mémoire, SE et processus
2
Problèmes d’allocation
3
Pagination
4
Mémoire virtuelle
5
Pagination avancée
Jean Privat (UQAM)
05 — Memoire
INF3172 — Automne 2016
13 / 42
Problèmes d’allocation
Problème
On a un espace mémoire
On a des demande d’allocation et de déallocation
Comment faire ça au mieux ?
Applications
Gestion de la mémoire par le SE
Gestion de l’espace disque par le SE
Gestion du tas par les processus
Jean Privat (UQAM)
05 — Memoire
INF3172 — Automne 2016
14 / 42
Allocation contiguë des processus
Chaque processus a un bloc de mémoire
Les blocs sont alloués et déalloués au fur et à mesure
Jean Privat (UQAM)
05 — Memoire
INF3172 — Automne 2016
15 / 42
Allocation contiguë - Problèmes
Problèmes en vrac
Où allouer ?
Comment gérer l’espace libre ?
Comment réduire la fragmentation ?
Que faire quand l’espace est plein ?
Jean Privat (UQAM)
05 — Memoire
INF3172 — Automne 2016
16 / 42
Gestion de la mémoire libre
Impondérable
Des structures de données pour gérer la mémoire
libre
Ces structures sont en mémoire
Deux approches
Table de bits
Liste chaînée
Jean Privat (UQAM)
05 — Memoire
INF3172 — Automne 2016
17 / 42
Table de bit
Principe
Un bit représente un bloc mémoire
0 = bloc libre ; 1 = bloc occupé
Problèmes
Recherche segment libre lent
Fragmentation interne
Jean Privat (UQAM)
05 — Memoire
INF3172 — Automne 2016
18 / 42
Liste chaînée
Principe
Liste des segments libres et occupés
Problèmes
Plus compliqué
Taille non bornée des données de gestion
Jean Privat (UQAM)
05 — Memoire
INF3172 — Automne 2016
19 / 42
Fragmentation
Définition
De l’espace libre mais pas utilisable
Fragmentation externe
Les morceaux libres sont trop petits bien que la
place totale libre est suffisante
Solution : recompactage
Fragmentation interne
L’unité allocation est le bloc
Or tout bloc entamé est considéré comme utilisé
Donc plus d’octets que nécessaires sont alloués
Jean Privat (UQAM)
05 — Memoire
INF3172 — Automne 2016
20 / 42
Politiques d’allocation
Problème
Comment choisit quelle zone libre à utiliser
Approches
Première zone libre (first fit)
Zone libre suivante (next fit)
Meilleure zone libre (best fit)
Meilleur zone résiduelle (worst fit)
Jean Privat (UQAM)
05 — Memoire
INF3172 — Automne 2016
21 / 42
Plan
1
Mémoire, SE et processus
2
Problèmes d’allocation
3
Pagination
4
Mémoire virtuelle
5
Pagination avancée
Jean Privat (UQAM)
05 — Memoire
INF3172 — Automne 2016
22 / 42
Pagination
Idée
Découper l’espace mémoire réel en unités de taille
fixe
Les pages réelles (ou cadres)
Découper l’espace d’adressage des processus en
unités de même taille
Les pages virtuelles
Associer dynamiquement les pages virtuelles et les
pages réelle (MMU)
Jean Privat (UQAM)
05 — Memoire
INF3172 — Automne 2016
23 / 42
Pagination - Exemple
Jean Privat (UQAM)
05 — Memoire
INF3172 — Automne 2016
24 / 42
Pagination — MMU et SE
Au niveau MMU
Une adresse virtuelle est décomposée en
Numéro de page
Adresse dans la page (décalage ou offset)
L’association se fait par la table des pages
Au niveau SE
Une table des pages par processus
Mettre à jour la table MMU lors des changement de
contextes
Jean Privat (UQAM)
05 — Memoire
INF3172 — Automne 2016
25 / 42
Table des pages
Jean Privat (UQAM)
05 — Memoire
INF3172 — Automne 2016
26 / 42
Table des pages
Où est la table ?
Registres ? Non, la table est trop grande !
Un gros bloc en mémoire ? Où est ce bloc ?
Il faut aussi que le SE garde une table par processus
(et que le changement de contexte ait un coup
raisonnable)
Solution (une parmi d’autres)
Registre privilégié pour l’adresse de la table
Tables d’indirection en RAM
Cache en MMU : Translation Lookaside Buffer
Jean Privat (UQAM)
05 — Memoire
INF3172 — Automne 2016
27 / 42
Pagination à deux niveaux
Jean Privat (UQAM)
05 — Memoire
INF3172 — Automne 2016
28 / 42
TLB et caches
Jean Privat (UQAM)
05 — Memoire
INF3172 — Automne 2016
29 / 42
Plan
1
Mémoire, SE et processus
2
Problèmes d’allocation
3
Pagination
4
Mémoire virtuelle
5
Pagination avancée
Jean Privat (UQAM)
05 — Memoire
INF3172 — Automne 2016
30 / 42
Mémoire virtuelle
Aller plus loin
Pouvoir offrir à chaque processus une mémoire plus
grande que celle disponible
Idée
Utiliser le disque comme mémoire supplémentaire
Partition d’échange ou swap
Raisonnement
Un processus n’a pas forcément besoin d’être
entièrement en mémoire principale
Jean Privat (UQAM)
05 — Memoire
INF3172 — Automne 2016
31 / 42
Mémoire virtuelle et pagination
Une page virtuelle peut être soit en mémoire (page
réelle) ou sur le disque
Lorsque la page est sur le disque, on la charge en
RAM au besoin
Lorsque la RAM est pleine, on migre des pages vers
le disque
Jean Privat (UQAM)
05 — Memoire
INF3172 — Automne 2016
32 / 42
Mémoire virtuelle — MMU et SE
Coté MMU
Un champ dans la table d’indirection des pages
indique si la page est en RAM ou pas
Si on accède à une page hors RAM, une interruption
défaut de page est lancée
Coté SE
Le swap doit être géré en plus du reste
Un défaut de page implique le chargement de la
page en mémoire
Jean Privat (UQAM)
05 — Memoire
INF3172 — Automne 2016
33 / 42
Défaut de page
Lors d’une interruption ’défaut de page’
Processus passé à bloqué
Page manquante est localisée
Demande chargement page manquante
Possiblement, déchargement d’une autre page
L’ordonnanceur est appelé
Lorsque la page manquante est chargée
Tables des pages mises à jour
Processus demandeur est passe à prêt
L’ordonnanceur est appelé
Jean Privat (UQAM)
05 — Memoire
INF3172 — Automne 2016
34 / 42
Politique de gestion des pages
Quelle pages migrer en swap ?
Problème bien étudié et bien généralisable
Idées de base
Idéal : Les pages non utilisées dans un futur proche
migrent en swap
Approximation : Les pages non utilisées récemment
migrent en swap
Approximation pire : Les pages anciennes migrent en
swap
Jean Privat (UQAM)
05 — Memoire
INF3172 — Automne 2016
35 / 42
Algo naïf : FIFO
Principe
Un file des pages
Les pages vieilles migrent en swap
Problème : Anomalie de Belady
1,2,3,4,1,2,5,1,2,3,4,5 avec 3 et 4 cases
Jean Privat (UQAM)
05 — Memoire
INF3172 — Automne 2016
36 / 42
Algo de l’horloge ou de la seconde
chance
Comme l’algo naïf mais
Un bit marque les page utilisés (MMU)
Parcours circulaire des pages candidates
Si son bit = 1, on le passe à 0
Si son bit = 0, on migre la page en swap
Exemple
1,2,3,4,1,2,5,1,2,3,4,5 avec 3 et 4 cases
Jean Privat (UQAM)
05 — Memoire
INF3172 — Automne 2016
37 / 42
Plan
1
Mémoire, SE et processus
2
Problèmes d’allocation
3
Pagination
4
Mémoire virtuelle
5
Pagination avancée
Jean Privat (UQAM)
05 — Memoire
INF3172 — Automne 2016
38 / 42
Pagination et protection
Champs dans la page des pages
Page invalide
Lecture seule ou lecture/écriture
Exécution ou non
En cas de contrevenance
Le processeur informe le SE par une interruption
matérielle
Le SE informe le processus fautif par un signal
Jean Privat (UQAM)
05 — Memoire
INF3172 — Automne 2016
39 / 42
Partage de pages
Idée
Un même cadre peut être associé à plusieurs dans
plusieurs processus
Applications
Partage du code
Partage des données en lecture seule
Partage des bibliothèques
Communication par mémoire partagée
Implémentation des threads
Jean Privat (UQAM)
05 — Memoire
INF3172 — Automne 2016
40 / 42
Tables des inodes en mémoire
Idée
Les caches des fichiers peuvent êtres rendus visibles
aux processus
Applications
Projection des fichiers en mémoire (mmap)
Exécutables et bibliothèques
Jean Privat (UQAM)
05 — Memoire
INF3172 — Automne 2016
41 / 42
Copy-on-write
Idée
Deux pages différentes mais contenant les mêmes
octets peuvent être associées à un même cadre
Si l’une des deux pages diffère, on duplique le cadre
Application
fork() efficace
Implémentation
Un cadre partagé est mit en lecture-seule
Une écriture par un processus est interceptée par le
SE qui duplique alors le cadre
Jean Privat (UQAM)
05 — Memoire
INF3172 — Automne 2016
42 / 42

Documents pareils