smi - s4 chapitre 4: gestion de la mémoire partie 1dmifps.uca.ma/alioua/os/diapo/gestion...

23
Année universitaire: 2019-2020 Chapitre 4: Gestion de la mémoire partie 1 1 SMI - S4 Cours donné par: Pr. N. ALIOUA

Upload: others

Post on 30-Jan-2021

8 views

Category:

Documents


0 download

TRANSCRIPT

  • Année universitaire: 2019-2020

    Chapitre 4:

    Gestion de la mémoire partie 1

    1

    SMI - S4

    Cours donné par: Pr. N. ALIOUA

  • Plan

    Partie 1:

    IV.1 Introduction

    IV.2 Concepts de la mémoire

    IV.3 Allocation contiguë de la mémoire

    Partie 2:

    IV.4 Allocation non contiguë de la mémoire

    IV.5 Mémoire virtuelle

    2

  • IV.1 Introduction

    • On appelle «Mémoire» tout composant électronique capable de stocker temporairement des données.

    • La mémoire consiste en un grand nombre d'octets, chacun possédant sa propre adresse. On peut distinguer 2 types de mémoires: o Mémoire principale (ou vive ou centrale): contient l’emplacement des

    programmes et des données quand l’UCT les exécute.

    o Mémoire secondaire (ou de masse ou auxiliaire): contient les programmes avant leur exécution. Elle est plus lente que la mémoire principale mais de très grande capacité.

    • L'unité de mémoire ne voit qu'un flux d'adresses mémoire. Elle ignore leur provenance (compteur d'instructions, indexation, …) et leur type (instructions ou données).

    3

    1) Qu’est ce que la mémoire?

  • IV.1 Introduction

    • La mémoire étant une ressource rare à partager, si les mécanismes de gestion de ce partage sont peu efficaces l'ordinateur sera peu performant, quelque soit la puissance de son UCT.

    • Rôles du gestionnaire de la mémoire:

    o Prise en charge de l’allocation de la mémoire aux processus:

    Savoir quelles zones sont libres et quelles zones sont utilisées.

    Règles d'allocation : qui obtient de la mémoire, combien, quand et comment ?

    Règles de désallocation : à qui reprendre de la mémoire, combien, quand et comment?

    Techniques d'allocation: choix des lieux d'allocation et mises à jour des informations d'allocation.

    o Protection de la mémoire allouée à chaque processus contre un accès indésirable d’autres processus.

    4

    2) Pourquoi étudier la gestion de la mémoire?

  • Plan

    IV.1 Introduction

    IV.2 Concepts de la mémoire

    IV.3 Allocation contiguë de la mémoire

    IV.4 Allocation non contiguë de la mémoire

    IV.5 Mémoire virtuelle

    5

  • IV.2 Concepts de la mémoire

    La gestion de la mémoire s’appuie sur deux niveaux:

    oNiveau matériel: Mémoire cache: accélérer l’accès aux instructions et aux données

    fréquemment utilisées par l’UCT.

    Registres spéciaux: délimiter et protéger la mémoire contre les accès indésirables.

    oNiveau logiciel: effectué par le gestionnaire de mémoire du SE et concerne principalement l’allocation de la mémoire aux différents processus.

    N.B: Dans la gestion de la mémoire, le terme «Mémoire» fait référence à la mémoire principale (RAM), mais demande la contribution de la mémoire secondaire (spacieuse mais lente) et de la mémoire cache (rapide mais de taille restreinte).

    6

    1) Introduction

  • IV.2 Concepts de la mémoire

    • Pour exécuter un processus, l’UCT a besoin d’accéder à la mémoire principale (RAM) et aux registres :

    o L’accès aux registres est très rapide et se fait pendant un cycle d’horloge, alors que l’accès à la mémoire principale peut prendre plusieurs cycles (car elle est reliée par un bus).

    ↓ L’UCT reçoit les informations des registres mais doit attendre la réponse de la mémoire avant d’exécuter l’instruction.

    La mémoire cache est introduite entre l’UCT (pas de bus) et la mémoire principale pour:

    Accélérer l'exécution du processus

    Stocker les informations fréquemment utilisées par l’UCT et faire office de tampon entre l’UCT et la mémoire principale.

    7

    2) Accélération de l’exécution

  • IV.2 Concepts de la mémoire

    • Un programme réside sur la mémoire secondaire en tant que fichier exécutable binaire. Pour être exécuté, il doit être mis en mémoire principale en tant que processus.

    • Les programmes et l’UCT ne manipulent que des adresses dites logiques (ou virtuelles). • L'espace d'adressage logique est un ensemble d'adresses générées par un

    programme.

    • L'unité mémoire manipule des adresses dites physiques. Elles ne sont jamais vues par les programmes. • L'espace d'adressage physique est un ensemble d'adresses physiques

    correspondant à un espace d'adresses logiques.

    • La MMU (Memory Management Unit): composant matériel chargé de transformer (convertir) les adresses logiques en adresses physiques.

    8

    3) Adresse physique et adresse logique

  • IV.2 Concepts de la mémoire

    • Il est nécessaire de protéger le SE contre les accès des processus utilisateurs, mais aussi de protéger les processus utilisateurs les uns des autres (cas SE multi-utilisateurs).

    • Utiliser un espace mémoire séparé pour chaque processus est un mécanisme de protection de la mémoire contre les accès indésirables:

    oOn détermine la plage d'adresses auxquelles chaque processus peut accéder et on le limite à cette plage.

    oDeux registres utilisés: le registre de base et le registre de limite.

    • Registre de base: contient la plus petite adresse de mémoire physique légale.

    • Registre de limite: spécifie la taille de la plage d’adresses du processus.

    • N.B: Dans la MMU, le registre de base est connu sous le nom de registre de translation (relocation register).

    9

    4) Protection de la mémoire

  • IV.2 Concepts de la mémoire

    • Exemple:

    oRegistre de base=300040

    oRegistre de limite= 120900

    o Le processus peut accéder

    légalement à toutes les adresses • de 300040 (incluse)

    • à 420940 (non incluse)

    (420940 =300040+120900)

    10

    4) Protection de la mémoire

  • IV.2 Concepts de la mémoire

    • La protection de l'espace mémoire est réalisée par une comparaison entre chaque adresse physique, converti à partir d’une adresse logique du processus, et les valeurs de ses registres de base et de limite.

    • Lorsqu’un processus tente d’accéder à la mémoire du SE ou d’un autre processus, cela entraîne une interruption du SE, qui traite la tentative comme une erreur fatale.

    • Ce mécanisme empêche un programme utilisateur de modifier (accidentellement ou délibérément) le code ou les structures de données du SE ou d'autres utilisateurs.

    11

    • Evidement les registres de base et de limite ne peuvent être chargés ou modifiés que par le SE en mode noyau.

    4) Protection de la mémoire

    Physical address

  • IV.2 Concepts de la mémoire

    • Un processus peut être transféré entièrement et temporairement de la mémoire principale vers la mémoire secondaire (swap out), puis ramené pour poursuivre son exécution (swap in). C’est l’ordonnancement à moyen terme.

    Avantage: permettre à l'espace d'adressage physique total de tous les processus de dépasser la taille de la mémoire principale.

    12

    ↓ Inconvénient: temps de changement de contexte + temps de transfert des processus d’une mémoire à l’autre.

    • Le swapping peut être généralement désactivé dans les SE modernes.

    5) Le swapping (va-et-vient)

  • IV.2 Concepts de la mémoire

    • Certains mécanismes d’allocations de mémoire permettent à un processus de s'exécuter uniquement si le programme entier et toutes ses données sont chargés en mémoire physique.

    • La taille d'un processus est donc limitée à la taille de la mémoire physique disponible.

    • Pour obtenir une meilleure utilisation de l'espace mémoire, d’autres mécanismes d’allocations de mémoire adoptent le chargement dynamique:

    o Le programme principal est chargé en mémoire et est exécuté.

    oUn élément n'est pas chargé tant qu’il n'est pas appelé.

    oCe mécanisme est utile lorsque de grandes quantités de code sont écrits pour traiter des cas peu fréquents.

    oBien que la taille totale du programme puisse être importante, la portion utilisée (et donc chargée) peut être beaucoup plus petite.

    13

    6) Chargement dynamique

  • IV.2 Concepts de la mémoire

    • La mémoire principale doit prendre en charge à la fois le SE et les processus utilisateur.

    • C’est une ressource limitée qui doit être allouée efficacement

    • Pour allouer un espace mémoire, le gestionnaire de mémoire peut appliquer deux modes d’allocation différents: oAllocation contiguë: placer la totalité d’un processus à des

    adresses physiques consécutives.

    oAllocation non contiguë : fractionner le processus et placer ses différents fragments à des adresses physiques dispersées.

    14

    7) Méthodes d’allocation de la mémoire

  • Plan

    IV.1 Introduction

    IV.2 Concepts de la mémoire

    IV.3 Allocation contiguë de la mémoire

    IV.4 Allocation non contiguë de la mémoire

    IV.5 Mémoire virtuelle

    15

  • IV.3 Allocation contiguë de la mémoire

    • Allocation contiguë: méthode ancienne effectuée par le gestionnaire de mémoire pour l’attribution de la mémoire.

    • La mémoire principale est généralement divisée en deux partitions:

    o Une partition pour le SE

    o Une partition que doivent partager les processus utilisateur: Chaque processus est contenu dans une seule partition contiguë de la

    mémoire.

    Le prochain processus va être placé en mémoire directement après.

    16

    1) Définition

  • IV.3 Allocation contiguë de la mémoire

    • Un problème majeur dans l’allocation contiguë est qu’il peut y avoir assez d’espace pour exécuter un processus, mais il est fragmenté de façon non contiguë.

    • Cette fragmentation peut être: oexterne: l’espace inutilisé est entre les partitions

    o interne: l’espace inutilisé est à l’intérieur des partitions

    • Il existe 2 moyens de réduire ce problème:

    oPartition fixe

    oPartition dynamique

    17

    SE

    Processus 1

    Processus 2

    Partition vide

    2) La fragmentation

    Frag interne

    Frag externe

  • IV.3 Allocation contigüe de la mémoire

    • Partitions de tailles inégales avec plusieurs files:

    o Placer le processus dans la partition de plus petite taille pouvant le contenir.

    o Une file par partition pour minimiser la frag interne

    o Problème: processus en attente alors qu'il y a des partitions vides (augmente la frag externe).

    • Partitions de tailles inégales avec une seule file

    o Choisir une partition libre pouvant contenir le processus (algorithme de placement).

    o Une seule file pour toutes les partitions.

    o Relativement:

    o la frag interne augmente.

    o la frag externe est réduite.

    18

    La méthode la plus simple pour allouer la mémoire est de la diviser (de manière statique) en plusieurs partitions de taille fixe, généralement de tailles inégales.

    3) Allocation contigüe par partitions fixes

  • IV.3 Allocation contiguë de la mémoire

    • Partitions en nombre et tailles variables.

    • Au chargement d’un processus, on lui alloue exactement la taille mémoire nécessaire. Le reste devient une nouvelle zone libre (bloc libre ou trou).

    • Lorsqu’il se termine, sa partition devient libre et peut augmenter la taille d’une partition libre adjacente.

    • Ce schéma peut générer une frag externe, mais élimine définitivemeent la frag Interne.

    19

    4) Allocation contigüe par partitions dynamiques

  • IV.3 Allocation contiguë de la mémoire

    • Décider où placer un processus de taille n dans l’un des blocs disponibles pouvant le contenir.

    • 3 stratégies sont les plus utilisées:

    o First-fit (1ère zone libre) : allouer le premier bloc de taille suffisante.

    oBest-fit (Meilleur ajustement) : allouer le plus petit bloc qui soit suffisamment grand. Cet algorithme laisse des blocs trop petits pour inclure un autre processus.

    oWorst-fit (pire ajustement ): allouer le plus grand bloc. Cet algorithme a été introduit pour remédier au problème engendré par le best-fit, en laissant des blocs de grande taille plus susceptibles de contenir d’autres processus.

    20

    5) Algorithmes de placement

  • IV.3 Allocation contiguë de la mémoire

    21

    • Le processus 7 de taille 35 Mo va être chargé en mémoire

    • Selon l’algorithme utilisé, choisir le bloc

    pouvant contenir le processus: * First-fit: * Best-fit: * Worst-fit:

    Processus 3

    Processus 4

    Processus 5

    30Mo disponible

    40Mo disponible

    Processus 6

    70Mo disponible

    Processus 1

    45Mo disponible

    premier (45Mo)

    plus petit (40Mo)

    plus grand (70Mo)

    5) Algorithmes de placement

  • IV.3 Allocation contiguë de la mémoire

    Quel est le meilleur de ces algorithmes?

    •Critère principal: éviter le fait qu’un processus ne puisse être servi même s’il y a assez de mémoire.

    •Best-fit: le trou créé est le plus petit possible. La mémoire se remplit alors de trous trop petits pour contenir un processus.

    •Worst-fit: les trous crées seront les plus grands possibles.

    • Les simulations effectuées dans ce domaine montrent qu’il ne vaut pas la peine d’utiliser les algorithmes complexes.

    • First-fit donne de bons résultats en termes de disponibilité des blocs et surtout il ne gaspille pas de temps dans la recherche de blocs.

    22

    5) Algorithmes de placement

  • IV.3 Allocation contiguë de la mémoire

    • Compactage (défragmentation):

    o Effectué quand un processus ne trouve pas une partition assez grande, mais sa taille est plus petite que la frag externe existante.

    o Pour cela, on déplace les processus (vers le bas de la mémoire par exemple) et on les range l’un après l’autre de manière contiguë. La valeur du registre de base doit être changée pour chaque processus.

    o On obtient ainsi un seul bloc libre de grande taille, mais cette opération est coûteuse.

    ↓ Inconvénients:

    o temps de transfert des processus

    o rétablissement de tous les liens entre les adresses.

    • Une autre technique pour réduire le problème de la frag est d’utiliser une allocation non contiguë de la mémoire.

    23

    6) Le Compactage