Gestion de la mémoire centrale Allocation de la mémoire physique Joëlle Delacroix AMSI1999/2 1
CPU Fonction de mémorisation Mémoire centrale RAD RDO Bus données Bus adresses Bus commandes ensemble linéaire de mots d'adresses contigues Joëlle Delacroix AMSI1999/2 2
Monoprogrammation N SYSTEME D'EXPLOITATION PROGRAMME UTILISATEUR P1 P1 CPU P1 : 1 ms calcul / 1 ms E/S 5 % d'inactivité du processeur DMA Joëlle Delacroix AMSI1999/2 3
Multiprogrammation : cas idéal N SYSTEME D'EXPLOITATION PROGRAMME UTILISATEUR P1 PROGRAMME UTILISATEUR P2 P1 : 1 ms calcul / 1 ms E/S P2 : 1 ms calcul / 1 ms E/S % d'inactivité du processeur P1 P2 CPU DMA Joëlle Delacroix AMSI1999/2 4
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/2 5
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/2 6
Multiprogrammation et gestion mémoire ensemble insécable de mots contigus programme ensemble sécable de mots contigus espace d'adressage linéaire allocation en partitions fixes ou variables espace d'adressage paginé espace d'adressage segmenté Joëlle Delacroix AMSI1999/2 7
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 n programme Partition 1 Partition 2 Partition 3 partition ensemble d'adresses physique contigues Joëlle Delacroix AMSI1999/2 8
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 libre telle que Taille (Zone) - Taille (programme) soit le plus petit possible Partition 1 n programme Partition 2 Partition 3 Joëlle Delacroix AMSI1999/2 9
Allocation en partition fixe Système Système n n n+1 Partition 1 n+1 Programme Partition 2 Partition 3 Partition 2 Programme Trous Partition n-1 Programme n Partition n Programme Initialement à l'instant t Joëlle Delacroix AMSI1999/2 1
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 convient Best Fit : celle générant le moins de perte Joëlle Delacroix AMSI1999/2 11
La mémoire est formée d'un ensemble de zones libres et de zones occupées (partitions allouées) Système Système n n n+1 n+1 Programme 1 n n+1 Système Programme 1 ZONE LIBRE Chargement Programme 2 Programme 3 Programme 4 Fin P2, P4 Zone libre Programme 3 Zone libre Programme 5 Programme 5 Initialement ZONE LIBRE à l'instant t Zone libre à l'instant t' Joëlle Delacroix AMSI1999/2 12
Allocation First Fit n Système Zone libre Programme 6 6K 8K n Système Zone libre Programme 6 6K Zone libre Programme 3 12K Programme 7 Programme 7 Programme 3 4K Zone libre 1K Zone libre 1K Programme 5 Programme 5 Zone libre 15K Zone libre 15K Joëlle Delacroix AMSI1999/2 13
Allocation Best Fit n Système Zone libre Programme 6 6K 8K n Système Zone libre Programme 6 6K Zone libre Programme 3 12K Programme 7 Zone libre Programme 3 12 K Zone libre 1K Programme 7 2K Programme 5 Programme 5 Zone libre 15K Zone libre 15K Joëlle Delacroix AMSI1999/2 14
Compactage de la mémoire n Système Zone libre Programme 6 Zone libre Programme 3 6 K 12 K 18K Programme 8 n Système Programme 6 Programme 3 Programme 7 Programme 7 2K Programme 5 Programme 5 35 K Zone libre Zone libre 15K Fragmentation Joëlle Delacroix AMSI1999/2 15
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/2 16
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 liens Adresse d'implantation en mémoire centrale Chargeur adr + adresse d'implantation programme relogeable Exécutable sur disque adr Chargement statique Exécutable en mémoire Joëlle Delacroix AMSI1999/2 17
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 Adresse d'implantation en mémoire centrale Registre de translation Chargeur adr programme relogeable Exécutable sur disque adr Chargement dynamique Exécutable en mémoire Joëlle Delacroix AMSI1999/2 18
Compactage adr adr Registre de translation Déplacer un programme : modifier la valeur du registre de translation Joëlle Delacroix AMSI1999/2 19
Compactage de la mémoire centrale Système d'exploitation Système d'exploitation Système d'exploitation Système d'exploitation P1 2K P1 2K P1 2K P1 2K P2 1K P2 1K P2 1K P2 1K 4K P3 2K P4 4K P3 2K P4 4K P3 2K 9K 3K P4 4K 9K 9K P4 4K 2K P3 2K 6K déplacés 4K déplacés 2K déplacés Joëlle Delacroix AMSI1999/2 2
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 Min Registres Bornes chargés par le système Programme P Sup Joëlle Delacroix AMSI1999/2 21
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/2 22
La pagination Mémoire Page 4 Page 1 Page 3 Page 2 Espace d'adressage du programme Page 1 Page 3 Page 2 Page 4 Case1 Case 2 Case 3 Case 4 Case 5 Case 6 Case 7 Joëlle Delacroix AMSI1999/2 23
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/2 24
La mémoire paginée adresse physique PAGE De 512 octets à 8192 octets <n page; deplacement> Il faut convertir l'adresse paginée en son équivalent adresse physique Adresse physique = adresse implantation case contenant la page + deplacement Table des pages Joëlle Delacroix AMSI1999/2 25
La mémoire paginée Mémoire Page 1 Page 2 Table des pages Numéro page 1 Numéro case Page 1 2 Page 3 Case1 Case 2 Case 3 Page 3 2 3 6 3 Case 4 Case 5 Page 4 4 7 Page 2 Case 6 Espace d'adressage du programme Page 4 Case 7 Joëlle Delacroix AMSI1999/2 26
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/2 27
Adresse logique p d La mémoire paginée Mémoire Registre adresse Table des pages adresse table Adresse phy sique + + adr page Table des pages Joëlle Delacroix AMSI1999/2 28
Implémentation de la table des pages temps d'accès à un emplacement mémoire d'un programme : deux accès mémoire Adresse logique p d Adresse phy sique adresse table + + adr page Table des pages Joëlle Delacroix AMSI1999/2 29
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 Adresse logique p d non trouvé trouvé adresse table Adresse phy sique + <p, adr page> + adr page Table des pages Joëlle Delacroix AMSI1999/2 3
Pagination - Segmentation données Sqrt Pile Programme principal Segment 1 Segment 4 Segment 2 Vue Utilisateur Segment 3 Espace d'adressage du programme Ensemble de pages Espace d'adressage du programme Ensemble de segments Joëlle Delacroix AMSI1999/2 31
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 Espace d'adressage linéaire 18K S3 1 K 3 K S1 5 K Espace d'adressage segmenté S2 Joëlle Delacroix AMSI1999/2 32
La mémoire segmentée Espace d'adressage linéaire 18K S3 1 K S1 5 K Espace d'adressage segmenté Adresse du mot avant chargement Déplacement depuis Adresse du mot après chargement Adresse d'implantation + Déplacement S2 Adresse du mot avant chargement N segment, Déplacement depuis Adresse du mot après chargement Adresse d'implantation du segment + Déplacement Joëlle Delacroix AMSI1999/2 33
La mémoire segmentée adresse physique SEGMENT <n segment; deplacement> Il faut convertir l'adresse segmentée en son équivalent adresse physique Adresse physique = adresse implantation segment + deplacement Table des segments Joëlle Delacroix AMSI1999/2 34
La mémoire segmentée Mémoire Segment 1 2K Table des segments Numéro Position Segment 1 5K Segment 2 25K 1 2 5 K 195 K Segment 3 95K Segment 3 15K Segment 4 1K Espace d'adressage du programme 3 4 95 K 15 K Segment 4 Segment 2 15 K 195 K Joëlle Delacroix AMSI1999/2 35
La mémoire segmentée Mémoire s d < Registre adresse Table des Segments LT adresse table + < + oui taille adr debut Table des segments Joëlle Delacroix AMSI1999/2 36
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/2 37
s La mémoire segmentée paginée d < d oui p d' Mémoire Registre adresse Table des Segments LT adresse table + c + < + oui taille Adresse table des pages Table des segments Joëlle Delacroix AMSI1999/2 38
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 pages et 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. Une adresse générée par le processeur est de la forme <n segment, déplacement dans le segment>. La table des segments du processus permet de traduire l'adresse segmentée en adresse physique Segmentation et pagination sont très souvent associées. Joëlle Delacroix AMSI1999/2 39
Gestion de la mémoire centrale Mémoire Virtuelle Joëlle Delacroix AMSI1999/2 4
Mémoire virtuelle Mémoire physique Page 1 Page 4 Page 2 Page 3 Page 1-1 Page 1 Programme 1 Page 2 Page 3-1 Page 3-2 Case 1 Case 2 Case 3 Page 1 Page 3 Page 1-2 Case 4 Page 4 Page 2 Page 3 Programme 2 Page 2-2 Case 5 Programme 3 Page 2-1 Case 6 Espaces d'adressage des programmes Page 4-1 Case 7 Joëlle Delacroix AMSI1999/2 41
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. Page 1 Page 4 Page 2 Page 3 Programme 1 Page 1 Page 4 Page 2 Page 3 Page 1 Page 2 Page 3 Programme 2 Mémoire physique Page 3-3 Case 1 Page 1-1 Case 2 Page 3-2 Case 3 Page 2-1 Case 4 Page 1-3 Case 5 Programme 3 Page 2-3 Page 4-1 Case 6 Case 7 Joëlle Delacroix AMSI1999/2 42
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 V N de case physique Bit validation à vrai si la page est présente en mémoire centrale Joëlle Delacroix AMSI1999/2 43
Bit de validation V V I V 2 4-7 I - I - V 3 Processus 2 V V V I 5 6 1 - Processus 1 Processus 3 Mémoire physique Page 1 Page 4 Page 2 Page 3 Programme 1 Page 1 Page 4 Page 2 Page 3 Page 1 Page 2 Page 3 Programme 2 Page 3-3 Case 1 Page 1-1 Page 3-2 Case 2 Case 3 Page 2-1 Case 4 Page 1-3 Case 5 Programme 3 Page 2-3 Page 4-1 Case 6 Case 7 Joëlle Delacroix AMSI1999/2 44
Bit de validation et défaut de page V V I V 2 4-7 I - I - V 3 Processus 2 V V V I 5 6 1 - Processus 1 Processus 3 Mémoire physique Page 1 Page 4 Page 2 Page 3 Programme 1 Page 1 Page 4 Page 2 Page 3 Programme 3 Page 1 Page 2 Page 3 Programme 2 Processus 2 : accès à la page 2 DEFAUT DE PAGE Page 3-3 Case 1 Page 1-1 Page 3-2 Page 2-1 Case 2 Case 3 Case 4 Page 1-3 Case 5 Page 2-3 Case 6 Page 4-1 Case 7 Joëlle Delacroix AMSI1999/2 45
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 disque pour charger la page en mémoire dans une case libre Joëlle Delacroix AMSI1999/2 46
Défaut de page Mémoire Adresse logique p d Registre adresse Table des pages 1. Déroutement E/S disque adresse table + I - Table des pages Joëlle Delacroix AMSI1999/2 47
Défaut de page Mémoire Adresse logique p d 4. Reprise instruction Registre adresse Table des pages adresse table + 2 Chargement de la page case libre I 5 3. Mise à jour table des pages Table des pages Joëlle Delacroix AMSI1999/2 48
Chargement de page Lors d'un défaut de page, la page manquante est chargée dans une case libre la totalité des cases de la mémoire centrale peuvent être occupées il 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 choisir une case à libérer - FIFO (First In, First out) - LRU (Least Recently Used) Joëlle Delacroix AMSI1999/2 49
Joëlle Delacroix AMSI1999/2 5 Algorithmes de remplacement de page FIFO : la page la plus anciennement chargée est la page remplacée Chaine de référence 7 1 2 3 4 2 3 7 7 1 2 1 2 1 2 3 1 2 3 4 3 4 2 4 2 3 2 3 7 D D D D D D D D D D
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 1 2 3 4 2 3 7 7 7 2 2 2 2 4 4 4 3 3 1 1 1 3 3 3 2 2 2 D D D D D D D D D Joëlle Delacroix AMSI1999/2 51
Algorithme de remplacement de page A M V N de case physique Bit modification à vrai si la page a été modifiée en mémoire centrale Champ Accès : FIFO : date de chargement LRU : date de dernier accès Joëlle Delacroix AMSI1999/2 52
Conversion d'une adresse virtuelle Procedure Conversion (in adresse_virtuelle, out adresse_physique) debut entrée := adresse_virtuelle.page + adresse_table(processus) Si (entrée.v = FAUX) alors -- defaut de page Charger_page(adresse_virtuelle.page, adresse_case); entrée.v = vrai; entrée. case := adresse_case; fsi adresse physique := adresse_case + adresse_virtuelle.deplacement; return (adresse_physique); fin Joëlle Delacroix AMSI1999/2 53
Conversion d'une adresse virtuelle Procedure Charger_Page (in page, out case) debut Si (Trouver_case_Libre( ) = FAUX) alors Choisir_case_à_libérer (case_à_liberer, page_victime); si (page_victime.m = Vrai) alors Ecrire_Disque(page_victime) fsi Lire_Disque(case_à_liberer, page) return (case_à_liberer) fin Joëlle Delacroix AMSI1999/2 54
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 Utilisation de l'uc Degré de multiprogrammation Joëlle Delacroix AMSI1999/2 55
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. Joëlle Delacroix AMSI1999/2 56