MMU ( unité de gestion mémoire )
Transcription
MMU ( unité de gestion mémoire )
GESTION DE LA MÉMOIRE Translation d’adresse MÉMOIRE VIRTUELLE logique Î physique mécanisme (MMU) protection Mémoire virtuelle Allocation de la mémoire organisations et algorithmes interaction avec l'allocation du CPU et le swapping similarité avec l'allocation des fichiers Chargement de page sur demande Performance - temps d’accès - espace utilisé Allocation contiguë partitions fixes partitions variables Æ algorithmes Gestion des pages et écroulement ( thrashing ) Algorithmes de remplacement de page Cache mémoire Mémoire paginée Mémoire segmentée Mémoire segmentée et paginée 4-1 ORGANISATION DE LA MÉMOIRE 0 Î Espace logique NOYAU Î Allocation & mapping Contiguë processus # 1 Paginée 0 Translation d'adresse logique --> physique Linéaire Contiguë 4-2 MULTI-PROGRAMMATION P1 CPU processus # 2 Paginée 0 P2 - lors du chargement - à l'exécution - dynamique (matériel spécial) Segmenté Segmentée Segmentée & Paginée CPU Problèmes: protection performance 4-3 ADRESSE LOGIQUE VS ADRESSE PHYSIQUE MMU ( unité de gestion mémoire ) 0 MÉMOIRE données données À quoi correspondent les adresses dans le code en mémoire ? + relatives au processus + doivent être traduites (translation d'adresse) 0 Processus mov ad_1, ad_2 CPU MÉMOIRE jmp ad_3 CPU MMU adresse ad_3 MMU ad_1 ad_2 adresse Translation d'adresse Protection mémoire données données CPU MÉMOIRE registre MÉMOIRE base CPU + + < adresse limite adresse 4-6 Programme C Adresse logique vs adresse physique MMU CODE MÉMOIRE registre CPU + INSTRUCTION int a; 4.2 Gestion des adresses COMPILATION a = ... adresse a 0 CODE pr.c DATA ADRESSE a pr.o ÉDITEUR DE LIENS 0 ESPACE LOGIQUE ESPACE PHYSIQUE (obj) fichiers OBJ xx MÉMOIRE CODE Base DATA a adresse logique MÉMOIRE CHARGEMENT ET EXÉCUTION + adresse physique reg. Programme pr.out (exe) CPU TRANSLATION D'ADRESSE Compilation Source 0 A Var A B Module Objet var_1 var_2 L1 ÉDITEUR DE LIENS 0 extern int var_1 int var_2 static int var_3 Code exécutable CHARGEMENT EN MÉMOIRE 0 Mémoire mov add void func_1( ) { int local_1 var_1 } var_2 Objet A Objet B Objet B CODE func_1 Prog Prog. fichier objet MOV B, A test JSB L1 Objet A adr. fichier source B Prog A = B if( ....) then CODE DATA + données constantes variables var_3 COMPOSITION D'UN MODULE OBJET variables internes export var_2 func_1 (références) adr_2 adr_4 privées adr_3 var_3 variables externes import var_1 ? liste des références 4-8 format ELF format ELF Module objet table des symboles - nom (strtab) - adresse +section ou Fichier exécutable tables de relocatisation - # symbole - position 4-11 ALLOCATION CONTIGUË Édition des liens 4-4 Un registre pour l'adresse de base données MÉMOIRE Æ translation d'adresse 1) Résoudre les références externes + Æ protection < 2) L'assignation mémoire limite adresse 3) Relocalisation des symboles 4-13 PARTITIONS FIXES Le nombre et la taille des partitions sont fixes 0 P1 ALLOCATION MÉMOIRE ET GESTION DES TÂCHES (allocation des processus - haut niveau) Une file par partition NOYAU 0 P1 Partition A 1.5 M, 1 M, 2 M Noyau 2 M 2.5 M, 4 M, 5 M 6 M P2 Partition B Algorithme d'allocation des tâches FCFS SPN PRIORITÉ 0 P2 base CPU Un registre de limite (taille) 12 M, 8 M 12 M PARTITIONS VARIABLES ou dynamiques Une seule file 4-15 Le nombre et la taille des partitions sont variables Noyau 2 M 0 NOYAU 6 M 0 1 M, 7 M, 3 M, 2 M, 5 M P1 12 M P1 0 P2 P2 Problèmes de - sélection de la grandeur des partitions - fragmentation interne Problèmes de - fragmentation externe - maintenir une liste des espaces disponibles ( trous ) 4-16 Algorithme FIRST-FIT 0 Choisi le PREMIER espace libre pouvant contenir le processus à partir du DÉBUT de la liste des espaces libres a Système ( noyau) 16 M libre b utilisé c FCFS demandes 13 M 5M 14 M 14 M libre Liste des espaces libres d adresse de début taille e f a c e g 16 M 14 M 5M 30 M utilisé 5 M libre utilisé g 30 M libre Nous utilisons ? autres critères - une liste ordonnée selon l'adresse - reprise de la recherche au début de la liste Algorithme FIRST-FIT Algorithme FIRST-FIT 0 Choisi le PREMIER espace libre pouvant contenir le processus à partir du DÉBUT de la liste des espaces libres Système ( noyau) 13 M a' b 3M 0 Choisi le PREMIER espace libre pouvant contenir le processus à partir du DÉBUT de la liste des espaces libres 13 M a' b utilisé c FCFS demandes 5M 14 M 14 M libre Liste des espaces libres d adresse de début taille e f a' c e g 3M 14 M 5M 30 M Nous utilisons - une liste ordonnée selon l'adresse - reprise de la recherche au début de la liste utilisé FCFS demandes 5 M libre 14 M utilisé g 30 M libre Système ( noyau) Liste des espaces libres adresse de début taille a' c' e g 3M 9M 5M 30 M Nous utilisons - une liste ordonnée selon l'adresse - reprise de la recherche au début de la liste c' d 3M utilisé 5M 9 M libre utilisé e f 5 M libre utilisé g 30 M libre Algorithme FIRST-FIT 0 Choisi le PREMIER espace libre pouvant contenir le processus à partir du DÉBUT de la liste des espaces libres FCFS demandes Algorithme NEXT-FIT Système ( noyau) 13 M a' b Liste des espaces libres adresse de début taille a' c' e g' 3M 9M 5M 16 M c' d 3M 16 M libre b utilisé FCFS demandes 5 M libre 13 M utilisé 5M 14 M 14 M g' 16 M libre 14 M libre Liste des espaces libres d adresse de début taille e f a c e g 16 M 14 M 5M 30 M utilisé utilisé g 30 M libre Algorithme NEXT-FIT 0 a 0 Choisi le PREMIER espace libre pouvant contenir le processus SUIVANT la dernière insertion dans la liste des espaces libres Système ( noyau) 16 M libre b a 16 M libre utilisé utilisé 5M 14 M c 14 M libre Liste des espaces libres d adresse de début taille e f a c e g' 16 M 14 M 5M 17 M FCFS demandes utilisé 5 M libre 14 M utilisé 13 M g' 17 M libre Nous utilisons - une liste ordonnée selon l'adresse - reprise de la recherche à la suite de la dernière insertion 14 M libre Liste des espaces libres d adresse de début taille e f a c e g'' 16 M 14 M 5M 12 M FCFS utilisé 13 M g'' 5M 12 M libre Algorithme NEXT-FIT 0 a' b Système ( noyau) 14 M 2M utilisé d adresse de début taille e f a' c e g'' 2M 14 M 5M 12 M utilisé FCFS demandes 5 M libre 13 M utilisé 5M 13 M g'' 5M 12 M libre Nous utilisons - une liste ordonnée selon l'adresse - reprise de la recherche à la suite de la dernière insertion a 14 M Système ( noyau) 16 M libre b Nouveau départ 14 M libre Liste des espaces libres 0 Choisi le PREMIER espace libre pouvant contenir le processus SUIVANT la dernière insertion dans la liste des espaces libres c demandes utilisé 5 M libre Nous utilisons - une liste ordonnée selon l'adresse - reprise de la recherche à la suite de la dernière insertion Algorithme NEXT-FIT Choisi le PREMIER espace libre pouvant contenir le processus SUIVANT la dernière insertion dans la liste des espaces libres Système ( noyau) b c FCFS 5 M libre Nous utilisons - une liste ordonnée selon l'adresse - reprise de la recherche à la suite de la dernière insertion Algorithme NEXT-FIT demandes Système ( noyau) c 5M 9 M libre Nous utilisons - une liste ordonnée selon l'adresse - reprise de la recherche au début de la liste Choisi le PREMIER espace libre pouvant contenir le processus SUIVANT la dernière insertion dans la liste des espaces libres a utilisé utilisé e f 0 Choisi le PREMIER espace libre pouvant contenir le processus SUIVANT la dernière insertion dans la liste des espaces libres utilisé c 14 M libre Liste des espaces libres d adresse de début taille e f a c e g 16 M 14 M 5M 30 M utilisé 5 M libre utilisé g 30 M libre Nous utilisons - une liste ordonnée selon l'adresse - reprise de la recherche à la suite de la dernière insertion Algorithme NEXT-FIT Algorithme NEXT-FIT 0 Choisi le PREMIER espace libre pouvant contenir le processus SUIVANT la dernière insertion dans la liste des espaces libres a 0 Choisi le PREMIER espace libre pouvant contenir le processus SUIVANT la dernière insertion dans la liste des espaces libres Système ( noyau) 16 M libre b a 16 M libre b utilisé FCFS demandes 5M 14 M Liste des espaces libres c' d adresse de début taille e f a c' e g 16 M 1M 5M 30 M utilisé 13 M 1M utilisé FCFS demandes 5 M libre 14 M utilisé g Liste des espaces libres adresse de début taille a c' g 16 M 2M 30 M c' d 13 M 1M utilisé 5 M5 M libre utilisé g 30 M libre 30 M libre Nous utilisons - une liste ordonnée selon l'adresse - reprise de la recherche à la suite de la dernière insertion Nous utilisons - une liste ordonnée selon l'adresse - reprise de la recherche à la suite de la dernière insertion Algorithme NEXT-FIT Algorithme BEST-FIT 0 Choisi le PREMIER espace libre pouvant contenir le processus SUIVANT la dernière insertion dans la liste des espaces libres Système ( noyau) a Choisi le PLUS PETIT espace libre pouvant contenir le processus dans la liste des espaces libres Système ( noyau) 16 M libre 0 a Système ( noyau) 16 M libre b b utilisé utilisé c FCFS demandes Liste des espaces libres adresse de début taille a c' g' 16 M 2M 16 M c' d 13 M 1M utilisé FCFS demandes 5 M5 M libre 13 M utilisé 5M 14 M 14 M g' 16 M libre Nous utilisons - une liste ordonnée selon l'adresse - reprise de la recherche à la suite de la dernière insertion Liste des espaces libres d adresse de début taille e f e c a g 5M 14 M 16 M 30 M utilisé utilisé g 30 M libre Algorithme BEST-FIT 0 a Choisi le PLUS PETIT espace libre pouvant contenir le processus dans la liste des espaces libres Système ( noyau) 16 M libre b 0 a demandes 5M 14 M Liste des espaces libres c' d adresse de début taille e f c' e a g 1M 5M 16 M 30 M Nous utilisons une liste ordonnée selon la taille la plus petite Système ( noyau) 16 M libre b utilisé FCFS 5 M libre Nous utilisons une liste ordonnée selon la taille la plus petite Algorithme BEST-FIT Choisi le PLUS PETIT espace libre pouvant contenir le processus dans la liste des espaces libres 14 M libre utilisé 13 M 1M utilisé FCFS demandes 5 M libre 14 M utilisé g Liste des espaces libres adresse de début taille c' a g 1M 16 M 30 M 30 M libre c' d 13 M 1M utilisé 5 M5 M libre utilisé g 30 M libre Nous utilisons une liste ordonnée selon la taille la plus petite Algorithme BEST-FIT Choisi le PLUS PETIT espace libre pouvant contenir le processus dans la liste des espaces libres Algorithme WORST-FIT 0 Choisi le PLUS GRAND espace libre pouvant contenir le processus dans la liste des espaces libres Système ( noyau) 14 M a' b 2M 0 a Système ( noyau) 16 M libre b utilisé utilisé c FCFS demandes Liste des espaces libres adresse de début taille c' a' g 1M 2M 30 M c' d 13 M 1M utilisé FCFS demandes 5 M5 M libre 13 M utilisé 5M g 14 M 30 M libre Nous utilisons une liste ordonnée selon la taille la plus petite 14 M libre Liste des espaces libres d adresse de début taille e f g a c e 30 M 16 M 14 M 5M utilisé utilisé g 30 M libre Nous utilisons une liste ordonnée selon la taille la plus grande Algorithme WORST-FIT Choisi le PLUS GRAND espace libre pouvant contenir le processus dans la liste des espaces libres Algorithme WORST-FIT 0 a Choisi le PLUS GRAND espace libre pouvant contenir le processus dans la liste des espaces libres Système ( noyau) 16 M libre b 0 a 16 M libre utilisé FCFS utilisé 5M 14 M c 14 M libre Liste des espaces libres d adresse de début taille e f g' a c e 17 M 16 M 14 M 5M FCFS demandes utilisé 5 M libre 14 M utilisé 13 M g' 17 M libre Nous utilisons une liste ordonnée selon la taille la plus grande Choisi le PLUS GRAND espace libre pouvant contenir le processus dans la liste des espaces libres 0 a' b Système ( noyau) 14 M 2M utilisé 14 M libre Liste des espaces libres d adresse de début taille e f c g'' e a' 14 M 12 M 5M 2M Nous utilisons une liste ordonnée selon la taille la plus grande Liste des espaces libres d adresse de début taille e f a c g'' e 16 M 14 M 12 M 5M utilisé 5 M libre utilisé 13 M g'' 5M 12 M libre 4-18 c demandes 14 M libre Nous utilisons une liste ordonnée selon la taille la plus grande Algorithme WORST-FIT FCFS Système ( noyau) b c demandes 5 M libre utilisé 5 M libre utilisé 13 M g'' 5M 12 M libre Allocation d'un espace de 16K 4-18 COMPACTION 4-11 nouveau travail ALLOCATION DU CPU et Disque SWAP IN GESTION DES TRAVAUX SWAP OUT stockage sur disque sur disque chargement en mémoire travaux mémoire 1 600 K 2 1000K 3 300 K 4 700 K 5 500 K transfert sur disque en mémoire 4-20 Exécution de travaux avec allocation mémoire chargement FCFS (allocation des travaux) allocation mémoire First-Fit allocation du CPU Round-Robin file d'attente des travaux création d'un processus Efficacité Æ minimiser les déplacements CPU temps cpu 10 5 20 8 15 (a) bc fin de 2 de fin de 1 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 4 3 1 4 3 1 4 3 1 4 3 1 4 3 file d'attente CPU 0 10 14 20 fin de 4 28 fin de 3 30 fin de 5 5 4 3 5 4 3 5 4 3 5 3 5 3 5 3 5 3 5 3 5 3 5 3 5 5 5 5 5 E/S 30 38 40 50 53 58 file d'attente E / S 4-20 ALLOCATION DE TRAVAUX Recouvrement (Overlay) segmentation manuelle Allocation de la mémoire + chargement FCFS temps 0 0 + allocation de la mémoire avec First-Fit A 25 + allocation du CPU avec 40 50 Round-Robin (Q=1) 1 CPU 1 ut 2 ut 1 ut 2 ut 1 ut 3 0 C D 20 35 40 50 B travail mémoire A 40 K B 50 K C 20 K D 15 K E 60 K 2 0 4 0 C D 20 35 40 50 B 5 0 20 20 D 35 40 50 B 35 40 50 B 20 D 75 75 75 75 90 90 90 90 90 100 100 100 100 100 7 0 D 35 0 25 Arbre d'appels de procédures 25 35 50 50 B 75 6 0 50 E E 75 75 75 95 100 95 100 100 Allocation du CPU termine A termine B C termine D B termine termine D E temps 0 1 2 3 4 5 6 A B B C D C D B D B B D D E E 7 4-21 4-23 PAGINATION Recouvrement (Overlay) Fichier de recouvrement mémoire physique adresse logique p page d 0 mémoire déplacement 1 0 2 1 3 2 4 déplacement = adresse modulo no de page ALLOCATION NON CONTIGÜE DES PAGES 1 P2 - 1 Division de l'espace en pages déplacement P1 - 0 p 0 P2 - 0 2 P2 - 2 Table des pages déplacement 0 1 p 2 d p # page logique p+b b b+1 b+2 d # page logique + b 0000 p+b d # page physique Pagination 0 b ESPACE PHYSIQUE ESPACE LOGIQUE P2 1 taille des pages taille des pages 4-25 P1 P1 - 1 adresse / 4-24 mémoire physique 0 = 0 1 1 0000 d # page physique 2 0 page 0 3 1 page 1 4 2 page 2 5 déplacement p d p # page logique page 2 2 f 4 3 1 d # page physique 3 page 1 4 page 0 5 4-27 4-28 Table des pages Æregistres PDP11 – 8regu8K Utilisation d'un TLB pour la traduction d'adresse Æ mémoire base register 2 accès mémoire Æ registre associatif 4-25 4-27 TEMPS D'ACCÈS EFFECTIF À LA MÉMOIRE 4-29 Temps effectif = temps moyen Faire la somme pondérée des différents cas possibles Temps effectif = Temps effectif = Mémoire associative Accès direct prob temps prob temps 80% T1 80% T1 20% Temps effectif 50% T2 10% T2 50% T3 10% T3 = 6 Temps( cas k) u Prob( cas k) = 0.8 u T1 + 0.2 u ( 0.5 u T2 + 0.5 u T3 ) = 0.8 u T1 + 0.1 u T2 + 0.1 u T3 6 Temps( cas k) u Prob( cas k) Temps( cas 1) u Prob( cas 1) + Temps( cas 2) u Prob( cas 2) + Temps( cas 3) u Prob( cas 3) prob temps prob temps 80% T1 80% T1 50% T2 10% T2 50% T3 10% T3 20% TEMPS D'ACCÈS EFFECTIF À LA MÉMOIRE accès mémoire = 100 nanosecondes vérification dans le TLB = 20 nanosecondes (Translation Look-aside Buffers) __________________________ Taux de réussite du TLB = 80 % temps d'accès effectif = (hit ratio) 0.8 x (20 ns + 100 ns ) + 0.2 x (20 ns + 100 ns + 100 ns) = 140 ns accroissement de 40% 4-30 TEMPS D'ACCÈS EFFECTIF À LA MÉMOIRE Une table des pages par processus accès mémoire = 100 nanosecondes vérification dans le TLB = 20 nanosecondes (Translation Look-aside Buffers) __________________________ Taux de réussite du TLB = 98 % read only / read write Processus P1 0 Code A 2 Code C 3 Data 1 3 4 4 Data 2 6 10 1 2 5 ro v ro v ro v 1 Code C rw v rw v 3 Table des pages 4 Code E 5 Data 2 2 (hit ratio) 0 Code D 1 7 4 10 9 0 1 Code E 2 3 4 2 Code B 3 Data 1 6 Code A Processus P2 0.98 x (20 ns + 100 ns ) + 0.02 x (20 ns + 100 ns + 100 ns) = 122 ns accroissement de 22% Mémoire 0 0 1 2 1 Code B temps d'accès effectif = 4-31 valide / invalide Data 3 7 Code D ro v ro v 8 ro v rw v i 9 Data 3 10 Code B Table des pages 11 12 4-27 Une table des pages par processus Protection Æ gestion de la table des pages partage des pages entre processus droits d'accès Æ bits dans la table des pages + read-only / read-write + valide / invalide Une seule table des pages globale + avec segmentation pour le contrôle des droits d'accès + bits d'identification de processus table des pages inversée 4-32 Table des pages à plusieurs niveaux TABLE INVERSÉE DES PAGES Mémoire 0 # page logique Processus P1 1 Code C 2 0 Code A déplacement 1 Code B 2 Code C 31 22 21 12 11 0 3 index dans la table de haut niveau index dans la table de bas niveau déplacement dans la page P1 p d f Data 1 Data 2 P1 P1 2 3 0 1 2 3 Processus P2 P2 P1 P1 P2 1 4 0 0 4 5 6 7 P2 P1 P2 3 1 2 8 9 10 11 4 0 Code D 1 Code E 2 Code F 3 Data 3 ? Data 1 3 12 Table inversée des pages d 4 Code E 5 Data 2 6 Code A 7 Code D 8 9 Data 3 10 Code B 11 12 Code F 4-33 FONCTION DE HASHING POUR TABLE INVERSÉE # page logique 200 1 4-35 SEGMENTATION # page physique 9 # de groupe mémoire physique P1 Table inversée des pages groupe A début de liste 101 9 2 P2 - S 1 S1 P1 - S 0 3 4 401 0 P2 5 S0 6 7 8 groupe B 2001 5 P1 - S 1 S0 0 1 2 9 10 11 P2 - S 0 S1 9 P2 - S 2 S2 12 groupe C 4-35 SEGMENTATION Similarités avec code données espace logique Segment Æ -- programme -- variables -- pile (stack) partitions de taille variable Æ groupe pagination Æ pages de taille variable module ou objet Modifier le matériel pour le faire correspondre à l'image (logique) de l'usager. Fragmentation externe Æ comme partitions variables Adresse Æ < # segment >, < déplacement > mov 31 <8 bits> 24 23 Souplesse Æ possibilité de liens dynamiques Protection et partage simplifiées A, B <24 bits> 0 31 <8 bits> 24 23 <24 bits> s d s d # seg. déplacement # seg. déplacement TRANSLATION D'ADRESSE Compilation Source 0 A Var A B Module Objet B Prog MOV B, A test JSB L1 Prog A = B if( ....) then TABLE DES SEGMENTS Un segment Æ partition variable L1 ÉDITEUR DE LIENS Objet A 0 Code exécutable Objet A Objet B Objet B CHARGEMENT EN MÉMOIRE Prog. 0 Mémoire Plusieurs segments 0 4-37 4-37 4-37 Un programme est composé de plusieurs segments 4-37 Partage de segments 4-38 Stall. 351 4-39 4-40 PC/RT (IBM 6150) Systèmes segmentés et paginés Passage d'une adresse logique 32 bits à une adresse virtuelle étendu sur 40 bits du PC/RT PC/RT et Pentium 4-40 Système de pagination inversé du PC/RT TABLE INVERSÉE DES PAGES Mémoire 4-33 0 # page logique Processus P1 1 Code C 0 Code A 2 déplacement 1 Code B 2 Code C P1 p d f 3 Data 1 4 Data 2 P1 P1 2 3 0 1 2 3 Processus P2 P2 P1 P1 P2 1 4 0 0 4 5 6 7 P2 P1 P2 3 1 2 8 9 10 11 0 Code D 1 Code E 2 Code F 3 Data 3 ? Data 1 3 d 4 Code E 5 Data 2 6 Code A 7 Code D 8 9 Data 3 10 Code B 11 Code F 12 12 Table inversée des pages 4-41 FONCTION DE HASHING POUR TABLE INVERSÉE # page logique 200 1 # page physique 9 PENTIUM # de groupe Table inversée des pages groupe A début de liste 101 9 2 Tables de descripteurs de segments 3 4 401 0 5 6 7 8 groupe B 2001 5 9 10 11 12 groupe C Registres sélecteurs 0 1 2 9 4-42 4-42 PENTIUM Registres sélecteurs Tables de descripteurs de segments Pagination à 2 niveaux du Pentium