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

SMI - S4 Chapitre 4: Gestion de la mémoire partie 2dmifps.uca.ma/alioua/OS/diapo/Gestion memoire Partie2.pdf · 2020. 5. 27. · segments (main, procédures, fonctions, variables,

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

  • Année universitaire: 2019-2020

    Chapitre 4:

    Gestion de la mémoire partie 2

    1

    SMI - S4

    Cours donné par: Pr. N. ALIOUA

  • 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

    2

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

    • Son principe est de diviser un processus en parties et permettre l’allocation séparée de chaque partie:

    o Les parties sont beaucoup plus petites que le processus entier et donc permettent une utilisation plus efficace de la mémoire.

    o Les petits trous peuvent être utilisés plus facilement.

    • Il existe deux techniques de base d’allocation non contiguë:

    o Segmentation: découpage du programme en parties (modules) selon leur valeur logique: on parle de segments.

    o Pagination: découpage arbitraire du programme en parties de taille fixe: on parle de pages.

    o On peut aussi combiner les deux.

    3

    Principe de base

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

    • Le programmeur voit un programme comme une collection de segments (main, procédures, fonctions, variables, pile, …).

    • La segmentation fournit un mécanisme pour mapper cette vue à la mémoire physique réelle.

    • Les éléments sont identifiés par leur offset par rapport au début du segment auquel ils appartiennent.

    4

    • L’espace d'adressage logique est une collection de segments, chacun possédant un numéro et une longueur.

    • Les adresses logiques s’écrivent sous forme (Num_segment:offset).

    1) Segmentation 1.1) Généralités

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

    • Même si les adresses logiques sont bidimensionnelles, la mémoire physique est toujours une séquence unidimensionnelle d'octets.

    • La table des segments permet le mapping entre l’adresse logique et l’adresse physique. Chaque entrée représente un segment et est constituée d’une base et d’une limite:

    o Base du segment: spécifie l'adresse physique du début du segment en mémoire.

    o Limite du segment: spécifie la taille du segment.

    • Chaque processus possède sa propre table de segments gérée par la MMU.

    • Dans le PCB du processus, on stock l’adresse mémoire de sa table de segments.

    5

    1) Segmentation 1.2) Table de segments

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

    • Le num de segment 𝑠 est utilisé comme index pour la table des segments.

    • L’offset (décalage) 𝑑 doit être compris entre 0 et la limite du segment strictement.

    • Lorsqu'un offset est légal, il est additionné à la base du segment pour obtenir l'adresse physique.

    6

    1) Segmentation 1.2) Table de segments: Le mapping

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

    • On a 5 segments de 0 à 4.

    • Une référence à l'octet 53 du segment 2 est mappée sur l'emplacement:

    4300 + 53 = 4353.

    • Une référence à l'octet 1000 du segment 0 est mappée sur l'emplacement:

    erreur

    7

    1) Segmentation 1.2) Table de segments: exemple du mapping

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

    • Un segment peut être partagé par plusieurs processus.

    • Exemple: Si plusieurs fichiers Word sont ouverts, les DLL peuvent être partagés

    8

    1) Segmentation 1.3) Segments partagés

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

    • En plus de la limite et de la base, chaque entrée de la table des segments peut contenir des informations sur les privilèges de l’utilisateur sur ce segment (lecture, écriture, exécution)

    • Si, au moment du calcul de l’adresse, on trouve que l’utilisateur n’a pas le droit d’accès, une interruption est provoquée.

    •Ces privilèges peuvent donc varier d’un utilisateur à un autre, par rapport au même segment partagé!

    9

    1) Segmentation 1.4) Protection

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

    Avantages: l’unité d’allocation de mémoire (segments) est:

    Plus petite que le programme entier

    Une entité logique connue par le programmeur

    La protection et le partage de segments sont possibles

    Pas de fragmentation interne

    ↓ Inconvénient:

    - La fragmentation externe n’est toujours pas éliminée: présence de trous en mémoire, qui nécessite le compactage (qui est très couteux).

    Une autre solution est d’utiliser des unités d’allocation de mémoire de tailles égales. C’est la pagination.

    10

    1) Segmentation 1.5) Avantages Vs Inconvénients

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

    • La pagination est un autre mécanisme de gestion non contiguë de la mémoire. C’est la technique la plus utilisée actuellement.

    • Principe de la pagination:

    o Diviser la mémoire physique en blocs de taille fixe (frames ou cadres).

    o Diviser la mémoire logique en blocs de même taille (pages).

    o Lorsqu'un processus doit être exécuté, ses pages sont chargées dans les frames disponibles.

    o La taille d'une page (et d’une frame) est une puissance de 2, variant entre 512 octets et 1 Go par page, selon l'architecture de l'ordinateur.

    11

    2) Pagination 2.1) Généralités

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

    • Le SE doit maintenir une table de pages pour chaque processus. Chaque entrée de la table:

    o est indexée par le numéro de la page

    o contient le numéro de la frame où la page est physiquement localisée

    • Une liste de frames disponibles est maintenue par le SE.

    • Adresse logique:

    (num_page_𝑝: offset_𝑑).

    • Adresse physique:

    (num_frame_𝑓: offset_𝑑).

    12

    2) Pagination 2.2) Table de pages

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

    • La table de frames est utilisée par le SE pour gérer la mémoire physique:

    o Elle stock principalement les informations sur le nombre total de frames, sur celles allouées et celles disponibles.

    o Si la frame est allouée, l’entrée précise la page et le processus concernés.

    • Un processus ne peut accéder qu’aux frames présentes dans sa table de pages. Cela garantit la protection de la mémoire des accès indésirables.

    13

    2) Pagination 2.2) Table de frames

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

    • Lorsque la mémoire physique et la taille des pages sont une puissance de 2, on peut appliquer la méthode suivante pour déterminer la correspondance entre @ logique et @ physique.

    • Suppositions: Taille de page = 4o, mémoire physique = 32o

    • L’instruction 0 correspond à @ logique (page 0: offset 0).

    Selon la table de pages, la frame correspondante: 5

    Calcul @ physique correspondante: (5×4o) + 0=20.

    • L’instruction 5 correspond à @ logique(page 1: offset 1).

    Selon la table de pages, la frame correspondante: 6

    Calcul @ physique correspondante: (6×4o) + 1=25.

    @Phy=(Num_Frame x Taille_Frame) + Offset

    14

    2) Pagination 2.3) Table de pages: le mapping

    Nu

    m In

    stru

    ctio

    n Pg0

    Pg1

    Pg2

    Pg3

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

    • La pagination élimine le problème de frag externe mais introduit la frag interne.

    • La frag interne ne peut survenir que dans la dernière page d’un processus lorsque la taille du processus n’est pas divisible par la taille d’une frame.

    • En effet, supposant que la taille des frames est de 1k:

    o Si la taille du processus est de 4k, exactement 4 frames seront utilisées et aucune frag interne ne sera introduite.

    o Si la taille du processus est de 4.1k, 5 frames seront utilisées mais la dernière comportera uniquement 0.1k, ce qui introduira une frag interne de 0.9k

    • On peut réduire la frag interne en utilisant des pages de petite taille. Cependant, cela augmente le temps de changement de contexte de processus et la taille des emplacements qu’occupent les tables de pages et de frames dans la mémoire. 15

    2) Pagination 2.4) Fragmentation interne

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

    • On peut ajouter des colonnes dans la table de pages correspondant à des bits de protection de pages.

    • L’un d’eux permet de définir les droits d’accès aux pages:

    o Ce bit indique si une page est en lecture-écriture ou en lecture seule.

    o En même temps que l'adresse physique est calculée, le bit de protection est vérifié pour s’assurer qu'aucune écriture n'est effectuée sur une page en lecture seule, par exemple.

    o Une tentative d'écriture sur une page en lecture seule provoque une interruption du SE.

    16

    2) Pagination 2.5) Protection

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

    • Il est possible de partager le code commun entre processus.

    • La condition nécessaire pour le partage du code est la réentrance: il ne doit jamais changer en cours d’exécution.

    17

    • Le SE doit en plus imposer aux pages partagées d’être en lecture seule (par le bit de protection).

    • Evidemment, les données de chaque processus seront différentes.

    • Cette technique permet d’économiser de l’espace: Dans l’exemple, au lieu de charger 9 pages de code, on charge uniquement 3.

    2) Pagination 2.6) Partage de pages

  • Plan IV Gestion de la mémoire

    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

    18

  • IV.5 Mémoire virtuelle

    • Les mécanismes d’allocation précédents exigent qu'un processus entier soit chargé en mémoire avant de s'exécuter.

    • La mémoire virtuelle est un mécanisme qui permet l'exécution de processus même s’ils ne sont pas chargés en entier en mémoire principale.

    o Une image de tout l’espace d’adressage logique du processus est gardée dans la mémoire secondaire (généralement le disque).

    o Seules les parties en exécution sont chargées (copiées en Mémoire Principale). Les parties manquantes pourront être chargées au besoin depuis le disque.

    o Ce mécanisme peut être utilisé avec la pagination ou la segmentation.

    Avantages majeurs:

    Permet d’exécuter des processus ayant un espace d’adressage logique plus grand que la mémoire physique.

    Augmentation du degré de multiprogrammation, ce qui améliore l’utilisation de l’UCT

    19

    Introduction

  • IV.5 Mémoire virtuelle

    • La mémoire virtuelle sert à augmenter artificiellement la mémoire principale. Elle réside dans le disque qui est de très grande capacité.

    • Pagination à la demande: on ne charge en mémoire physique une page d’un processus (qui réside en totalité dans la mémoire virtuelle) que lorsqu’on a besoin d’un élément présent dans cette page.

    • Dans la table de pages, on doit déterminer si une page est chargée en mémoire principale ou non. On inclue alors un bit présent (ou valid-invalid) pour chaque entrée:

    o Bit = 1 (valide): la page est chargée en mémoire

    principale

    o Bit= 0 (invalide): la page est en mémoire virtuelle.

    20

    1) Pagination à la demande 1.1) Principe

  • IV.5 Mémoire virtuelle

    Si le bit de présence est invalide pour une page à laquelle le processus tente d’accéder, une erreur défaut de page est émise:

    1. Trappe au SE: la page demandée n’est pas en mémoire principale

    2. Changement de contexte, un autre processus peut être exécuté.

    3. Le SE détermine si la page demandée est légale:

    a. Illégale: terminaison du processus

    b. Légale:

    i. Trouver la page sur le disque

    ii. Charger la page dans une frame libre et mettre à jour la table des pages.

    21

    1) Pagination à la demande 1.2) Défaut de page

  • IV.5 Mémoire virtuelle

    • Si la mémoire principale est pleine (i.e. pas de frame libre), un algo pour le remplacement de pages est utilisé :

    o Trouver une page à sortir de la mémoire : page victime. (plusieurs frames ne peuvent pas être « victimisées », ex. frames du noyau du SE).

    o La page victime doit-elle être réécrite en mémoire secondaire?

    On utilise un Bit de modification (dirty bit) ajouté dans la table des pages pour chaque entrée: Pas de réécriture: si page non modifiée (bit=0). La copie sur disque est

    encore fidèle.

    Réécriture: si page modifiée (bit=1) depuis qu’elle a été chargée en mémoire principale.

    22

    1) Pagination à la demande 1.2) Défaut de page

  • IV.5 Mémoire virtuelle

    • Choisir la victime de façon à minimiser les défauts de page (pas évident).

    • Plusieurs méthodes pour choisir la page victime :

    o Ordre chronologique de chargement: Première arrivée première sortie (First-in-First-Out, FIFO)

    o Ordre chronologique d’utilisation: la moins récemment utilisée (Least Recently Used, LRU)

    o Deuxième chance ou horloge (clock)

    o Optimal: remplacer la page référencée le plus tardivement. Cet algo produit le plus petit nombre de défauts de page, mais impossible à réaliser (car il faut connaître le futur)

    23

    2) Algos de choix de pages

  • IV.5 Mémoire virtuelle

    FIFO:

    • On connaît l’instant d'arrivée en mémoire principale de chaque page.

    • Quand une page doit être remplacée, on choisit la plus ancienne.

    • Problème : les premières pages sont souvent utiles pendant toute l’exécution d’un processus! (variables globales, programme principal...)

    LRU:

    • On connaît le dernier instant d’utilisation de chaque page.

    • Quand une page doit être remplacée, on choisit celle qui n'a pas été utilisée depuis le plus longtemps.

    24

    2) Algos de choix de pages 2.1) FIFO et LRU

  • IV.5 Mémoire virtuelle

    • Note: Lorsque la mémoire principale est vide, chaque nouvelle page produit un défaut de page. Mais pour mieux comparer les algos, il est utile de garder séparés ces défauts initiaux (car leur nombre est le même pour tous les algos)

    • Le nombre de défaut de pages qu’on compare (Les F):

    • FIFO: 6

    • LRU: 4

    • OPT: 3

    25

    2.1) FIFO et LRU

    2) Algos de choix de pages

  • IV.5 Mémoire virtuelle

    • Les frames forment conceptuellement un tampon circulaire.

    • On utilise un bit use qui représente l’utilisation de la page, ainsi qu’un pointeur indiquant la frame à partir de laquelle débute la recherche de la victime.

    • Lorsqu’une page est chargée dans une frame:

    • Son bit use=1.

    • Le pointeur pointe sur la prochaine frame du tampon.

    • Lorsqu’une page précédemment chargée dans une frame est réutilisée:

    • Le pointeur ne bouge pas.

    • Son bit use=1.

    • La page victime est recherchée à partir de l’emplacement du pointeur:

    • Si la frame pointée a use=1 alors use=0 et le pointeur avance

    • Si la frame pointée a use=0 alors use =1, la page y est chargée et le pointeur avance.

    26

    2.2) Clock

    2) Algos de choix de pages

  • IV.5 Mémoire virtuelle

    • La victime est recherchée depuis l’emplacement indiqué par le pointeur (frame 2). Quand on passe par un bit use = 1, le mettre à 0 (frames 2 et 3).

    • La page est chargée dans la première frame avec le bit use = 0 (frame 4) et le bit use est mis à 1. Le pointeur pointe sur la frame suivante (frame 5).

    27

    2.2) Clock

    2) Algos de choix de pages

    Charger la page 727

  • IV.5 Mémoire virtuelle

    • Le symbole « * » indique que le bit use = 1

    • CLOCK protège du remplacement les pages récemment utilisées en mettant à 1 le bit use à chaque référence

    • Le nombre de défaut de pages qu’on compare (Les F):

    • FIFO: 6

    • Clock: 5

    • LRU: 4

    • OPT: 3

    28

    Tous les bits use étaient à 1. On a fait le tour et donc le bit use = 0 pour toutes les frames. La 1ère frame est remplacée

    2.3) Comparaison

    2) Algos de choix de pages

  • IV.5 Mémoire virtuelle

    • LRU s’approche le plus de OPT mais il est beaucoup plus coûteux et plus complexe à mettre en place

    • Clock est préféré car moins coûteux et il est considéré comme une amélioration de FIFO vers LRU

    • L’allocation locale ou globale: lorsqu’on retire une page de la mémoire principale en utilisant un des algos précédents, on peut considérer un remplacement dans l’espace mémoire principale:

    o Global: choix se faisant par rapport à tous les processus chargés.

    o Local: choix se faisant par rapport au processus ayant déclenché le défaut de page.

    29

    2.4) Lequel choisir?

    2) Algos de choix de pages