2021 Etudiants de la deuxième année en Licence Technologique 21/04/2021 EXPOSE
2021 Etudiants de la deuxième année en Licence Technologique 21/04/2021 EXPOSE 1 THEME : LA GESTION DE LA MEMOIRE Niveau : Licence 2 Option : Licence Technologique(LT) Année académique 2020-202 ECOLE AFRICAINE DE DEVELOPPEMENT E.A.D REPUBLIQUE DU CONGO Unité-Travail-Progrès EXPOSE Présenté Par : INGABIRE Jean Bonheur MOULONGO-MABIALA Glad Richmar BOUKAMBOU MANANGA Espoir KHASA Enry Didiero KOUMBA NZASSI Dany Romaric BAKANA Beni Gloire SENGOUAYE MASSENGO Séraphin Heber Evaluer Par Mr ESSOMBA Clément Ingénieur en Système de Conception Informatique 2 Sommaire I. Introduction 1. Définition 2. Rôle et fonctionnalités II. La mémoire virtuelle III. La mémoire virtuelle par pagination IV. Segmentation 1- segmentation avec pagination IV. Les algorithmes 1. L’algorithme optimal 2. L’algorithme de remplacement de page premier entré, premier sorti (fifo) 3. L’algorithme dans l'horloge 4. L’algorithme de remplacement de la page là moins récemment utilisée (L V. Les problèmes de l'implantation 1. Rôle du S.E dans la pagination 2. Retour au début d’une instruction 3. Verrouillage des pages en mémoire 4. Mémoire auxiliaire 5. Séparation de la stratégie et du système 3 Définition La gestion de la mémoire est une forme de gestion des ressources appliquées a la mémoire de l’ordinateur. Rôle Le gestionnaire de la mémoire est un sous ensemble du système d’exploitation. Son rôle est de partager la mémoire entre l’o.s. (operating system) et les diverses applications. Le terme << mémoire>>fait surtout référence à la mémoire principale, c'est-à-dire à dire à la RAM, mais la gestion de celle-ci demande la contribution de la mémoire auxiliaire (mémoire de masse, spacieuse mais lente) et à la mémoire cache (rapide mais de taille restreinte). Voici les fonctions qu’on attend du gestionnaire de mémoire : • L’allocation de la mémoire aux processus : - Répertorier les emplacements libres de la mémoire -allouer la mémoire nécessaire aux nouveaux processus -Récupérer la mémoire des processus qui s’achèvent cette récupération peut nécessiter une réallocation des processus en cours pour optimiser l’emploi de la mémoire. La zone mémoire attribuée à un processus peut donc changer au cours de son exécution. • La protection : Il faut s’assurer que les adresses générées par chaque processus ne concernent que la zone mémoire qui lui est impartie, sans quoi, l’intégrité du système d’exploitation et des autres processus n’est pas garantie. Certaines zones mémoire doivent pourtant servir simultanément à plusieurs processus : le code de fonctions servant à plusieurs applications qui tournent en parallèle ou les données utilisées simultanément par divers processus • La segmentation de l’espace d’adressage : Les programmes sont subdivisés en segment : le code, les données modifiables, celles qui ne le sont pas, la pile. On attend donc du gestionnaire de mémoire qu’il permette la segmentation de l’espace d’adressage des programmes pour les raisons suivantes : -pouvoir coder les segments séparément et les paramétrer en fonction de l’application -permettre des degrés de protection différents selon les segments (lecture seule, exécution…) -accepter le partage de certains segments La mémoire virtuelle : Elle offre aux applications mémoire de taille supérieur à celle de la mémoire principale, l’espace d’adressage que représente la mémoire centrale est parfois insuffisant. Les disques suppléent à cette insuffisant une mémoire auxiliaire plus vaste mais plus lente et qui n’est pas directement accessible au processeur. 4 Gestion de l’état de la mémoire : Ici le gestionnaire permet d’avoir l’information sur les blocs qui sont libres et les blocs qui sont occupées. Donc la mémoire est découpée en unité ou bien bloc d’allocation le système garde la trace des blocs de mémoire qui sont libres ou bien occupées par l’intermédiaire : • D’une table de bits(bitmap) • Ou bien d’une liste chainée. Ce sont deux stratégie d’allocation utilise pour garder la trace des blocs qui sont libre ou bien occupés Gestion de mémoire avec bits maps Avec une table de bits(bitmaps) la mémoire est repartie en unités d’allocation dont la taille peut varier de quelques mots à plusieurs kilo- octets. Chaque unité d’allocation correspond à un bit du tableau de bits lequel est 0 si l’unité correspondante est vide et 1 si elle est occupée (ou vice- versa). La figure ci-dessous présente une partie de mémoire est le tableau de bits qui lui est associe : Le point (a) représente une partie de la mémoire avec 5 processus et trois trous, les marques verticales indiquent les unités d’allocation mémoire, les zones grises (valeur 0 dans le tableau de bits) sont des zones libres. Le point (b) représente le tableau de bits correspond. 5 Le point représente les mêmes informations sous forme d’une liste chainée. NB : le tableau de bits offre un moyen simple de garder une trace des mots mémoires dans une quantité fixe de mémoire : en effet, la taille de la table dépend seulement de celle de la mémoire et de celle de l’unité d’allocation. Le tableau de bits présente cependant un inconvénient : - Lorsqu’un processus de K unité est charge en mémoire, le gestionnaire de la mémoire doit parcourir le tableau de bits pour trouver une séquence de R bits consécutifs dont la valeur est 0, or cette recherche est une opération lente (parce que cette zone peut enjamber des mots frontières dans la table), et cela constitue un argument contre les tables de bits Gestion de la mémoire avec des listes chainées Ici pour conserver la trace de la mémoire la méthode c’est de maintenir une liste chainée des segments de mémoire alloues et libres ; dans cette liste, un segment est soit un processus, soit un trou entre deux processus. La figure ci-dessous montre comment cette méthode se réalise. 8 16 24 A B C D E 6 Mémoire virtuelle Le modèle d’interaction entre le processeur et la mémoire que nous avons utilisé jusqu’à présent est le modèle traditionnel. Dans ce modèle, illustré sur la figure ci-dessous, la mémoire est divisée en octets. Chaque octet est identifié par une adresse encodée sur \(n\) bits. Une telle mémoire peut donc contenir au maximum \(2^n\) octets de données. Aujourd’hui, les processeurs utilisent généralement des adresses sur 32 ou 64 bits. Avec des adresses sur 32 bits, la mémoire peut stocker (4 Go) de données. Avec des adresses sur 64 bits, la capacité de stockage de la mémoire monte. Si on trouve facilement aujourd’hui des mémoires, il n’en existe pas encore qui sont capables de stocker et il faudra probablement quelques années avant que de telles capacités ne soient utilisables en pratique. Modèle simple d’interaction entre le processeur et la mémoire Ce modèle correspond au fonctionnement de processeurs simples tels que ceux que l’on trouve sur des systèmes embarqués comme une machine à lessiver. Malheureusement, il ne permet pas d’expliquer et de comprendre le fonctionnement des ordinateurs actuels. Pour s’en convaincre, il suffit de réfléchir à quelques problèmes liés à l’utilisation de la mémoire sur un ordinateur fonctionnant sous Unix. Le premier problème est lié à l’organisation d’un processus en mémoire. Sous Unix, le bas de la mémoire est réservé au code, le milieu au heap et le haut au stack. Le modèle simple d’organisation de la mémoire ne permet pas facilement de comprendre comment un tel processus peut pouvoir utiliser la mémoire sur un processeur 64 bits qui est placé dans un ordinateur qui ne dispose que de 4 GBytes de mémoire. Avec une telle quantité de mémoire, le sommet de la pile devrait se trouver à une adresse proche de \(2^{32}\) et non \(2^{64}\). Un deuxième problème est lié à l’utilisation de plusieurs processus simultanément en mémoire. Lorsque deux processus s’exécutent, ils utilisent nécessairement la même mémoire physique. Si un processus utilise l’adresse x et y place des instructions ou des données, cette adresse ne 7 peut pas être utilisée par un autre processus. Physiquement, ces deux processus doivent utiliser des zones mémoires distinctes. Pourtant, le programme ci-dessous affiche les adresses de argc , de la fonction main et de la Fonction printf de la librairie standard puis effectue sleep(20);. Lors de l’exécution de deux instances de Ces programmes simultanément, on observe ceci sur la sortie standard. Manifestement, les deux programmes utilisent exactement les mêmes adresses en mémoire. Pourtant, ces deux programmes doivent nécessairement utiliser des zones mémoires différentes pour pouvoir s’exécuter correctement. Ceci est possible grâce à l’utilisation de la mémoire virtuelle. Avec la mémoire virtuelle, deux types d’adresses sont utilisées sur le système : les adresses virtuelles et les adresses réelles ou physiques. Une adresse virtuelle est une adresse qui est utilisée à l’intérieur d’un programme. Les adresses des variables ou des fonctions de notre programme d’exemple ci-dessus sont des adresses virtuelles. Une adresse physique est l’adresse qui est utilisée par des puces de RAM pour les opérations d’écriture et de lecture. Ce sont les adresses physiques qui sont échangées sur le bus auquel la mémoire est connectée. Pour que les programmes puissent accéder aux instructions et données qui se trouvent en mémoire, il est nécessaire de pouvoir traduire les adresses virtuelles en adresses physiques. C’est le rôle du MMU ou Memory Management Unit. Historiquement, le MMU était implémenté sous la forme d’un chip séparé qui était uploads/Management/ gestion-de-la-memoire-licence-informatique.pdf
Documents similaires
-
17
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Aoû 30, 2022
- Catégorie Management
- Langue French
- Taille du fichier 0.9856MB