Gestion de la m - PowerPoint PPT Presentation

About This Presentation
Title:

Gestion de la m

Description:

Chapitre 4 4.1 Gestion l mentaire de la m moire 4.2 Le va-et vient (swaping) 4.3 La m moire virtuelle 4.4 Algorithmes de remplacement de pages – PowerPoint PPT presentation

Number of Views:263
Avg rating:3.0/5.0
Slides: 70
Provided by: Steve1532
Category:
Tags: gestion

less

Transcript and Presenter's Notes

Title: Gestion de la m


1
Gestion de la mémoire
  • Chapitre 4

4.1 Gestion élémentaire de la mémoire 4.2 Le
va-et vient (swaping) 4.3 La mémoire
virtuelle 4.4 Algorithmes de remplacement de
pages 4.8 La segmentation
2
Gestion de la mémoire
  • Idéalement, on voudrait que la mémoire soit
  • grande
  • rapide
  • non volatile
  • bon marché
  • Hiérarchie de la mémoire
  • Petite quantité de mémoire rapide et volatile
    mais chère (cache)
  • Quelques mégaoctets de mémoire volatile de
    vitesse et prix moyen (mémoire principale)
  • Quelques gigaoctets de mémoire plus lente, non
    volatile et bon marché (disque)
  • Cette hiérarchie est gérée par le gestionnaire de
    la mémoire

3
Gestion élémentaire de la mémoireMonoprogrammatio
n sans va-et-vient ni pagination
  • Un seul procesus en mémoire à la fois
  • Les adresses utilisées dans les programmes
    correspondent à des adresses réelles en mémoire.
  • Trois façons simples d'organiser la mémoir
  • Dans b et c, le haut de la mémoire corespond à la
    mémoire morte (ROM)

4
Multiprogrammation avec partitions
  • Partitions de taille fixe
  • files d'attente différentes pour chaque
    partition
  • Inconvénient les grandes partitions peuvent être
    inutilisées
  • Une seule file d'attente
  • On choisi une tâche pouvant être placée dans la
    prochaine partition libre

5
Modélisation de la multiprogrammation
  • La multiprogrammation permet daugmenter
    lutilisation du CPU
  • p fraction du temps passé à attendre la fin
    dune E/S
  • Taux d'utilisation du CPU ( 1-pn ) en fonction du
    nombre de processus en mémoire.

6
Analyse dun système de traitement par lot
  1. Temps d'arrivé et travail pour 4 tâches
  2. Taux d'utilisation du CPU avec 80 d'entrée/sortie

7
Analyse dun système de traitement par lot
  • Succession des événements alors que les tâches
    arrivent et se terminent.
  • Durant les 10 première minutes la tâche 1 est
    seule et utilise 20 du temps CPU (2 minutes)
  • Durant les 5 minutes suivantes il y a 2 tâches,
    chacune utilisant 18 du temps CPU (0,9 minute )
  • Durant les 5 minutes suivantes il y a 3 tâches,
    chacune utilisant 16 du temps CPU (0,8 minute)
  • Durant les 2 minutes suivantes il y a 4 tâches,
    chacune utilisant 15 du temps CPU (0,3 minute)

8
Réallocation et protection
  • On ne peut pas prévoir où en mémoire un programme
    sera chargé
  • Les adresses ne peuvent pas être absolues
  • Un programme ne doit pas adresser l'espace d'un
    autre
  • 2 solutions
  • Au moment de mettre un programme en mémoire on
    modifie toutes les adresses
  • On utilise deux registres spéciaux
  • Registres de base et de limite
  • Chaque adresse est additionnée au registre de
    base pour déterminer l'adresse physique
  • Il y a erreur si l'adresse est plus grande que la
    valeur du regisre de limite.

9
Le va-et-vient (1)
  • Il nest pas rare davoir entre 40 et 60
    processus de lancés au démarrage dune machine.
  • Une application typique consomme entre 50 et 200
    Mo de mémoire. Souvent plus (ex. IE explorer,
    Safari ou Firefox)
  • On est donc rapidement à court de mémoire.
  • La méthode du va-et-vient (swapping) consiste à
    déplacer un processus de la mémoire vers le
    disque afin de libérer de lespace pour y
    introduire un autre processus (nouvellement créé
    ou ayant préalablement été déplacer vers le
    disque).

10
Le va-et vient (2)
  • L'allocation de la mémoire change au gré des
    processus qui viennent en mémoire et ceux qui
    quittent la mémoire
  • Les zones grises indiquent la mémoire non utilisée

11
Le va-et-vient (3)
  • Allocation d'espace pour l'accroissement du
    segment de données
  • Allocation d'espace pour l'accroissement de la
    pile et du segment de données (espace alloué
    dynamiquement)
  • Quand il y a trop de trous il est nécessaire de
    compacter la mémoire

12
Gérer la mémoire (1)
  • Utilisation dune table de bits
  • La mémoire est divisée en unités dallocation
    dont la taille peut varier de quelques mots à
    plusieurs kilo-octets
  • Une table de bits est utilisée pour indiquer si
    une unité dallocation est libre ou non.
  • La taille de la table dépend de
  • La taille de la mémoire
  • La taille des unités dallocation
  • Avantage simplicité
  • Inconvénient La recherche dun espace de k
    unités libres est une opération lente.

13
Gérer la mémoire (2)
  • Utilisation de listes chaînées
  • Liste chaînée des segments de mémoire alloués et
    libres
  • Un segment (noeud de la liste) est soit un
    processus, soit un trou entre deux processus
  • Chaque noeud contient létat du segment (P
    Processus, TTrou), ladresse du début du
    segment et sa longueur.
  • La liste peut être triée par adresses
  • Chaque entrée de la table des processus contient
    un pointeur vers le noeud correspondant (si le
    processus est en mémoire).

14
Gérer la mémoire (3)
  • Une partie de la mémoire avec 5 processus, 3
    trous
  • Les petites marques verticales indiquent les
    unités d'allocation
  • Les zones grises sont libres
  • Le tableau de bits correspondant
  • Mêmes informations sous la forme d'une liste
    chaînée

15
Gérer la mémoire avec une liste chaînée
Lorsquun processus X se termine, on regarde son
voisinage dans la liste des segments. Il y a
quatre situations possibles
  • Il y a avantage a utiliser une liste de segments
    doublement chaînée afin de faciliter la recherche
    du noeud précédent.

16
Algorithmes dallocation de la mémoire
  • Première zone libre (first fit)
  • On trouve le premier trou suffisamment grand pour
    contenir le processus.
  • Le trou est ensuite divisé en deux parties une
    pour le processus et lautre pour la mémoire
    inutilisée.
  • Zone libre suivante (next fit)
  • Identique à lalgorithme précédent sant que la
    recherche commence au dernier espace libre
    trouvé.
  • Les performance sont légèrement meilleures

17
Algorithmes dallocation de la mémoire
  • Meilleur ajustement (best fit)
  • Parcourt toute la liste et recherche le plus
    petit trou pouvant contenir le processus.
  • Évite de partitionner inutilement les gros trous
  • Cet algorithme crée des trous minuscules
    inutilisables par la suite
  • Plus lent que les algorithmes précédents
  • Plus grand résidu (worst fit)
  • On prend le plus grand trou disponible
  • Le trou restant est assez grand pour être
    réutilisé
  • Des simulations démontrent que cette solution
    nest pas meilleure que la précédente.

18
Algorithmes dallocation de la mémoire
  • Un peut utiliser deux listes distinctes (zones
    libres et occupées par un processus)
  • Accélère les algorithmes précédents
  • Si la liste des trous est triée par taille alors
    best-fit et first-fit sont essentiellement
    équivalents.
  • Ralentissement quand la mémoire est libérée
  • Un segment libéré est enlevé de la liste des
    processus et inséré dans la liste des trous
  • On peut utiliser les zones libres elle même pour
    la liste des zones libres.

19
Algorithmes dallocation de la mémoire
  • Placement rapide (quick fit)
  • On gère des listes séparées pour certaines des
    tailles les plus communes
  • Par exemple, on peut avoir des listes de 4K0,
    8K0, 12Ko, etc.
  • Très rapide.
  • Rend plus complexe le processus de libération de
    la mémoire On doit chercher les trous adjacents
    pour une vérifier si une fusion est possible.
  • Tous ces algorithmes souffrent du problème de la
    fragmentation de la mémoire.

20
Mémoire virtuelle (1)
  • Solution au problème des programmes trop gros
    pour entrer en mémoire.
  • Chaque programme possède son propre espace
    dadressage découpé en petite entités appelées
    pages.
  • Cet espace dadressage représente une mémoire
    virtuelle qui peut être plus grande que la
    mémoire physique.
  • Chaque page est une suite dadresses contiguëes
    de la mémoire virtuelle.
  • La taille des page est fixe (typiquement entre
    512 octets à 64Ko)
  • Une adresse virtuelle est une adresse de la
    mémoire virtuelle.

21
Mémoire virtuelle (2)
  • Il nest pas nécessaire davoir toutes les pages
    en mémoire physique pour exécuter le programme.
  • Chaque page est indivisible
  • Elle est entièrement en mémoire physique ou elle
    ny est pas du tout.
  • Les pages qui ne sont pas en mémoire sont placées
    sur le disque.
  • Une table indique quelles sont les pages en
    mémoire ainsi que ladresse physique de
    celles-ci.
  • Le tout est géré de façon transparente par l
    unité de gestion de la mémoire (MMU)

22
La pagination (1)
  • Localisation et fonction du MMU

23
La pagination (2)
  • La relation entre les adresses virtuelles et
    physiques est indiquée dans la table des pages
  • Dans lexemple, un ordinateur peut produire des
    adresses sur 16bits (64 Ko) mais il ny a que 32
    Ko de mémoire physique.
  • La mémoire virtuelle est divisée en pages de 4K
  • La mémoire physique est divisée en cadre de page
    (page frame)

24
La pagination (3)
  • Par exemple,
  • Ladresse virtuelle 0 est transformée en adresse
    physique 819224096
  • Ladresse virtuelle 819224096 est transformée
    en adresse physique 2457664096
  • Ladresse virtuelle 205005409620 est
    transformée en adresse physique 123082409620

25
La pagination (4)
  • Sur les systèmes Unix on peut obtenir la taille
    des pages à laide de la commande pagesize
  • Sur sunensdev la taille des page est de 8Ko
  • Sur Mac OS X la taille des pages est de 4Ko

26
Table des pages (1)
  • Fonctionnement interne du MMU avec 16 pages de 4Ko

27
Table des pages (2)
  • Deux problèmes
  • La table des pages peut être très grande
  • Trouver l'adresse réelle à partir de l'adresse
    virtuelle doit se faire très rapidement
  • Deux cas extrèmes (et non applicables)
  • La table est entièrement implémentée par le
    matériel à l'aide d'un tableau de registres.
  • Un seul registre pointant sur le début de la
    table qui est entièrement chargée en mémoire.

28
Table des pages (3)
  • Entrée typique d'une table des pages
  • Présent/Absent si 0 cela provoque un défaut de
    page
  • Protection lecture, écriture, exécution
  • Modifié (dirty bit) Si aucune modification, il
    nest pas nécessaire de sauverager sur le disque.
    Lors dune écriture, automatiquement mis à 1
  • Référencié Permet de décider si la page peut
    être remplacer par une autre
  • Cache inhibée Utile pour les attentes dE/S (on
    veut accéder aux données du périphérique plutôt
    quà la cache

29
Suite la semaine prochaine
30
Table des pages multiniveaux
  • Adresse 32 bits avec 2 champs de table des pages
  • Table des pages à deux niveaux

31
TLBs Translation Lookaside Buffers(Mémoire
associative)
Valide
Page virtuelle
Modifié
Protection
Cadre de page
indices
code
données
données
code
code
pile
code
  • Une TLB pour accélérer la pagination

32
Tables des pages inversées
252-1
216-1
216-1
  • Comparaison entre une table des pages
    traditionnelle et une table des pages inversée.
  • De plus en plus utilisé (surtout avec le
    développement des machines 64 bits)
  • Utilisé sur les machines 64 bits telles que
    PowerPC et UltraSparc

33
Algorithmes de remplacement de pages
  • Une faute de page force le SE à choisir
  • quelle page doit être enlevée
  • faire de la place pour la nouvelle page
  • Les pages modifiées doivent d'abord être
    sauvegardées
  • sinon on peut simplement les écraser
  • Il est préférable de ne pas choisir une page
    souvent utilisée
  • sinon il faudra la recharger bientôt

34
L'algorithme optimal
  • Remplacer la page qui sera utilisée après toutes
    les autres
  • Optimal mais irréalisable
  • On exécute deux fois un programme
  • La seconde fois on a l'information nécessaire
    pour implémenter l'algorithme de remplacement de
    page optimal
  • Permet de comparer les performances d'algorithmes
    réalisable avec l'algorithme optimal.

35
Algorithme de remplacement de la page non
récemment utilisée (NRU)
  • Chaque page possède deux bits R et M
  • ces bits sont mis à 1 lorsque la page est
    référencée ou modifiée (le bit R est remis à 0
    périodiquement).
  • 4 classes de pages
  • non référencée, non modifiée
  • non référencée, modifiée
  • référencée, non modifiée
  • référencée, modifiée
  • NRU enlève une page au hazard
  • en partant du plus petit numéro de classe

36
Algorithme premier arrivé, premier sorti
  • On maintient un liste des pages
  • dans l'ordre de leur chargement en mémoire
  • La page au début de la liste (la plus ancienne)
    est remplacée
  • Désavantage
  • les vieille pages peuvent aussi être celles qui
    sont le plus utilisées.

37
Algorithme de la seconde chance
  • Opération seconde chance
  • pages triées selon l'ordre d'arrivé
  • Si le bit R de la page la plus ancienne est 1
    alors on la met à la fin de la liste (comme une
    nouvelle page) et on met son bit R à 0.

38
Algorithme de l'horloge
Comme l'algorithme précédent mais l'utilisation
d'une liste circulaire évite de déplacer les
pages.
39
Algorithme de la page la moins récemment utilisée
(LRU)
  • On suppose que les pages qui ont été utilisées
    récemment le seront à nouveau prochainement
  • on enlève les pages qui n'on pas été utilisées
    depuis longtemps
  • Tenir à jour une liste chaînée de pages
  • page la plus récemment utilisée en premier
  • mettre à jour cette liste à chaque référence
    mémoire Couteux!!
  • Alternative On utilise un compteur C incrémenté
    après chaque instruction
  • on copie C dans la page des tables pour l'entrée
    de la page référencées
  • choisir la page avec la plus petite valeur de
    compteur
  • Aide matériel nécessaire

40
Algorithme de la page la moins récemment utilisée
(LRU)
  • Autre solution matérielle
  • Pour une machine à n cadres de page
  • Matrice n?n
  • Quand une page k est référencée
  • mettre à 1 tous les bits de la rangée k
  • mettre à 0 tous les bits de la colonnne k

41
Exemple
Référence des pages 0,1,2,3,2,1,0,3,2,3
42
Algorithme du vieillissement
  • Un compteur logiciel par page (initialisé à 0)
  • À chaque interruption d'horloge, on examine
    toutes les entrées de la table des pages
  • On décale à droite le compteur et on ajoute à
    gauche le bit R

43
Algorithme du vieillissement
  • Différence avec LRU
  • Si deux pages sont référencées entre deux
    interruptions alors on ne peut pas dire laquel a
    été référencée en dernier
  • Considérez par exemple les pages 3 et 5 de
    lexemple précédent.
  • Les compteurs ont un nombre limité de bits
  • On ne peut pas distinguer deux pages dont tous
    les bits sont à 0

44
L'algorithme de l' ensemble de travail
  • Pagination à la demande (demand paging) Les
    processus sont lancés sans quaucune page ne soit
    en mémoire. Cela résulte en un grand nombre de
    fautes de pages en début dexécution.
  • Le chargement des pages avant lexécution est
    appelé préchargement
  • Le modèle de l ensemble de travail est conçu
    pour réduire le nombre de défauts de pages
  • Temps virtuel courant temps CPU utilisé depuis
    son démarrage
  • Lensemble de travail est constitué des pages
    référencés au cours des t dernière secondes de
    temps virtuel. T doit être assez grand pour
    couvrir de nombreux tops dhorloge.
  • Au démarrage dun processus, un ensemble de
    travail quelconque peut être sélectionné
  • Par exemple, la page contenant la fonction main
    dun programme C devrait faire partie de
    lensemble de travail initial.

45
L'algorithme de l' ensemble de travail
  • Périodiquement toutes les pages ont leur bit R
    mis à 0
  • À chaque faute de page, la table des pages est
    parcourue pour déterminer quelles pages demeurent
    dans lensemble de travail
  • Pour chacune des entrées
  • Si le bit R vaut 1
  • La page fait partie de lensemble de travail
  • Le temps virtuel courant (TVC) est copié dans un
    champs spécial indiquant le temps de la dernière
    utilisation (TDU)
  • Si R vaut 0
  • On calcule AgeTVC-TDU
  • Si Age gt t alors la page est enlevée de
    lensemble de travail
  • Sinon la page demeure dans lensemble de travail
  • La page la plus âgée qui ne fait pas partie de
    lensemble de travail est enlevé
  • Si toutes les pages font partie de lensemble de
    travail alors on enlève la page la plus âgée
    dont le bit R vaut 0
  • Si une telle page nexiste pas, on enlève une
    page quelconque (de préférence une qui na pas
    été modifiée).

46
L'algorithme de l' ensemble de travail
47
L'algorithme WSClock(Working Set Clock)
  • Utilise lalgorithme de lhorloge et les
    informations de lensemble de travail
  • Liste circulaire initialement vide
  • Lexemple suivant indique se qui se passe
    lorsque le bit R vaut 1

48
L'algorithme WSClock
  • Si le bit R vaut 0 alors
  • Si Age gt t et que le clean bit M vaut 0 alors on
    peut remplacer la page
  • Si Age gt t et M 1 alors
  • Lécriture de la page sur le disque est
    ordonnancée
  • En attendant on poursuit la recherche dune page
    à remplacer

49
Résumé des algorithmes de remplacement de pages
Algorithme Commentaires
Optimal Utilisé comme banc d'essai
NRU Très grossier
FIFO Peut écarter des pages importantes
Seconde chance Grande amélioration de FIFO
Horloge Réaliste
LRU Excellent mais difficile à implanter
NFU Approximation grossière de LRU
Vieillissement Approximation efficace de LRU
Ensemble de travail Coûteux
WSClock Bonne efficacité
50
Suite la semaine prochaine
51
Anomalie de Belady
  • Algorithme FIFO avec 3 cadres de pages
  • Algorithme FIFO avec 4 cadres de pages
  • La lettre P indique les fautes de pages
  • L'algorithme LRU n'a pas fce problème

52
Segmentation (1)
  • Comment libérer le programmeur de la gestion de
    laccroissement et de la diminution des tables?
  • Un solution consiste à doter la machine de
    plusieurs espaces dadresses indépendants appelés
    segments.
  • Une adresse est constituée de deux parties
  • ltsegment, déplacementgt
  • Mémoire logique Mémoire virtuelle segmentée
  • Mémoire linéaire mémoire virtuelle paginée

53
Segmentation (0)
  • Dans un espace d'adressage à une dimension, une
    table des pages qui croît peut en chevaucher une
    autre.

54
Segmentation (3)
  • Une mémoire segmentée permet à chaque table de
    croître ou de diminuer indépendamment des autres.
  • Exemple compilateur

55
Segmentation (4)
Considérations Pagination Segmentation
Le programmeur doit-il connaître la techique utilisée? Non Oui
Combien y a-t-il d'espaces d'adressage linéaires? 1 Plusieurs
L'espace total d'adressage peut-il dépasser la taille de la mémoire physique? Oui Oui
Les procédures et les données peuvent-elles être séparées et protégées séparément? Non Oui
Peut-on traiter facilement des tables dont les tailles varient? Non Oui
Le partage de procédures entre utilisateurs est-il simplifié? Non Oui
Comparaison entre la segmentation et la pagination
56
Segmentation (5)
  • Pagination
  • Sert à obtenir un grand espace d'adressage
    linéaire sans avoir à acheter de la mémoire
    physique.
  • Segmentation
  • Permet la séparation des programmes et des
    données dans des espaces d'adressage logiquement
    indépendants.
  • Facilite le partage et la protection.

57
Implémentation de la segmentation pure
  • (a)--(d) Dévelopement de la fragmentation externe
    (phénomène du damier)
  • (e) Compactage

58
Segmentation avec pagination MULTICS (1)
  • Une table des segments contient
  • 218 entrées.
  • Chaque entrée contient un descripteur de segment
    qui pointe sur une table des pages
  • 216 mots de 36 bits par table des pages
  • Adresse physique sur 24 bits

59
Segmentation avec pagination MULTICS (2)
  • Un descripteur de segment
  • L'adresse est complétée par 6 zéros car les
    adresse physiques de 24 bits sont alignées sur
    des pages de 64 octets.
  • Ladresse des segments sur le disque se trouvent
    dans une autre table.

60
Segmentation avec pagination MULTICS (3)
  • Chaque segment est un espace dadressage virtuel
    ordinaire
  • Les segments peuvent être paginés ou non paginés
  • Les espaces paginés utilisent des pages de 1024
    ou de 64 octets
  • Une adresse virtuelle MULTICS sur 34 bits

61
Segmentation avec pagination MULTICS (4)
  • Conversion d'une adresse virtuelle MULTICS en une
    adresse réelle

62
Segmentation avec pagination MULTICS (5)
Les adresses des 16 pages les plus récemment
référencées sont gardées dans une mémoire
associative
  • Version simplifiée de la TLB de MULTICS

63
Segmentation avec paginationLe Pentium d'Intel
(1)
  • Utilise 2 tables (en mémoire)
  • LDT (Local Descriptor Table)
  • GDT (Global Descriptor Table)
  • Pour accéder à un segment, un programme doit
    charger un sélecteur de ce segment (16 bits) dans
    un registre spécial
  • 6 registres de segments
  • CS contient un sélecteur du segment de code
  • DS contient un sélecteur du segment de données
  • Les autres sont moins importants
  • Au moment où un un sélecteur est chargé dans un
    registre de segment, le descripteur correspondant
    est est extrait de la LDT ou de la GDT

2213 segments 230 mots de 32 bits par segment
64
Le Pentium d'Intel (2)
  • Un descripteur du segment de code d'un Pentium
  • (Les segments de données diffèrent légèrement)
  • 64 octets par descripteur
  • Les 3 bits les moins significatifs du sélecteur
    sont mis à 0
  • On ajoute ladresse de la LDT (ou de la GDT) pour
    avoir un pointeur sur le descripteur de segment
    corespondant.
  • Un bit dans un registre système indique si la
    pagination est désactivée

65
Le Pentium d'Intel (3)
  • Conversion d'une paire (selecteur, déplacement)
    en une adresse linéaire.
  • Si la pagination est désactivée alors l'adresse
    linéaire correspond à une adresse physique
    (segmentation pure)
  • On peut annuler la segmentation
  • On utilise toujours le même sélecteur
  • On met le champs Base à 0 (pagination pure)
  • La valeur maximum est mise dans le champs limite.

66
Le Pentium d'Intel (4)
  • Mappage d'une adresse linéaire en une adresse
    physique
  • Table des pages à 2 niveaux

67
Le Pentium d'Intel (5)
  • Le mécanisme de protection du Pentium
  • Les deux bits de protection se trouvent dans le
    PSW (Program Status Word)
  • On ne peut pas faire appel à une procédure dun
    niveau inférieur
  • On doit fournir un sélecteur appelé call gate
    qui donne ladresse de la procédure à appeler
  • Seul les points dentrée officiels peuvent être
    utilisés

68
Quelques appels système sous unix
  • brk, sbrk permet de modifier dynamiquement la
    quantité despace mémoire utilisée
  • getrlimit retourne la taille maximale que peut
    avoir le segment de données
  • mmap établi un mappage entre un espace mémoire
    et un fichier ou une mémoire partagée.
  • munmap libère lespace mémoire alloué par mmap
  • mlock Pour verrouiller des pages en mémoire
  • munlock Pour déverrouller des pages

69
Quelques appels système sous Windows
  • VirtualAlloc Similaire à malloc (la mémoire
    est allouée en pages)
  • VirtualFree Similaire à free
  • VirtualLock Similaire à mlock.
  • VirtualUnock Similaire à munlock.
  • MapViewOfFile Similaire à mmap
  • UnmapViewOfFile Similaire à munmap
Write a Comment
User Comments (0)
About PowerShow.com