La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Module 71 Module 7 Gestion de la mémoire Silberschatz: Chapitre 8.

Présentations similaires


Présentation au sujet: "Module 71 Module 7 Gestion de la mémoire Silberschatz: Chapitre 8."— Transcription de la présentation:

1 Module 71 Module 7 Gestion de la mémoire Silberschatz: Chapitre 8

2 Module 72 Dans ce module nous verrons que, pour optimiser lutilisation de la mémoire, les programmes sont éparpillés en mémoire selon des méthodes différentes: Pagination, segmentation

3 Module 73 Gestion de mémoire: objectifs n Optimisation de l utilisation de la mémoire principale = RAM n Les plus grand nombre possible de processus actifs doit y être gardé, de façon à optimiser le fonctionnement du système en multiprogrammation u garder le système le plus occupé possible, surtout lUCT u sadapter aux besoins de mémoire de l usager F allocation dynamique au besoin

4 Module 74 Gestion de la mémoire: concepts dans ce chapitre n Adresse physique et adresse logique u mémoire physique et mémoire logique n Allocation contiguë u partitions n Segmentation n Pagination n Segmentation et pagination combinées

5 Module 75 Application de ces concepts n Pas tous les concepts de ce chapitre sont effectivement utilisés tels quels aujourdhui dans la gestion de mémoire centrale n Cependant plusieurs se retrouvent dans le domaine de la gestion de mémoires auxiliaires, surtout disques

6 Module 76 Mémoire/Adresses physiques et logiques n Mémoire physique: u la mémoire principale RAM de la machine n Adresses physiques: les adresses de cette mémoire n Mémoire logique: lespace d`adressage dun programme n Adresses logiques: les adresses dans cet espace n Il faut séparer ces concepts car normalement, les programmes sont chargés de fois en fois dans positions différentes de mémoire u Donc adresse physique adresse logique

7 Module 77 Traduction adresses logiques adr. physiques MMU: unité de gestion de mémoire unité de traduction adresses (memory management unit)

8 Module 78 Définition des adresses logiques u une adresse logique est une adresse à une emplacement dans un programme F par rapport au programme lui-même seulement F indépendante de la position du programme en mémoire physique

9 Module 79 Vue de lusager n Normalement, nous avons plusieurs types dadressages p.ex. u les adresses du programmeur (noms symboliques) sont traduites au moment de la compilation dans des adresses logiques u ces adresses sont traduites en adresses physiques après chargement du programme en mémoire par lunité de traduction adresses (MMU) n Étant donné la grande variété de matériel et logiciel, il est impossible de donner des défs. plus précises.

10 Module 710 Liaison (Binding) dadresses logiques et physiques (instructions et données) n La liaison des adresses logiques aux adresses physiques peut être effectuée en moments différents: u Compilation: quand ladresse physique est connue au moment de la compilation (rare) F p.ex. parties du SE u Chargement: quand ladresse physique où le progr est chargé est connue, les adresses logiques peuvent être traduites (rare aujourdhui) u Exécution: normalement, les adresses physiques ne sont connues quau moment de l exécution F p.ex. allocation dynamique

11 Module 711 Deux concepts de base n Chargement = Loading. Le programme, ou une de ses parties, est chargé en mémoire physique, prêt à exécuter. u statique, dynamique n Édition de liens = Liaison (enchaînement) des différentes parties dun programme pour en faire une entité exécutable. u les références entre modules différents doivent être traduites u statique (avant l`exécution) u dynamique (sur demande pendant exécution) F N.B. parties du programme = modules = segments = sousprogrammes = objets, etc.

12 Module 712 Aspects du chargement n Trouver de la mémoire libre pour un module de chargement: contiguë ou non n Traduire les adresses du programme et effectuer les liaisons par rapport aux adresses où le module est chargé

13 Module 713 Chargement (pas contigu ici) et traduction dadresses Mémoire logique JUMP 328 Mém. physique JUMP Autres programmes Alloc. de mém K

14 Module 714 Liaison et chargement v. fig. plus complète dans livre Progr. exécutable Compilateur Modules Objet Éditeur de liens Modules Liés Chargeur Autres Mods (librairie) NB: on fait l`hypothèse que tous les modules soient connus au début Souvent, ce nest pas le cas chargement dynamique Progr. Source

15 Module 715 Chargement et liaison dynamique n Un processus exécutant peut avoir besoin de différents modules du programme en différents moments n Le chargement statique peut donc être inefficace n Il est mieux de charger les modules sur demande = dynamique u dll, dynamically linked libraries n Dans un programme qui peut avoir besoin de charger des modules dynamiquement, au début ces derniers sont représentés par des stubs qui indiquent comment arriver au modules (p.ex. où il se trouve: disque, www, autre...) n À sa 1ère exéc. le stub cause le chargement du module en mémoire et sa liaison avec le reste du programme u liaison dynamique n Les invocations successives du module ne doivent pas passer à travers ça, on saura ladresse en mémoire

16 Module 716 Traduction dadresses logique physique n Dans les premiers systèmes, un programme était toujours lu aux mêmes adresses de mémoire n La multiprogrammation et lallocation dynamique ont engendré le besoin de lire un programme dans positions différentes n Au début, ceci était fait par le chargeur (loader) qui changeait les adresses avant de lancer l exécution n Aujourdhui, ceci est fait par le MMU au fur et à mesure que le progr. est exécuté n Ceci ne cause pas dhausse de temps d exécution, car le MMU agit en parallèle avec autres fonctions d UCT u P.ex. l MMU peut préparer l adresse d une instruction en même temps que l UCT exécute l instruction précédente

17 Module 717 Permutation de programmes (swapping) n Un programme, ou une partie de programme, peut être temporairement enlevé de mémoire pour permettre lexécution dautres programmes (chap. 4) u il est mis dans mémoire secondaire, normal. disque

18 Module 718 Permutation de programmes (swapping)

19 Module 719 Affectation contiguë de mémoire n Nous avons plusieurs programmes à exécuter n Nous pouvons les charger en mémoire les uns après les autres u le lieu où un programme est lu nest connu que au moment du chargement n Besoins de matériel: registres translation et registres bornes

20 Module 720 Affectation contiguë de mémoire SE progr. 1 progr. 2 progr. 3 disponible Nous avons ici 4 partitions pour des programmes - chacun est lu dans une seule zone de mémoire

21 Module 721 Registres bornes et translation dans MMU adresse de base de la partition où le progr. en éxec. se trouve adresse limite de la partition où le progr. en éxec. se trouve adresse logique

22 Module 722 Registres bornes et translation dans MMU adresse de base de la partition où le progr. en éxec. se trouve adresse limite de la partition où le progr. en éxec. se trouve adresse logique

23 Module 723 Fragmentation: mémoire non utilisée n Un problème majeur dans l`affectation contiguë: u Il y a assez d espace pour exécuter un programme, mais il est fragmenté de façon non contiguë F externe: l`espace inutilisé est entre partitions F interne: l espace inutilisé est dans les partitions

24 Module 724 Partitions fixes n Mémoire principale subdivisée en régions distinctes: partitions n Les partitions sont soit de même taille ou de tailles inégales n Nimporte quel progr. peut être affecté à une partition qui soit suffisamment grande (Stallings)

25 Module 725 Partitions fixes n Simple, mais... n Inefficacité de lutilisation de la mémoire: tout programme, si petit soit-il, doit occuper une partition entière. Il y a fragmentation interne. n Les partitions à tailles inégales atténue ces problèmes mais ils y demeurent...

26 Module 726 Partitions dynamiques n Partitions en nombre et tailles variables n Chaque processus est alloué exactement la taille de mémoire requise n Probablement des trous inutilisables se formeront dans la mémoire: cest la fragmentation externe

27 Module 727 Partitions dynamiques: exemple (Stallings) n (d) Il y a un trou de 64K après avoir chargé 3 processus: pas assez despace pour autre processus n Si tous les proc se bloquent (p.ex. attente dun événement), P2 peut être permuté et P4=128K peut être chargé. Swapped out

28 Module 728 Partitions dynamiques: exemple (Stallings) n (e-f) Progr. 2 est suspendu, Progr. 4 est chargé. Un trou de =96K est créé (fragmentation externe) n (g-h) P1 se termine ou il est suspendu, P2 est repris à sa place: produisant un autre trou de =96K... n Nous avons 3 trous petits et probabl. inutiles =256K de fragmentation externe n COMPRESSION pour en faire un seul trou de 256K

29 Module 729 Algorithmes de Placement n pour décider de lemplacement du prochain processus n But: réduire lutilisation de la compression (prend du temps...) n Choix possibles: u Best-fit: choisir le plus petit trou u First-fit: choisir 1er trou à partir du début u Next-fit: choisir 1er trou à partir du dernier placement (Stallings)

30 Module 730 Algorithmes de placement: commentaires n Quel est le meilleur? u critère principal: diminuer la probabilité de situations où un processus ne peut pas être servi, même s il y a assez de mémoire... n La simulation montre qu` il ne vaut pas la peine d utiliser les algo les plus complexes... donc first fit n Best-fit: cherche le plus petit bloc possible: le trou créé est le plus petit possible u la mémoire se remplit de trous trop petits pour contenir un programme n Next-fit: les allocations se feront souvent à la fin de la mémoire

31 Module 731 Suspension (v. chap 4) n Lorsque tous les programmes en mémoire sont bloqués, le SE peut en suspendre un (swap/suspend) u On transfère au disque un des processus bloqués (en le mettant ainsi en état suspended) et le remplacer par un processus prêt à être exécuté F ce dernier processus exécute une transition détat New ou Suspended à état Ready

32 Module 732 Compression (compaction) n Une solution pour la fragmentation externe n Les programmes sont déplacés en mémoire de façon à réduire à 1 seul grand trou plusieurs petits trous disponibles n Effectuée quand un programme qui demande dêtre exécuté ne trouve pas une partition assez grande, mais sa taille est plus petite que la fragmentation externe existante n Désavantages: u temps de transfert programmes u besoin de rétablir tous les liens entre adresses de différents programmes

33 Module 733 Allocation non contiguë n A fin réduire le besoin de compression, le prochain pas est d`utiliser lallocation non contiguë u diviser un programme en morceaux et permettre l`allocation séparée de chaque morceau u les morceaux sont beaucoup plus petits que le programme entier et donc permettent une utilisation plus efficace de la mémoire F les petits trous peuvent être utilisés plus facilement n Il y a deux techniques de base pour faire ceci: la pagination et la segmentation u la segmentation utilise des parties de programme qui ont une valeur logique (des modules) u la pagination utilise des parties de programme arbitraires (morcellement du programmes en pages de longueur fixe). u elles peuvent être combinées n Je trouve que la segmentation est plus naturelle, donc je commence par celle-ci

34 Module 734 Les segments sont des parties logiques du progr. A B C D Progr. Princ. Données Sous- progr. Données JUMP(D, 100) LOAD(C,250) LOAD(B,50) 4 segments: A, B, C, D

35 Module 735 Les segments comme unités dalloc mémoire espace usagermémoire physique Étant donné que les segments sont plus petits que les programmes entiers, cette technique implique moins de fragmentation (qui est externe dans ce cas)

36 Module 736 Mécanisme pour la segmentation n Un tableau contient ladresse de début de tous les segments dans un processus n Chaque adresse dans un segment est ajoutée à l adresse de début du segment par la MMU tableau de segments mémoire physique Adr de 2 Adr de 1 Adr de 0 Adr de 3 segment courant

37 Module 737 Détails n Ladresse logique consiste d une paire: où décalage est l adresse dans le segment n le tableau des segments contient: descripteurs de segments u adresse de base u longueur du segment u Infos de protection, on verra… n Dans le PCB du processus il y aura un pointeur à l adresse en mémoire du tableau des segments n Il y aura aussi le nombre de segments dans le processus n Au moment de la commutation de contexte, ces infos seront chargées dans les registres appropriés dUCT

38 Module 738 Traduction d`adresses dans la segmentation

39 Module 739 Le mécanisme en détail (implanté dans le matériel) Stallings Dans le programme Adresse finale

40 Module 740 Exemple de la segmentation simple

41 Module 741 Partage de segments: le segment 0 est partagé P.ex: DLL utilisé par plus usagers

42 Module 742 Mécanisme pour 2 processus qui exécutent un seul programme sur données différentes La même instruction, si elle est exécutée par le proc 1, son adresse est modifiée par le contenu du reg de base 1 par le proc 2, son adresse est modifiée par le contenu du reg de base 2 Ceci fonctionne même si linstruction est exécutée par plus. UCT au même instant, si les registres se trouvent dans des UCT différentes Programme Données proc 1 Données proc 2 Instruction R1 R2 + +

43 Module 743 Segmentation et protection n Chaque entrée dans la table des segments peut contenir des infos de protection: u longueur du segment u privilèges de l`usager sur le segment: lecture, écriture, exécution F Si au moment du calcul de ladresse on trouve que lusager na pas droit daccès interruption F ces infos peuvent donc varier d usager à usager, par rapport au même segment! limitebaseread, write, execute?

44 Module 744 Évaluation de la segmentation simple n Avantages: lunité dallocation de mémoire est u plus petite que le programme entier u une entité logique connue par le programmeur u les segments peuvent changer de place en mémoire u la protection et le partage de segments sont aisés (en principe) n Désavantage: le problème des partitions dynamiques: u La fragmentation externe nest pas éliminée: F trous en mémoire, compression? n Une autre solution est d`essayer à simplifier le mécanisme en utilisant unités d`allocation mémoire de tailles égales F PAGINATION

45 Module 745 Segmentation versus pagination n Le pb avec la segmentation est que lunité dallocation de mémoire (le segment) est de longueur variable n La pagination utilise des unités dallocation de mémoire fixe, éliminant donc ce pb

46 Module 746 Pagination simple n La mémoire est partitionnée en petits morceaux de même taille: les pages physiques ou cadres ou frames n Chaque processus est aussi partitionné en petits morceaux de même taille appelés pages (logiques) n Les pages logiques dun processus peuvent donc être assignés aux cadres disponibles nimporte où en mémoire principale n Conséquences: u un processus peut être éparpillé nimporte où dans la mémoire physique. u la fragmentation externe est éliminée

47 Module 747 Exemple de chargement de processus n Supposons que le processus B se termine ou est suspendu Stallings

48 Module 748 Exemple de chargement de processus (Stallings) n Nous pouvons maintenant transférer en mémoire un progr. D, qui demande 5 cadres u bien qu`il ny ait pas 5 cadres contigus disponibles n La fragmentation externe est limitée au cas que le nombre de pages disponibles nest pas suffisant pour exécuter un programme en attente n Seule la dernière page dun processus peut souffrir de fragmentation interne (moy. 1/2 cadre par proc)

49 Module 749 Tableaux de pages

50 Module 750 Tableaux de pages n Le SE doit maintenir une table de pages pour chaque processus n Chaque entrée dune table de pages contient le numéro de cadre où la page correspondante est physiquement localisée n Un tableau de pages est indexée par le numéro de la page afin dobtenir le numéro du cadre n Une liste de cadres disponibles est également maintenue (free frame list) Stallings

51 Module 751 Adresse logique (pagination) n Ladresse logique est facilement traduite en adresse physique car la taille des pages est une puissance de 2 n Ex: si 16 bits sont utilisés pour les adresses et que la taille dune page = 1K: on a besoins de 10 bits pour le décalage, laissant ainsi 6 bits pour le numéro de page n Ladresse logique (n,m) est traduite à l adresse physique (k,m) en utilisant n comme index sur la table des pages et en le remplaçant par l adresse k trouvée u m ne change pas Stallings

52 Module 752 Adresse logique (pagination) n Donc les pages sont invisibles au programmeur, compilateur ou assembleur (seule les adresses relatives sont employées) n La traduction dadresses au moment dexécution est facilement réalisable par le matériel: u ladresse logique (n,m) est traduite en une adresse physique (k,m) en indexant la table de pages et en annexant le même décalage m au numéro du cadre k n Un programme peut être exécuté sur différents matériels employant dimensions de pages différentes u Ce qui change est linterprétation des bits par le mécanisme dadressage

53 Module 753 Mécanisme: matériel

54 Module 754 Traduction dadresse (logique-physique) pour la pagination Stallings

55 Module 755 Trad. dadresses: segmentation et pagination n Tant dans le cas de la segmentation, que dans le cas de la pagination, nous additionons le décalage à ladresse du segment ou page. n Cependant, dans la pagination, les adresses de pages sont toujours à multiples de 2, et il y a autant de 0 à droite quil y a de bits dans le décalage... donc lajout peut être faite par simple concaténation: =

56 Module 756 Exemple de pagination

57 Module 757 Liste de trames libres

58 Module 758 Problèmes defficacité n La traduction d`adresses, y compris la recherche des adresses des pages et de segments, est exécutée par des mécanismes de matériel n Cependant, si la table des pages est en mémoire principale, chaque adresse logique occasionne au moins 2 références à la mémoire u Une pour lire lentrée de la table de pages u Lautre pour lire le mot référencé n Le temps d`accès mémoire est doublé...

59 Module 759 Pour améliorer l`efficacité n Où mettre les tables des pages (les mêmes idées s appliquent aussi aux tabl. de segm) n Solution 1: dans des registres de UCT. u avantage: vitesse u désavantage: nombre limité de pages par proc., la taille de la mém. logique est limitée n Solution 2: en mémoire principale u avantage: taille de la mém. logique illimitée u désavantage: mentionné n Solution 3 (mixte): les tableaux de pages sont en mémoire principale, mais les adresses les plus utilisées sont aussi dans des registres d`UCT.

60 Module 760 Régistres associatifs TLB: Translation Lookaside Buffers, ou caches dadressage n Recherche parallèle d une adresse : u l adresse recherchée est cherchée dans la partie gauche de la table en parallèle (matériel spécial) n Traduction page cadre u Si la page recherchée a été utilisée récemment elle se trouvera dans les registres associatifs F recherche rapide No PageNo Cadre

61 Module 761 Recherche associative dans TLB n Le TLB est un petit tableau de registres de matériel où chaque ligne contient une paire: u Numéro de page logique, Numéro de cadre n Le TLB utilise du matériel de mémoire associative: interrogation simultanée de tous les numéros logiques pour trouver le numéro physique recherché n Chaque paire dans le TLB est fournie d un indice de référence pour savoir si cette paire a été utilisée récemment. Sinon, elle est remplacée par la dernière paire dont on a besoin

62 Module 762 Translation Lookaside Buffer (TLB) n Sur réception dune adresse logique, le processeur examine le cache TLB n Si cette entrée de page y est, le numéro de cadre en est extrait n Sinon, le numéro de page indexe la table de page du processus (en mémoire) u Cette nouvelle entrée de page est mise dans le TLB u Elle remplace une autre pas récemment utilisée n Le TLB est vidé quand lUCT change de proc n Les premières trois opérations sont faites par matériel

63 Module 763 Schéma dutilisation TLB En mémoire Dans lUCT Dans le cas de miss, f est trouvé en mémoire, puis il es mis dans le TLB

64 Module 764 Temps daccès réel n Recherche associative = unités de temps (normalement petit) n Supposons que le cycle de mémoire soit 1 microseconde n = pourcentage de touches (hit ratio) = pourcentage de fois quun numéro de page est trouvé dans les registres associatifs u ceci est en relation avec le nombre de registres associatifs disponibles n Temps effectif daccès t ea : t ea = (1 + ) + (2 + )(1 – ) = 2 + – si est près de 1 et est petit, ce temps sera près de 1. n Généralisation de la formule prenant m comme temps daccès à la mémoire centrale: t ea = (m+ ) + (2m+ )(1- ) = m + + 2m - 2m + - = = 2m + -m

65 Module 765 Protection de la mémoire n Associe divers bits à chaque page dans le tableau de pages comme dans le tableau de segments u Ex. bit valide-invalide indique les pages valides du processus n Pour vérifier si un adresse est valide u Avec un tableau de pages ayant une grandeur fixe: bits valide-invalide u Avec un tableau de pages ayant une grandeur variable (seulement les pages valides du processus): Compare le # de page avec le registre PTLR (page-table length registre)

66 Module 766 Bit Valide-Invalide (v-i) dans le tableau de pages

67 Module 767 Partage de pages: 3 proc. partageant un éditeur, sur des données privées à chaque proc

68 Module 768 Structure des tableaux de pages Comment long peut-être un tableau de pages? u Adresses de 32-bit, page de 4 koctets -> 2 20 pages = 1M entrées de page! u Oh la la! Doit appliqué la matière grise! n Tableau de pages hiérarchique

69 Module 769 Tableaux de pages hiérarchique à deux niveaux (quand les tableaux de pages sont très grands, ils peuvent être eux mêmes paginés) tableau de pages du tableau de pages

70 Module 770 Tableaux de pages hiérarchique à deux niveaux n La partie de l adresse qui appartient au numéro de page est elle-même divisée en 2

71 Module 771 Utilisation de Translation Lookaside Buffer n Dans le cas de systèmes de pagination à plusieurs niveaux, lutilisation de TLB devient encore plus importante pour éviter multiples accès en mémoire pour calculer une adresse physique n Les adresses les plus récemment utilisées sont trouvées directement dans la TLB.

72 Module 772 Segmentation simple vs Pagination simple n La pagination se préoccupe seulement du problème du chargement, tandis que n La segmentation vise aussi le problème de la liaison n La segmentation est visible au programmeur mais la pagination ne lest pas n Le segment est une unité logique de protection et partage, tandis que la page ne lest pas u Donc la protection et le partage sont plus aisés dans la segmentation n La segmentation requiert un matériel plus complexe pour la traduction dadresses (addition au lieu d`enchaînement) n La segmentation souffre de fragmentation externe (partitions dynamiques) n La pagination produit de fragmentation interne, mais pas beaucoup (1/2 cadre par programme) n Heureusement, la segmentation et la pagination peuvent être combinées

73 Module 773 Conclusions sur Gestion Mémoire n Problèmes de: u fragmentation (interne et externe) u complexité et efficacité des algorithmes n Deux méthodes très utilisées u Pagination u Segmentation n Problèmes en pagination et segmentation: u taille des tableaux de segments et pages u pagination de ces tableaux u efficacité fournie par Translation Lookaside Buffer n Les méthodes sont souvent utilisées conjointement, donnant lieu a des systèmes complexes

74 Module 774 Récapitulation sur la fragmentation n Partition fixes: fragmentation interne car les partitions ne peuvent pas être complèt. utilisées + fragm. externe s`il y a des partitions non utilisées n Partitions dynamiques: fragmentation externe qui conduit au besoin de compression. n Segmentation sans pagination: pas de fragmentation interne, mais fragmentation externe à cause de segments de longueur différentes, stockés de façon contiguë (comme dans les partitions dynamiques) n Pagination: en moyenne, 1/2 cadre de fragm. interne par processus


Télécharger ppt "Module 71 Module 7 Gestion de la mémoire Silberschatz: Chapitre 8."

Présentations similaires


Annonces Google