CM3 Memoire
Télécharger le CM3 Memoire en pdf
Pages : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
Page 1 : Système d’ExploitationLa MémoireJuan Angel Lorenzo del Castillojuan-angel.lorenzo-del-castillo@cyu.frContributions de :Stefan BornhofenTaisa Guidini GoncalvesMariem ALLOUCH MAHDI1 / 41
Page 2 : IntroductionPlan1 Introduction2 Hiérarchie de la Mémoire3 Utilisation de la mémoire4 Abstraction de la mémoireSwappingMémoire virtuelleSegmentation2 / 41
Page 3 : IntroductionMémoire centrale ou viveMémoire RAM - Random Access MemoryLa mémoire vive ou RAM est la mémoire dans laquelle les données et processus sont placées lors de leur traitementQuelques caractéristiques de la RAM : mémoire à accès rapidemémoire volatile i.e., besoin de courant électrique “cases” numérotées à partir de 0▶le numéro correspond à l’adresse▶chaque case contient un octet 8 bits; 1 bit : 1 ou 0 1 octet = 8 bits →28 = 256 valeurs possiblesDeux types d’opérations possibles : lecture / écriture3 / 41
Page 4 : Hiérarchie de la MémoirePlan1 Introduction2 Hiérarchie de la Mémoire3 Utilisation de la mémoire4 Abstraction de la mémoireSwappingMémoire virtuelleSegmentation4 / 41
Page 5 : Hiérarchie de la MémoireHiérarchie de la mémoire5 / 41
Page 6 : Hiérarchie de la MémoireHiérarchie de la mémoire6 / 41
Page 7 : Hiérarchie de la MémoireHiérarchie de la mémoireDifférents types de mémoire on souhaite grande, rapide, pas cher avec différentes caractéristiques :volatile ou pas, temps d’accès, débit, taille, prix/taille, ...du plus cher et plus rapide, au moins cher et plus lent :7 / 41tps d’accès cyclesdébittaille typiqueregistres de processeurs1-20 × 4 octetscache niveau 14qq Go/s128 Kocache niveau 210idem1 Mocache niveau 320idem6 MoRAM100idem8 GoDisque dur SSD1ms500 Mo/s250 GoDisque dur magnétique10 ms100 Mo/s1 To
Page 8 : Hiérarchie de la MémoireLes prix du GigaoctetEn 2015, RAM : 10 euros/Go; SSD : 0, 27 euros/Go; DD : 0, 05 euros/GoÉvolution des prix du Go DD1956 : 1 Go = 26 000 000 euros/Go !!!1973 : 1 Go = 3 000 000 euros/Go1980 : 1 Go = 100 000 euros/Go1987 : 1 Go = 40 000 euros/Go1995 : 1 Go = 800 euros/Go2002 : 1 Go = 2 euros/Go2007 : 1 Go = 0,28 euros/Go2015 : 1 Go = 0,05 euros/Go8 / 41
Page 9 : Hiérarchie de la MémoireMémoire CacheÉviter de rechercher en mémoire centrale des données déjà cherchées précédemment enles conservant près du processeur dans une petite mémoire à accès rapide.Géré par le matériel hors SE Principe de localité :▶Localité temporelle : tendance à réutiliser des données récemment accédées instructions d’une boucle;▶Localité spatiale : tendance à référencer des données voisines d’autres données récemment accédées tableau ai, ai+1,...9 / 41
Page 10 : Utilisation de la mémoirePlan1 Introduction2 Hiérarchie de la Mémoire3 Utilisation de la mémoire4 Abstraction de la mémoireSwappingMémoire virtuelleSegmentation10 / 41
Page 11 : Utilisation de la mémoireUtilisation de la mémoire dans des systèmes monotâcheSeules les instructions stockées en mémoire centrale peuvent être exécutées par la CPU.En monoprogrammation▶Mémoire réservée au SE▶Mémoire réservée au seul programme à exécuter▶Adressage direct possible...et en multiprogrammation systèmes multitâche ?11 / 41
Page 12 : Utilisation de la mémoireUtilisation de la mémoire dans des systèmes multitâcheSystème multitâche →Plusieurs processus en RAMEspace d’adressageBase / limiteAdresse physique = base + adresse Adresse maximale = base + limite12 / 41
Page 13 : Utilisation de la mémoireUtilisation de la mémoire dans systèmes multitâcheSystème multitâche →Plusieurs processus en RAMTrois types de problèmes : Isolation de processus Placement des processusLa taille de la RAM est limitéeAucun problème s’il n’y a qu’un seul processus en RAM13 / 41
Page 14 : Utilisation de la mémoireUtilisation de la mémoire dans systèmes multitâcheProblème d’isolation de processus :Un processus ne doit pas pouvoir accéder à la RAM d’un autre processus ou du système d’exploitationComment?Le SE alloue une zone de RAM à un seul processusDéclenchement d’une erreur si un processus accède à la mémoire non allouéePourquoi?Pour garantir un fonctionnement correct des processus ou du SE Pour garantir la confidentialité des données14 / 41
Page 15 : Utilisation de la mémoireUtilisation de la mémoire dans systèmes multitâcheProblème de placement des processus en RAM :Comment placer les processus dans la mémoire RAM ?Solution la plus simple : Chaque processus utilise une zone contiguë de RAM.Cependant...Comment le SE peut savoir combien de RAM un processus va avoir besoin?Comment gérer la variation de besoins? ex : ouverture d’un petit fichier, puis d’un grosQue se passe-t-il s’il n’y a pas de place assez grande mais plein de petites places ? Que se passe-t-il s’il y a plusieurs places assez grandes ?Remarque : il est en général impossible de déplacer un processus en RAM15 / 41
Page 16 : Utilisation de la mémoireUtilisation de la mémoire dans systèmes multitâchePartitions de taille fixe :Partitionner la mémoire pour contenir un nombre maximum de programmesPartitions de même grandeur? De différentes grandeurs?Un gros programme ne rentre que dans une grande partition Un petit programme rentabilise mal une grande partition Gaspillage de mémoire.Les files multiples présentent un inconvénient lorsque la file des grandes partitions est vide et celles des petites est pleineune alternative consiste à utiliser une seule file16 / 41
Page 17 : Utilisation de la mémoireUtilisation de la mémoire dans systèmes multitâchePartitions de taille fixe :17 / 41
Page 18 : Utilisation de la mémoireUtilisation de la mémoire dans systèmes multitâchePartitions de taille variable :Le nombre, la position et la taille des partitions varient dynamiquementAméliore l’usage de la mémoire mais complique sa gestionLorsqu’un programme termine son exécution, il laisse un trou en mémoireCompactage de mémoire = relocaliser des programmes en cours d’exécution « retassement ».18 / 41
Page 19 : Utilisation de la mémoireUtilisation de la mémoire dans systèmes multitâcheProblème de taille de RAM limitée :Comment gérer le petit espace mémoire de la RAM ?Pourquoi : car les processus en utilisent de plus en plusLoi de Parkinson“Work expands so as to fill the time available for its completion.”Les programmes s’acroissent pour remplir la mémoire disponible qui leur est réservée.19 / 41
Page 20 : Utilisation de la mémoireUtilisation de la mémoire dans systèmes multitâcheMissions du SEConnaître les parties libres et occupées de la mémoire Allouer de la mémoire aux processus qui en ont besoin Libérer la mémoire d’un processus lorsque celui-ci se termineGérer le cas où la mémoire ne peut pas contenir tous les processus actifs20 / 41
Page 21 : Abstraction de la mémoirePlan1 Introduction2 Hiérarchie de la Mémoire3 Utilisation de la mémoire4 Abstraction de la mémoireSwappingMémoire virtuelleSegmentation21 / 41
Page 22 : Abstraction de la mémoireAbstraction de la mémoireDans un environnement de multiprogrammation, la mémoire est normalement insuffisante pour maintenir tous les processus courants actifs. Il faudra :▶sauvegarder les processus sur le disque▶...et les recharger dynamiquement.Deux approches pour gérer la surcharge de mémoire :12swapping va-et-vient : sauvegarde du processus dans son intégralité La mémoire virtuelle : exécution du processus partiellement en mémoireCes approches permettent de lever la contrainte de dimension de la mémoire22 / 41
Page 23 : Abstraction de la mémoireSwappingSwapping va-et-vientMécanisme dans lequel un processus peut être temporairement supprimé de la mémoire principale ou déplacé vers le stockage secondaire disque afin de rendre cette mémoire disponible pour d’autres processus. Plus tard, le système remplace le processus du stockage secondaire vers la mémoire principale.But : Utiliser le disque pour simuler une taillede RAM plus grande.Principe : Une zone du disque normalementune partition ou fichier est mise à dispositiondu SE.Avantage : libère la RAMInconvénient : L’accès au disque est lent.23 / 41
Page 24 : Abstraction de la mémoireSwappingSwapping va-et-vientChaque processus est considéré dans son intégralité.▶Soit un processus est dans son intégralité en mémoire▶soit il est supprimé intégralement de la mémoire et stocké sur le disque.Le processus peut être rechargé à nouveau sur une zone différente en mémoire : réallocation dynamique.Des “trous” peuvent apparaître dans la mémoire : possibilité de compactage processus lent.24 / 41
Page 25 : Abstraction de la mémoireMémoire virtuelleMémoire virtuelleLe problème de partage de la mémoire entre processus :Des plages d’adressage trop grandes.Plusieurs processus en mémoire simultanément : le swapping est lent.Solution : la mémoire virtuellePour exécuter un programme ou un segment de programme, il n’est pas forcément nécessaire de le garder entièrement en mémoire.Le SE conserve les parties « pages » en cours d’utilisation en mémoire et le reste sur disque dans la zone de swap.Quand un programme attend le chargement d’une partie de lui-même →il est en attente d’E/S.25 / 41
Page 26 : Abstraction de la mémoireMémoire virtuellePaginationTraiter séparément les adresses virtuelles référencées par le programme, et les adresses réelles de la mémoire physique.L’espace des adresses virtuelles est divisé en « pages » de taille fixe. La mémoire physique est divisée en « cases / cadres » de même taille.Ce n’est pas nécessaire d’avoir toutes les pages en mémoire▶Les processus démarrent avec aucune page en mémoire.Phénomène du défaut de page▶Le SE cherche la page en mémoire et, s’il n’y la trouve pas, la page sera copiée du disque à la mémoire.▶Si la mémoire est plaine, il faudra déplacer une « page » de la mémoire au disque pour laisser la place à la « page » à charger en mémoire remplacement de page.26 / 41
Page 27 : Abstraction de la mémoireMémoire virtuellePaginationUne adresse générée par un programme s’appelle une adresse virtuelle adresse virtuelle = page virtuelle + offset.Le SE maintient pour chaque programme une table de correspondance entre les pages virtuelles et les pages réelles.adresse réelle= fpage virtuelle + offset.La MMU Memory Management Unit fait la correspondance rapide entre les adresses virtuelles et les adresses physiques, comme un cache.27 / 41
Page 28 : Abstraction de la mémoireMémoire virtuellePaginationAdresse virtuelleL’adresse virtuelle est scindée en deux champs : Les derniers bits définissent un offset adresse dans la page, le reste définit le numéro de page virtuelle.Exemple : Adresses virtuelles de 32 bits et pages de 2KB L’offset aura 11 bits 211 = 2 K / Taille des pages. Le numéro de page virtuelle aura 32 - 11 = 21 bits.L’espace d’adresses virtuelles est découpé en 2 M pages 221 = 2 . 220 = 2 M pages de 2 KB28 / 41
Page 29 : Abstraction de la mémoireMémoire virtuellePaginationTraduction d’une adresse virtuelle à adresse physique29 / 41
Page 30 : Abstraction de la mémoireMémoire virtuellePaginationTraduction d’une adresse virtuelle à adresse physiqueExemple : adresses de 16 bits 64KB, mémoire physique de 32KB.Espace d’adresses virtuelles en pages.Cadres de page Page frames en mémoire physique même taille que les pages.Transfert entre RAM et disque des pages complètes.Pages de 4KB →16 pages MV = 64KB, Cadres de page de 4KB →8 cadres de page MP = 32KB.Si la page n’est pas en mémoire, défaut de page.30 / 41
Page 31 : Abstraction de la mémoireMémoire virtuellePaginationLa Table de Pages“Dictionnaire” qui indique la correspondance :processus,page ←→cadre de pageMaintenue par le SE en mémoire RAMtrop lourd pour être dans la MMU →lent.Traduction de l’adresse virtuelle :▶Numéro de page▶OffsetLa Table de Pages retourne le cadre depage▶Si bit de présence/absence Present/absent bit = 0 →défaut de page.31 / 41
Page 32 : Abstraction de la mémoireMémoire virtuellePaginationAlgorithme de traduction fait par la MMUÉtapes 2-3-632 / 41
Page 33 : Abstraction de la mémoireMémoire virtuellePaginationExemple de traduction33 / 41
Page 34 : Abstraction de la mémoireMémoire virtuellePaginationDéfaut de pageÉtape 4 de l’algorithme de traduction.Si le bit de validité V est 1, c’est que la page est en mémoire réelle. Il remplace alors le numéro de page virtuelle par le numéro de page réelle qui se trouve dans la rangée en question.Si le bit de validité est à 0, il n’y a pas de traduction car soit la page n’est pas allouée au processus, soit elle est sur le disque.▶Déclenchement d’un "défaut de page".▶Le processus en cours est interrompu et le SE reprend la main.▶Le SE lit l’adresse disque de la page en question, charge la page en mémoire et inscrit dans la rangée correspondante de la Table des pages le numéro de page réelle où la page a été placée. Il met ensuite le bit V à 1.34 / 41
Page 35 : Abstraction de la mémoireMémoire virtuellePagination : Algorithmes de remplacement de pagesEn cas de défaut de page, les algorithmes de remplacement permettent de déterminer une case physique victime qui sera sauvée sur le disque si nécessaire et remplacée par la page virtuelle à laquelle on souhaite accéder.La victime sera récrite sur le disque seulement si elle a été changée depuis qu’elle a été amenée en mémoire principale. Sinon, sa copie sur disque est encore fidèle.Un bit de modification dirty bit sur chaque descripteur de page indique si la page a été changée.Quelques algorithmes :▶Optimal ou de Belady▶FIFO First In, First Out▶NRU Not Recently Used▶LRU Least Recently Used35 / 41
Page 36 : Abstraction de la mémoireMémoire virtuellePagination : Algorithmes de remplacement de pagesAlgorithme de BeladyLa victime est la page qui sera référencée le plus tard dans le futur. Optimal, mais impossible à mettre en œuvre.Il faut connaître à l’avance les accès.Utilisé pour comparer avec la performance d’autres algorithmes.FIFO First In First OutLe SE mémorise dans une file FIFO la liste de pages en mémoire triées par ordre d’arrivée en mémoire.La victime est la page la plus anciennement chargée, c’est-a-dire, la page en tête de file.Rarement utilisé, car il induit souvent des défauts de pages.36 / 41
Page 37 : Abstraction de la mémoireMémoire virtuellePagination : Algorithmes de remplacement de pagesNRU Not Recently UsedChaque page possède deux bits d’état dans la Table de Pages▶R = 1 M = 1 lorsqu’une page est référencée R ou modifiée M.▶Mise à jour dans chaque référence à mémoire.▶Ils restent à 1 jusqu’à ce que le SE les efface. Le bit R est effacé périodiquement à chaque interruption d’horloge.S’il existe des pages non référencées R = 0 et non modifiée M = 0 alors il sélectionne une page et la retire.Sinon, s’il existe des pages telles que R = 0 et M = 1, alors il sélectionne une page et la retire et sauvegarde la page sur le disque.Sinon, s’il existe des pages telles que R = 1 et M = 0, alors il sélectionne une page et la retire.Sinon, s’il existe des pages telles que R = 1 et M = 1, alors il sélectionne une page et la retire et sauvegarde la page sur le disque.Implémentation simple.37 / 41
Page 38 : Abstraction de la mémoireMémoire virtuellePagination : Algorithmes de remplacement de pagesLRU Least Recently UsedLocalité temporelle▶Les pages utilisées dans les dernières instructions seront réutilisées dans les instructions suivantes.▶Les pages qui n’ont pas été utilisées depuis longtemps, continueront sans être utilisées.La victime est la page la moins utilisée.Implémentation : Utilisation d’une liste chaînée de toutes les pages en mémoire▶La plus utilisée est en tête de liste et la moins utilisée est en queue.Coûteux et difficile à implémenter : il faut garder une liste de pages triée par utilisation.38 / 41
Page 39 : Abstraction de la mémoireMémoire virtuellePagination : Algorithmes de remplacement de pagesApproximation de LRU : l’algorithme de l’horlogeou de la seconde chanceListe circulaire en forme d’horloge avec un pointeur sur la plus vieille page▶Lorsqu’il y a un défaut de page, la page pointée est examinéeSi R = 0 le bit d’accès de la page est à 0 alors elle est retirée, lanouvelle page est insérée à sa place et son bit R est mis à 1 et lepointeur avance.Sinon, si R = 1, il est mis à 0 R = 0 et le pointeur avance pourchercher une autre victime.Lorsqu’on accède à page présente dans la liste, son bit de référence R est mis à 1.Simple d’implémenter.39 / 41
Page 40 : Abstraction de la mémoireSegmentationSegmentationChaque processus peut avoir plusieurs segments code, données, pile, etc..Chaque segment commence à une nouvelle adresse de base dans la mémoire physique.Raison d’être :Pour permettre aux programmes et aux données d’être divisés en espaces d’adressage indépendants, et pour faciliter le partage et la protection.Avantages :Les segments peuvent grandir indépendamment. Les segments peuvent swapper indépendamment.Les segments peuvent être partagés entre processus.40 / 41
Page 41 : Abstraction de la mémoireSegmentationSegmentation41 / 41
Pages : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41








































