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

Chap. 91 Gestion de la mémoire Chapitre 9 (6 heures – 2 cours) w3.uqo.ca/luigi.

Présentations similaires


Présentation au sujet: "Chap. 91 Gestion de la mémoire Chapitre 9 (6 heures – 2 cours) w3.uqo.ca/luigi."— Transcription de la présentation:

1 Chap. 91 Gestion de la mémoire Chapitre 9 (6 heures – 2 cours) w3.uqo.ca/luigi

2 Chap. 92 Dans ce chapitre nous verrons que, pour optimiser l’utilisation de la mémoire, les programmes sont éparpillés en mémoire selon des méthodes différentes: Pagination, segmentation

3 Chap. 93 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 l’UCT u s’adapter aux besoins de mémoire de l ’usager, qui varient dans le temps F allocation dynamique

4 Chap. 94 Gestion de la mémoire: concepts dans ce chapitre n Adresse physique et adresse logique u mémoire physique et mémoire logique n Remplacement n Allocation contiguë u partitions fixes u variables n Pagination n Segmentation n Segmentation et pagination combinées n Groupes de paires (buddy systems)

5 Chap. 95 Application de ces concepts n Pas tous les concepts que nous discuterons sont effectivement utilisés tels quels aujourd’hui dans la gestion de mémoire centrale RAM n Cependant presque tous se retrouvent en combinaison dans la gestion des différentes mémoires d’un ordi, centrales ou auxiliaires, p.ex. disques

6 Adresses physiques et logiques, Régistres de rélocation Chap. 96

7 7 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: l’espace d`adressage d’un 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

8 Chap. 98 LOAD(n) 0 n b n: adresse logique n+b: adresse physique Donc LOAD(n)=>LOAD(n+b) Un programme chargé à la position de mémoire b doit ajouter b à tous ses adresses internes (logiques) pour obtenir l’adresse réelle=physique Adresses logiques

9 Chap. 99 LOAD(n) 0 b n+c c n : adresse logique n+c : adresse physique Donc LOAD(n)=>LOAD(n+c) ProgrammeDonnées Un programme qui fait référence à un segment de données chargé à la position c

10 Chap. 910 c n+c LOAD(n) b n+d Un programme, chargé à l’adresse b, qui travaille pour deux processus: X qui a les données dans un segment chargé à la position de mémoire c, et Y qui a les données dans un segment de données chargé à la position de mémoire d On doit ajouter c ou d à ses adresses logiques selon qu’il travaille pour X ou Y Donc LOAD(n)=>LOAD(n+c) si l’UCT travaille pour X Ou LOAD(n)=>LOAD(n+d) si l’UCT travaille pour Y Concept fondamental pour comprendre le partage de code et les machines virtuelles (Ex.: un programme de traitement de texte utilisé pour éditer deux documents) d Données pour XDonnées pour YProgramme

11 Chap. 911 Les adresses physiques n’ont pas besoin d’être contigus Mémoire logique JUMP 328 Mém. physique JUMP 10328 Autres données 10 000 0

12 Principe n Les programmes et données peuvent être placés n’importe où en mémoire, à condition qu’il y ait un mécanisme pour: u Calculer les adresses physiques en ajoutant l’adresse de base à l’adresse virtuelle n Si nous voulons que le placement puisse être facilement changé, les adresses de base doivent se trouver dans des registres d’ordinateur et l’ajout doit être fait au moment où l’instruction est interprétée par l’UCT Chap. 912

13 Chap. 913 Traduction adresses logiques  adr.  physiques MMU: unité de gestion de mémoire unité de traduction adresses (memory management unit) Instruction (program) 346 Data Segment

14 Differents types d’adresses n Noms symboliques donnés par le programmeur n Adresses logiques établis par le compilateur n Adresses physiques dans la mémoire de l’ordi établis au moment où le programme est mis en mémoire physique u L’MMU en tient compte et fait la traduction au moment de l’exécution Chap. 914

15 Chap. 915 Définition des adresses logiques n Le manuel définit les adresses logiques comme étant les adresses générées par l’UCT u Mais parfois l’MMU est partie de l ’UCT! n Je préfère la déf suivante: u une adresse logique est une adresse à une location de programme F par rapport au programme lui-même seulement F indépendante de la position du programme en mémoire physique

16 Édition de liens et chargement Chap. 916

17 Chap. 917 Liaison et chargement v. fig. plus complète dans manuel 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 n’est pas le cas  chargement dynamique Progr. Source

18 Chap. 918 Liaison (Binding) d’adresses 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 l’adresse physique est connue au moment de la compilation (rare) F p.ex. parties du SE qui sont fixes en RAM u Chargement: quand l’adresse physique où le progr est chargé est connue, les adresses logiques peuvent être traduites F Allocation statique (rare aujourd’hui) u Exécution: normalement, les adresses physiques ne sont connues qu’au moment de l ’exécution F allocation dynamique

19 Édition de liens (linkage editing) Chap. 919

20 Chap. 920 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 (avant l’exécution) u Dynamique (pendant l’exécution) n Édition de liens = Liaison (enchaînement) des différentes parties d’un programme pour en faire une entité exécutable. u les références entre modules différents doivent être traduites F statique (avant l`exécution) F dynamique (sur demande pendant exécution) N.B. parties du programme = classes = modules = segments = sousprogrammes = objets, etc.

21 Chap. 921 Édition de liens: adressage entre modules A B C D Progr. Princ. Données Sous- progr. Données JUMP(D, 100) LOAD(C,250) LOAD(B,50) Les adresses sont en deux parties : (No de module, Décalage dans le module) doivent être traduites pour permettre adressage par l ’UCT Espace d’adressage logique

22 Chap. 922 Adressage entre modules (édition de liens) n Comment une instruction dans un module d’un programme peut trouver une adresse dans un autre module qui pourra être chargée dans une zone de mémoire à chaque fois différente

23 Par rapport à Java n Le compilateur Java crée un module différent pour chaque classe n D’autres langages de programmation pourraient utiliser des critères différents n Les classes ont besoin de faire référence les unes aux autres Chap. 923

24 Analogie pour édition de liens n Deux compagnies A et B collaborent, donc parfois un employé x de A doit téléphoner à un employé y de B n La première fois que ceci se vérifie, l’employé x de A va regarder dans le répertoire de B pour trouver le numéro de téléphone de y n Après l’avoir trouvé, x garde le no de y dans sa liste de contacts et ne doit plus regarder dans le répertoire de B Chap. 924

25 Chaque module aura: n Un tableau d’adresses internes, qui font référence au module lui-même n Un tableau d’adresses externes, qui font référence à d’autres modules u Ces tableaux sont créés par le compilateur Chap. 925 Module Adr. internes Adr. externes

26 Exemple: un programme avec deux modules Chap. 926 Programme principal B int x … Sous-programme A int y … x = sqrt(y) Quelles sont les adresses internes et externes de A?

27 Exemple: un programme avec deux modules Chap. 927 Programme principal B int x … Sous-programme A int y … x = sqrt(y) Adr.internes: A, y Adr externes: x, sqrt Module A

28 Chap. 928 Édition de liens: une méthode possible qui supporte la liaison dynamique Adresses internes de B Nom x Adresse Adresses externes de B Module B corps Nom Défini dans Module Adresses internes de A Nom Adresse Adresses externes de A Module A corps Nom x Défini dans Module B Chaque module contient deux tableaux un qui définit les noms internes qui peuvent être utilisés à l’extérieur un qui dit dans quels modules ses noms externes sont définis Référence à x dans B x dans B Addressage final

29 Chap. 929 Adressage indirecte peut être utilisé dans cette méthode (v. aussi chaînes d’adresses en C ou C++) code opadresse instruction 1 1 1 1: adresse indirecte: le champ contient une adresse 0: ce mot est le champ qui contient la donnée visée champ adressé 0

30 Chap. 930 Cette méthode supporte l’allocation dynamique n Si le module B n’a pas encore été chargé, la référence à B dans le tableau des noms externes de A contiendra l ’information nécessaire pour trouver et charger B u Ceci s’appelle un STUB. n Après avoir fait ça, cette référence sera traduite dans une adresse de mémoire physique. n Si B reste toujours au même endroit, nous pouvons mettre dans A directement l’adresse finale (flèche pointillée), sinon nous pouvons continuer de rejoindre B par adressage indirecte

31 Chargement Chap. 931

32 Chap. 932 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é

33 Chap. 933 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 l’adresse en mémoire

34 Chap. 934 Traduction d’adresses logique  physique n Dans certains systèmes très simples, un programme est toujours chargé dans la même zone de mémoire n La multiprogrammation et l’allocation dynamique engendrent le besoin de charger un programme dans positions différentes n Dans les systèmes simples, ceci peut être fait par le chargeur (loader) qui change les adresses avant de lancer l ’exécution n Plus normalement, ceci est fait par le MMU au fur et à mesure que le progr. est exécuté n Ceci ne cause pas d’hausse 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

35 Techniques traditionnelles d’allocation mémoire n Recouvrement, overlay, permutation n Allocation contiguë u Partitions fixes u Partitions dynamiques u Systèmes de compagnons (buddy systems) n Fragmentation interne, externe

36 Recouvrement, overlay, permutation Chap. 936

37 ‘Phases’ ou ‘passes’ d’un processus n Plusieurs processus peuvent être divisés en phases ou passes qui n’ont pas besoin d’être simultanément en mémoire n P.ex. un processus qui prend des données générées par des usagers à partir de téléphones mobiles pourrait consister en deux phases: u Normalisation des données u Extraction de statistiques n La 2ème phase commence après la fin de la 1ère n Quand la 1ère phase finit, la mémoire qu’elle utilisait peut être donnée à la 2ème phase Chap. 937

38 Chap. 938 Recouvrement ou overlay n Dans quelques systèmes surtout dans le passé), la permutation de modules (swapping) d’un même programme pouvait être gérée par l ’usager Deux parties d’un programme qui utilisent la même zone de mémoire

39 Chap. 939 Permutation de programmes (swapping) n Un programme, ou une partie de programme, peut être temporairement enlevé de mémoire pour permettre l’exécution d’autres programmes (chap. 4) u il est mis dans mémoire secondaire, normal. disque

40 Chap. 940 Permutation de programmes (swapping) Processus ou portion de proc. permuté sur disque pour « sauver la mémoire » quand ils ne sont pas actifs

41 Allocation contiguë Chap. 941

42 Chap. 942 Allocation 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 n’est connu qu’au moment du chargement n Besoins de matériel: registres translation et registres bornes n L’allocation contiguë est peu utilisée aujourd’hui pour la mémoire centrale, mais les concepts que nous verrons sont encore utilisés pour l’allocation de fichiers sur disques

43 Chap. 943 Affectation contiguë de mémoire SE progr. 1 progr. 2 progr. 3 disponible Nous avons ici 3 partitions pour autant de programmes - chacun est chargé dans une seule zone de mémoire

44 Chap. 944 Registres bornes (ou limites) 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

45 Deuxième manière de voir la même chose Chap. 945

46 Chap. 946 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ë u La fragmentation peut être: F externe: l`espace inutilisé est entre partitions F interne: l ’espace inutilisé est dans les partitions

47 Chap. 947 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 N’importe quel progr. peut être affecté à une partition qui soit suffisamment grande (Stallings)

48 Chap. 948 Algorithme de placement pour partitions fixes n Partitions de tailles inégales: utilisation de plusieurs files u assigner chaque processus à la partition de la plus petite taille pouvant le contenir u 1 file par taille de partition u tente de minimiser la fragmentation interne u Problème: certaines files seront vides s’il n’y a pas de processus de cette taille (fr. externe) (Stallings) 8M 12M

49 Chap. 949 Algorithme de placement pour partitions fixes n Partitions de tailles inégales: utilisation d’une seule file u On choisit la plus petite partition libre pouvant contenir le prochain processus u le niveau de multiprogrammation augmente au profit de la fragmentation interne u On pourrait allouer trop de mémoire à un programme (Stallings) 8M 12M

50 Chap. 950 Critique des partitions fixes n Simple, mais... n Inefficacité de l’utilisation 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...

51 Chap. 951 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: c’est la fragmentation externe

52 Chap. 952 Partitions dynamiques: exemple (Stallings) n (d) Il y a un trou de 64K après avoir chargé 3 processus n Le prochain processus pourrait demander plus n Si tous les proc sont bloqués (p.ex. attente d’un événement), P2 peut être suspendu ou permuté et P4=128K peut être chargé. Swapped out

53 Chap. 953 Partitions dynamiques: exemple (Stallings) n (e-f) Progr. 2 est suspendu, Progr. 4 est chargé. Un trou de 224-128=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 320-224=96K... n Nous avons 3 trous petits et probabl. inutiles. 96+96+64=256K de fragmentation externe n COMPACTAGE pour en faire un seul trou de 256K

54 Chap. 954 Compactage n Une solution pour la fragmentation externe n Les programmes sont déplacés en mémoire de façon à combiner en un seul 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

55 Chap. 955 Suspension (Rappel: 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 on le remplace par un processus prêt à être exécuté F ce dernier processus exécute une transition d’état Nouveau ou Suspendu à état Ready

56 Chap. 956Ch.456 UNIX SVR4 Implémente ces concepts CreatedNouveau ZombieTerminé User runningExécute en mode usager Kernel runningExécute en mode superviseur Ready in memory Prêt en mém centrale Asleep in memory En attente en mém centrale Ready swappedPrêt en mém secondaire Asleep swapped En attente, mém secondaire PreemptedPar un proc + prioritaire

57 Chap. 957 Méthode de «groupe de paires» (buddy systems): (Unix, Linux, sect. 21.6.1) n Appelons ‘trou’ un bloc de mémoire vide n Débutons avec un seul trou égal à toute la mémoire disponible n Sur une requête pour un trou de taille S: u Trouver le plus petit trou assez grand pour S u Si la moitié de ce trou n’est pas suffisant pour S, alors allouer le trou entier à S u Sinon, diviser ce trou en deux compagnons (buddies), égaux u Si nécessaire, continuer à diviser jusqu’à ce qu’on aura généré un trou ni trop grand, ni trop petit pour S n Deux compagnons sont fusionnés lorsqu’ils deviennent tous deux non alloués

58 Chap. 958 Exemple d’un “Groupe de paires” (Stallings) ABCDEABCDE

59 Chap. 959 Système de groupes de paires (Buddy system) n Le SE maintient plusieurs listes de trous u la i-liste est la liste des trous de taille 2 i u lorsqu’une paire de compagnons se trouvent dans une i-liste, ils sont combinés et deviennent un seul trou de la (i+1)-liste n Sur une requête pour une allocation d’un bloc de taille k tel que 2 i-1 < k <= 2 i : u on examine d’abord la i-liste u si elle est vide, on tente de trouver un trou dans la (i+1)-liste, si trouvé, il sera divisé en 2

60 Chap. 960 Comment trouver le compagnon (pourquoi faut-il le trouver) n Étant donné u L’adresse binaire d’un bloc u La longueur du bloc u Comment trouver son compagnon n Si la longueur du bloc est 2 n u Si le bit n de l’adresse est 0, changer à 1 (compagnon est à droite) u Si le bit n de l’adresse est 1, changer à 0 (compagnon est à gauche) n Exemples: u Adr: 011011110000 – long. 2 2 = 100 - comp: 011011110100 u Adr: 011011110000 – long. 2 4 = 10000 - comp: 011011100000 n (Valeurs binaires - Compter les bits à partir de la droite et de 0)

61 Avantage principal n Pas besoin de compactage u Pas besoin de déplacer les programmes en mémoire Chap. 961

62 Chap. 962 Groupes de paires: fragmentation interne n En moyenne, la fragmentation interne est de 25% de partition par processus u pour chaque proc nous aurons F une demie partition pleine F plus une autre demie partition utilisée en moyenne à moitié n Plus concrètement, si la dimension moyenne des processus est X et s’il y a n processus en mémoire u X/3 sera gaspillé en moyenne pour chaque processus u Ou n(X/3) pour l’ensemble des processus

63 Groupe de paires: fragmentation externe n Il y aura aussi fragmentation externe égale à tous les trous qu’on ne réussit pas à remplir Chap. 963

64 Fragmentation interne pour l’exemple Exercice: travailler cet exemple Chap. 964 A=28 sur 128 gaspillé = 22% B=16 sur 256 gaspillé = 6% C=0 gaspillé D=0 gaspillé E= 53 sur 128 gaspillé = 41% A=22%, B=6%, C=0%, D=0%, E=41% Total=69% - Moyenne= 69/5=14% (exemple pas réaliste car nous avons 2 procs qui rentrent exactement, donc en pratique la moyenne sera plus proche de 25%) ABCDEABCDE

65 Allocation non-contiguë Chap. 965

66 Faits de base n La fragmentation (gaspillage) de mémoire est proportionnel à la dimension des unités d’allocation de mémoire u Supposons que l’unité d’alloc mémoire soit la mémoire entière (la mémoire entière est donnée à un processus) F La fragmentation (interne) sera en moyenne 50% de la mémoire u Supposons que l’unité d’alloc mémoire soit 1 seul octet F La fragmentation sera 0 n Cependant, les structures de données et les temps d’exécution nécessaires pour retrouver les informations s’alourdissent avec des petites unités F (L’hypothèse est qu’il y ait toujours un nombre de processus de différentes tailles en attente, suffisant pour garder la mémoire constamment occupée) Chap. 966

67 Chap. 967 Allocation non contiguë n Afin de réduire la fragmentation, presque tous les ordis d’aujourd’hui utilisent l’allocation 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 (manuel suit l’ordre opposé)

68 La segmentation Chap. 968

69 Chap. 969 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

70 Chap. 970 Les segments comme unités d’alloc mémoire A=0 C=2 B=1 D=3 0 3 1 2 Mémoire virtuelle segmentée mé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)

71 Chap. 971 Mécanisme pour la segmentation n Un tableau contient l’adresse 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 descripteurs de segmen ts 0 3 1 2 mémoire physique Adr de 1 Adr de 2 Adr de 3 Adr de 0 segment courant base du tableau

72 Chap. 972 Détails n L’adresse logique est 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 là dedans 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 d’UCT

73 Chap. 973 Traduction d`adresses dans la segmentation (figure de Stallings: légère diff. par rapport à la terminologie de Silberschatz) Où se trouve le Segment Table Pointer? Qu’arrive si d > longueur?

74 Chap. 974 Le mécanisme en détail (implanté dans le matériel) Fig. du manuel de Stallings Dans le programme Adresse finale utilisée pour l’exécution de l’instruction STP Dans MMU ou UCT

75 Chap. 975 Partage de segments: plusieurs processus se servent d’un segment Ex 1: Programme Word utilisé pour éditer différents documents Ex 2: DLL utilisé par plus usagers

76 Programme et processus n Cet exemple montre clairement la distinction entre programme et processus n Nous avons un seul programme, l’éditeur, mais deux processus n En mémoire il y a une seule copie du programme n Mais chaque processus a son propre tableau de segments n Quand l’UCT exécute P1, elle pointe au tableau de segments de P1, quand elle exécute P2, elle pointe au tab de seg de P2 Chap. 976

77 Chap. 977 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 l’adresse R1  par le proc 2, son adresse est modif par l’adresse R2  R1 et R2 seront normalement dans des registres d’UCT Ceci fonctionne même si l’instruction 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 + +

78 Chap. 978 Segmentation et protection n Chaque descripteur de segment 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 l’adresse on trouve que l’usager n’a pas droit d’accès  interruption F ces infos peuvent donc varier d ’usager à usager, par rapport au même segment! limitebaseread, write, execute?

79 Privilèges des usagers dans tableaux de segments Chap. 979 R R,W P1 peut seulement lire l’éditeur, P2 peut le lire ou l’écrire

80 Chap. 980 Évaluation de la segmentation simple n Avantages: l’unité d’allocation de mémoire est u plus petite que le programme entier u une entité logique connue par le programmeur  Les segments peuvent changer de place en mémoire Implémente l’édition des liens  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 n’est 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

81 Chap. 981 Segmentation contre pagination n Le pb avec la segmentation est que l’unité d’allocation de mémoire (le segment) est de longueur variable n La pagination utilise des unités d’allocation de mémoire fixe, éliminant donc ce pb

82 Exercice: édition de liens n Voir comment la segmentation résout le problème de rejoindre des adresses dans autres modules u Comment il résout le pb de l’édition des liens Chap. 982

83 La pagination Chap. 983

84 Chap. 984 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 d’un processus peuvent donc être affectées aux cadres disponibles n’importe où en mémoire principale n Conséquences: u un processus peut être éparpillé n’importe où dans la mémoire physique. u la fragmentation externe est éliminée

85 Chap. 985 Exemple de chargement de processus n Puis, supposons que le processus B se termine ou est suspendu (Stallings)

86 Chap. 986 Exemple de chargement de processus (Stallings) n Nous pouvons maintenant mettre en mémoire un progr. D, qui demande 5 cadres u bien qu`il n’y ait pas 5 cadres contigus disponibles n Seule la dernière page d’un progr peut souffrir de fragmentation interne u moy. 1/2 cadre par proc

87 Chap. 987 Tableaux de pages Les entrées dans le tableau de pages sont aussi appelées descripteurs de pages

88 Chap. 988 Tableaux de pages n Le SE doit maintenir un tableau de pages pour chaque processus n Chaque descripteur de pages contient le numéro de cadre où la page correspondante est physiquement localisée n Une table de pages est indexée par le numéro de la page afin d’obtenir le numéro du cadre n Une liste de cadres disponibles est également maintenue (free frame list) (Stallings)

89 Trois processus et leurs tableaux de pages Chap. 989 Où sont les pages?

90 Traduction d’adresses n La traduction d’adresses se fait comme dans le cas de la segmentation u On ajoute l’adresse de base au déplacement n Cependant ceci est simplifié si les dimensions des pages sont égales à une puissance de 2 n Dans ce cas, l’adresse de base d’une page aura toujours autant de 0 à droite qu’il y a de bits dans la dimension de la page n Les adresses de base des pages ont des bits 0 impliqués à droite et l’addition est une simple concaténation Chap. 990 1101 0000 + 1010 = 1101 1010 (Ici, taille de pages=2 4 =16)

91 Chap. 991 Traduction d’adresses n Ex: si 16 bits sont utilisés pour les adresses et que la taille d’une page = 1K: on a besoins de 10 bits pour le décalage, laissant ainsi 6 bits pour le numéro de page n L’adresse logique (p,d) est traduite à l’adresse physique (f,d) en utilisant p comme index sur la table des pages et en le remplaçant par l’adresse f trouvée u d, le décalage, ne change pas (Stallings) pd f d

92 Chap. 992 Mécanisme: matériel

93 Chap. 993 Traduction d’adresse (logique-physique) pour la pagination Stallings PTBR PTBR: Page Table Base Register dans UCT

94 Exercice n Quoi détermine u La taille des pages u Le nombre de pages que nous pouvons avoir dans un ordi donné n Est-ce qu’en principe un même programme peut être exécuté sur deux ordinateurs avec pages de tailles différentes? n Est-ce que le compilateur est obligé à connaître la taille des pages de l’ordinateur Chap. 994 p d

95 Chap. 995 Exercice A) Considérez un système de 4 cadres ou pages physiques, chacune de 4 octets. Les adresses sont de 4 bits, deux pour le numéro de page, et 2 pour le décalage. Le tableau de pages du processus couramment en exécution est: Numéro de page Numéro de cadre 0011 0110 01 1100. Considérez l'adresse logique 1010. Quelle sera l'adresse physique correspondante? B) Considérez maintenant un système de segmentation, pas de pagination. Le tableau des segments du processus en exécution est comme suit: Segment number Base 00110 01100 10 000 Considérez l'adresse logique (no deseg, décalage)= (01, 01), quelle est l'adresse physique?

96 Translation Lookaside Buffer ou cache d’adresses Chap. 996

97 Chap. 997 Problèmes d’efficacité 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 l’entrée de la table de pages u L’autre pour lire le mot référencé n Le temps d`accès mémoire est doublé...

98 Chap. 998 Pour améliorer l`efficacité n Où mettre les tableaux 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 (presque) illimitée u désavantage: lenteur 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.

99 Chap. 999 Idée n J’ai un petit tableau effaçable où je garde les numéros de téléphone de mes contacts le plus courants n Quand je rencontre un nouvel ami, la première fois je dois chercher son numéro dans le bottin n Puis je le mets dans le tableau, mais avant je dois effacer quelqu’un qui est déjà là

100 Chap. 9100 Régistres associatifs TLB TLB: Translation Lookaside Buffers, ou caches d’adressage 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 3 7 0 2 15 19 17 23 v. Content-addressable memory dans Wikipedia

101 Chap. 9 101 Recherche associative dans TLB n Le TLB est un 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é recherche

102 Chap. 9102 Translation Lookaside Buffer (TLB) n Sur réception d’une adresse logique, le processeur examine le 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 contenu du TLB est remplacé quand l’UCT change de proc n Les premières trois opérations sont faites par matériel

103 Chap. 9103 Schéma d’utilisation TLB Dans le cas de ‘miss’, f est trouvé en mémoire, puis il es mis dans le TLB Dans l’UCT En mémoire

104 Chap. 9104 Temps d’accès mémoire réel avec TLB n Supposons que recherche dans TLB = 1 nanosecondes = 1ns (normalement petit) Supposons que le temps de recherche en mémoire = 1 microseconde = 1  s n  = probabilité de touches (hit ratio) = probabilité qu’un numéro de page soit trouvé dans les registres associatifs (quantité entre 0 et 1) u ceci est en relation avec le nombre de registres associatifs disponibles n Temps effectif d’accès tea: tea = (1ns+1  s)  + (1ns+2  s)(1 –  ) Si  est grand, ce temps sera près de 1  s n Dans plusieurs ordinateurs, il y a simultanéité entre ces opérations et d’autres opérations de l’UCT donc le temps d’accès réel est plus favorable Combien de nanosecondes dans 1 micros.?

105 Décortiqué … tea = (1ns+1  s)  + (1ns+2  s)(1 –  ) Chap. 9105 Touche en Mém Assoc: (temps d’accès à mém assoc) + (temps d’accès à mém princip.) Pas de Touche en MA: (temps d’accès à mém assoc) + (2 x temps d’accès à mém princip.) On va à la mém assoc mais on n’y trouve pas l’adresse. Faut accéder au tabl des pages en mém princip puis aller à l’adresse finale qu’on veut effectivement

106 Chap. 9106 Formulation plus générale n m: temps d’accès RAM n  : temps d’accès mémoire associative n  : probabilité de touche n  est influencé par la taille de la TLB n mais aussi par l’organisation du programme! u (exercice: comment?) tea = (m+  )  + (2m+  )(1-  ) = m  +  + 2m - 2m  +  -  = = 2m +  - m 

107 Comptage d’utilisation dans TLB 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 n Contenu courant: n Compt=0 indique la ligne moins récemment utilisée n Si une nouvelle adresse doit être ajoutée, on remplace cette ligne là et son Compt devient 3, tous les autres Compt sont décrémentés n Si par contre on utilise l’adresse de la ligne 1, son Compt devient 3, les Compt des deux dernières lignes sont décrémentés Chap. 9107 No PageNo Cadre 3 1 0 2 15 19 17 23 Compt 7 0 3 2

108 Extensions et combinaisons Chap. 9108

109 Les tableaux de pages peuvent aussi être paginés n Pour permettre aux mémoires logiques d’être vraiment grandes Chap. 9109

110 Chap. 9110 Tableaux de pages à deux niveaux pour permettre aux tableaux de pages d’être eux-mêmes paginés tableau de pages du tableau de pages

111 Chap. 9111 Tableaux de pages à deux niveaux n La partie de l ’adresse qui appartient au numéro de page est elle-même divisée en 2

112 Chap. 9112 Partage de pages: 3 proc. partageant un éditeur, sur des données privées à chaque proc 1 seule copie de l’éditeur en mémoire au lieu de 3

113 Chap. 9113 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 (linkage editing) n La segmentation est visible au programmeur mais la pagination ne l’est pas n Le segment est une unité logique de protection et partage, tandis que la page ne l’est 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 d’adresses (addition au lieu de concatenation) n La segmentation souffre de fragmentation externe (partitions dynamiques) n La pagination produit de fragmentation interne, mais pas beaucoup (1/2 cadre par programme/processus) n Heureusement, la segmentation et la pagination peuvent être combinées

114 Chap. 9114 Pagination et segmentation combinées n Les programmes sont divisés en segments et les segments sont paginés n Donc chaque adresse de segment n`est pas une adresse de mémoire, mais une adresse au tableau de pages du segment n Les tableaux de segments et de pages peuvent être eux-mêmes paginés u Méthode inventée pour le système Multics de l’MIT, approx. 1965.

115 Chap. 9115 Adressage (sans considérer la pagination des tableaux de pages et de segments) segment table base register: un registre de l`UCT spd’ d Adresse d divisée en no de page et décalage dans page

116 Chap. 9116 Segmentation et pagination combinées avec pagination des tableaux de pages et segments

117 Chap. 9117 Importance de Translation Lookaside Buffer n Dans le cas de systèmes de pagination à plusieurs niveaux, l’utilisation de TLB devient encore plus importante pour éviter de multiples accès en mémoire RAM pour calculer une adresse physique n Les adresses les plus récemment utilisées sont trouvées directement dans la TLB

118 Sommaire Chap. 9118

119 Chap. 9119 Conclusions sur Gestion Mémoire n Problèmes de: u fragmentation (interne et externe) u complexité et efficacité des algorithmes F Mécanismes à exécuter pour chaque instruction! n Méthodes u Allocation contiguë F Partitions fixes F Partitions variables F Groupes de paires (buddy) u Allocation non-contigue F Pagination F 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 différentes méthodes décrites dans ce chapitre, et dans le chapitre suivant, sont souvent utilisées conjointement, donnant lieu a des systèmes très complexes u V. www pour informations sur les architectures réelles

120 Chap. 9120 Recapitulation 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 Paires: fragmentation interne de 25% pour chaque processus + fragm. externe s ’il y a des partit. non utilisées 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: u en moyenne, 1/2 cadre de fragm. interne par processus u dans le cas de mémoire virtuelle, aucune fragmentation externe (v. chap suivant) n Donc la pagination avec mémoire virtuelle offre la meilleure solution au pb de la fragmentation

121 Chap. 9121 Par rapport au manuel n Tout à l’exception de u Section 9.4.3.2 (Tables de pages hachées) u Section 9.4.4 (tables de pages inversées)

122 Chap. 9122 DLL http://www.webopedia.com/TERM/D/DLL.html n Short for Dynamic Link Library, a library of executable functions or data that can be used by a Windows application. Typically, a DLL provides one or more particular functions and a program accesses the functions by creating either a static or dynamic link to the DLL. A static link remains constant during program execution while a dynamic link is created by the program as needed. DLLs can also contain just data. DLL files usually end with the extension.dll,.exe., drv, or.fon.libraryfunctionsdataWindowsapplicationprogram n A DLL can be used by several applications at the same time. Some DLLs are provided with the Windows operating system and available for any Windows application. Other DLLs are written for a particular application and are loaded with the application. Short for Dynamic Link Library, a library of executable functions or data that can be used by a Windows application. Typically, a DLL provides one or more particular functions and a program accesses the functions by creating either a static or dynamic link to the DLL. A static link remains constant during program execution while a dynamic link is created by the program as needed. DLLs can also contain just data. DLL files usually end with the extension.dll,.exe., drv, or.fon.Windows operating system Windows application libraryfunctionsdataWindows applicationprogram n A DLL can be used by several applications at the same time. Some DLLs are provided with the Windows operating system and available for any Windows application. Other DLLs are written for a particular application and are loaded with the application.Windows operating system Windows application

123 Terminologie n Registre de base = Registre de translation n Segment Table Pointer = Segment Table Base Register n Translation Lookaside Buffer (TLB) = Address Cache = Mémoire associative etc. Chap. 9123


Télécharger ppt "Chap. 91 Gestion de la mémoire Chapitre 9 (6 heures – 2 cours) w3.uqo.ca/luigi."

Présentations similaires


Annonces Google