Gestion de la mémoire

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

description

Gestion de la mémoire. Chapitre 9 (6 heures – 2 cours). w3.uqo.ca/luigi. 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. Gestion de mémoire: objectifs. - PowerPoint PPT Presentation

Transcript of Gestion de la mémoire

Page 1: Gestion de la mémoire

Chap. 9 1

Gestion de la mémoireGestion de la mémoire

Chapitre 9Chapitre 9

(6 heures – 2 cours)(6 heures – 2 cours)

w3.uqo.ca/luigi

Page 2: Gestion de la mémoire

Chap. 9 2

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

Page 3: Gestion de la mémoire

Chap. 9 3

Gestion de mémoire: objectifsGestion de mémoire: objectifs

Optimisation de l’utilisation de la mémoire principale RAM

Les plus grand nombre possible de processus actifs doit y être gardé, de façon à optimiser le fonctionnement du système en multiprogrammation garder le système le plus occupé possible,

surtout l’UCT s’adapter aux besoins de mémoire de l ’usager,

qui varient dans le temps allocation dynamique

Page 4: Gestion de la mémoire

Chap. 9 4

Gestion de la mémoire: Gestion de la mémoire: concepts dans ce chapitreconcepts dans ce chapitre

Adresse physique et adresse logique mémoire physique et mémoire logique

Remplacement Allocation contiguë

partitions fixes variables

Pagination Segmentation Segmentation et pagination combinées Groupes de paires (buddy systems)

Page 5: Gestion de la mémoire

Chap. 9 5

Application de ces conceptsApplication de ces concepts

Pas tous les concepts que nous discuterons sont effectivement utilisés tels quels aujourd’hui dans la gestion de mémoire centrale RAM

Cependant presque tous se retrouvent en combinaison dans la gestion des différentes mémoires d’un ordi, centrales ou auxiliaires, p.ex. disques

Page 6: Gestion de la mémoire

Adresses physiques et logiques, Adresses physiques et logiques, Régistres de rélocation Régistres de rélocation

Chap. 9 6

Page 7: Gestion de la mémoire

Chap. 9 7

Mémoire/Adresses physiques et logiquesMémoire/Adresses physiques et logiques

Mémoire physique: la mémoire principale RAM de la machine

Adresses physiques: les adresses de cette mémoire

Mémoire logique: l’espace d`adressage d’un programme

Adresses logiques: les adresses dans cet espace

Il faut séparer ces concepts car normalement, les programmes sont chargés de fois en fois dans positions différentes de mémoire Donc adresse physique ≠ adresse logique

Page 8: Gestion de la mémoire

Chap. 9 8

LOAD(n)

0

n

b

n: adresse logiquen+b: adresse physiqueDonc 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

Page 9: Gestion de la mémoire

Chap. 9 9

LOAD(n)

0b

n+c

c

n : adresse logiquen+c : adresse physiqueDonc LOAD(n)=>LOAD(n+c)

Programme Données

Un programme qui fait référence à un segment de données chargé à la position c

Page 10: Gestion de la mémoire

Chap. 9 10

c

n+cLOAD(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 dOn doit ajouter c ou d à ses adresses logiques selon qu’il travaille pour X ou YDonc LOAD(n)=>LOAD(n+c) si l’UCT travaille pour XOu LOAD(n)=>LOAD(n+d) si l’UCT travaille pour YConcept 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 X Données pour YProgramme

Page 11: Gestion de la mémoire

Chap. 9 11

Les adresses physiques n’ont pas besoin d’être contigusLes 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

Page 12: Gestion de la mémoire

PrincipePrincipe

Les programmes et données peuvent être placés n’importe où en mémoire, à condition qu’il y ait un mécanisme pour: Calculer les adresses physiques en ajoutant l’adresse

de base à l’adresse virtuelle 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. 9 12

Page 13: Gestion de la mémoire

Chap. 9 13

Traduction adresses logiques Traduction adresses logiques adr.adr.physiquesphysiques

MMU: unité de gestion de mémoire unité de traduction adresses (memory management unit)

Instruction(program)

346

Data Segment

Page 14: Gestion de la mémoire

Differents types d’adressesDifferents types d’adresses

Noms symboliques donnés par le programmeur

Adresses logiques établis par le compilateur

Adresses physiques dans la mémoire de l’ordi établis au moment où le programme est mis en mémoire physique L’MMU en tient compte et fait la traduction au

moment de l’exécution

Chap. 9 14

Page 15: Gestion de la mémoire

Chap. 9 15

Définition des adresses logiques Définition des adresses logiques

Le manuel définit les adresses logiques comme étant les adresses générées par l’UCT Mais parfois l’MMU est partie de l ’UCT!

Je préfère la déf suivante: une adresse logique est une adresse à une

location de programme par rapport au programme lui-même seulement indépendante de la position du programme en

mémoire physique

Page 16: Gestion de la mémoire

Édition de liens et chargementÉdition de liens et chargement

Chap. 9 16

Page 17: Gestion de la mémoire

Chap. 9 17

Liaison et chargementLiaison et chargementv. fig. plus complète dans manuelv. fig. plus complète dans manuel

Progr.exécutable

Compilateur Modules Objet

Éditeur de liens

ModulesLiésChargeur

Autres Mods

(librairie)

NB: on fait l`hypothèse que tous les modules soient connus au débutSouvent, ce n’est pas le cas chargement dynamique

Progr.Source

Page 18: Gestion de la mémoire

Chap. 9 18

Liaison (Binding)Liaison (Binding) d’adresses logiques et d’adresses logiques et physiques physiques (instructions et données)(instructions et données)

La liaison des adresses logiques aux adresses physiques peut être effectuée en moments différents: Compilation: quand l’adresse physique est connue au

moment de la compilation (rare) p.ex. parties du SE qui sont fixes en RAM

Chargement: quand l’adresse physique où le progr est chargé est connue, les adresses logiques peuvent être traduites

Allocation statique (rare aujourd’hui) Exécution: normalement, les adresses physiques ne

sont connues qu’au moment de l ’exécution allocation dynamique

Page 19: Gestion de la mémoire

Édition de liens (linkage editing)Édition de liens (linkage editing)

Chap. 9 19

Page 20: Gestion de la mémoire

Chap. 9 20

Deux concepts de baseDeux concepts de base

Chargement = Loading. Le programme, ou une de ses parties, est chargé en mémoire physique, prêt à exécuter. Statique (avant l’exécution) Dynamique (pendant l’exécution)

Édition de liens = Liaison (enchaînement) des différentes parties d’un programme pour en faire une entité exécutable. les références entre modules différents doivent être

traduites statique (avant l`exécution) dynamique (sur demande pendant exécution)

• N.B. parties du programme = classes = modules = segments = sousprogrammes = objets, etc.

Page 21: Gestion de la mémoire

Chap. 9 21

Édition de liens: adressage entre modulesÉdition de liens: adressage entre modules

AB

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

Page 22: Gestion de la mémoire

Chap. 9 22

Adressage entre modules Adressage entre modules (édition de liens)(édition de liens)

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

AB

CD

Progr.Princ. Données

Sous-progr.

Données

JUMP(D, 100)

LOAD(C,250)

LOAD(B,50)

Page 23: Gestion de la mémoire

Par rapport à JavaPar rapport à Java

Le compilateur Java crée un module différent pour chaque classe

D’autres langages de programmation pourraient utiliser des critères différents

Les classes ont besoin de faire référence les unes aux autres

Chap. 9 23

Page 24: Gestion de la mémoire

Analogie pour édition de liensAnalogie pour édition de liens

Deux compagnies A et B collaborent, donc parfois un employé x de A doit téléphoner à un employé y de B

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

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. 9 24

Page 25: Gestion de la mémoire

Chaque module auraChaque module aura::

Un tableau d’adresses internes, qui font référence au module lui-même

Un tableau d’adresses externes, qui font référence à d’autres modules Ces tableaux sont créés par le compilateur

Chap. 9 25

Module

Adr. internes

Adr. externes

Page 26: Gestion de la mémoire

Exemple: un programme avec deux modulesExemple: un programme avec deux modules

Chap. 9 26

Programme principal Bint x…

Sous-programme Aint y…x = sqrt(y)

Quelles sont les adresses internes et externes de A?

Page 27: Gestion de la mémoire

Exemple: un programme avec deux modulesExemple: un programme avec deux modules

Chap. 9 27

Programme principal Bint x…

Sous-programme Aint y…x = sqrt(y)

Adr.internes: A, y

Adr externes: x, sqrt

Module A

Page 28: Gestion de la mémoire

Chap. 9 28

Édition de liens: Édition de liens: une méthode possible qui supporte la liaison dynamiqueune 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 Bx dans BAddressage final

Page 29: Gestion de la mémoire

Chap. 9 29

Adressage indirecteAdressage indirectepeut être utilisé dans cette méthodepeut être utilisé dans cette méthode

(v. aussi chaînes d’adresses en C ou C++)(v. aussi chaînes d’adresses en C ou C++)

code op adresse

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

Page 30: Gestion de la mémoire

Chap. 9 30

Cette méthode supporte l’allocation dynamiqueCette méthode supporte l’allocation dynamique

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

Ceci s’appelle un STUB. Après avoir fait ça, cette

référence sera traduite dans une adresse de mémoire physique.

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

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

Référence à x dans Bx dans BAddressage final

Page 31: Gestion de la mémoire

ChargementChargement

Chap. 9 31

Page 32: Gestion de la mémoire

Chap. 9 32

Aspects du chargementAspects du chargement

Trouver de la mémoire libre pour un module de chargement: contiguë ou non

Traduire les adresses du programme et effectuer les liaisons par rapport aux adresses où le module est chargé

Page 33: Gestion de la mémoire

Chap. 9 33

Chargement et liaison dynamiqueChargement et liaison dynamique

Un processus exécutant peut avoir besoin de différents modules du programme en différents moments

Le chargement statique peut donc être inefficace Il est mieux de charger les modules sur demande =

dynamique dll, dynamically linked libraries

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...)

À sa 1ère exéc. le stub cause le chargement du module en mémoire et sa liaison avec le reste du programme liaison dynamique

Les invocations successives du module ne doivent pas passer à travers ça, on saura l’adresse en mémoire

Page 34: Gestion de la mémoire

Chap. 9 34

Traduction d’adresses logique Traduction d’adresses logique physique physique

Dans certains systèmes très simples, un programme est toujours chargé dans la même zone de mémoire

La multiprogrammation et l’allocation dynamique engendrent le besoin de charger un programme dans positions différentes

Dans les systèmes simples, ceci peut être fait par le chargeur (loader) qui change les adresses avant de lancer l ’exécution

Plus normalement, ceci est fait par le MMU au fur et à mesure que le progr. est exécuté

Ceci ne cause pas d’hausse de temps d ’exécution, car le MMU agit en parallèle avec autres fonctions d ’UCT 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

Page 35: Gestion de la mémoire

Techniques traditionnelles d’allocation mémoireTechniques traditionnelles d’allocation mémoire

Recouvrement, overlay, permutation Allocation contiguë

Partitions fixes Partitions dynamiques Systèmes de compagnons (buddy systems)

Fragmentation interne, externe

Page 36: Gestion de la mémoire

Recouvrement, overlay, permutationRecouvrement, overlay, permutation

Chap. 9 36

Page 37: Gestion de la mémoire

‘‘Phases’ ou ‘passes’ d’un processusPhases’ ou ‘passes’ d’un processus

Plusieurs processus peuvent être divisés en phases ou passes qui n’ont pas besoin d’être simultanément en mémoire

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: Normalisation des données Extraction de statistiques

La 2ème phase commence après la fin de la 1ère Quand la 1ère phase finit, la mémoire qu’elle

utilisait peut être donnée à la 2ème phase

Chap. 9 37

Page 38: Gestion de la mémoire

Chap. 9 38

Recouvrement ou overlayRecouvrement ou overlay

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

Page 39: Gestion de la mémoire

Chap. 9 39

Permutation de programmes (swapping)Permutation de programmes (swapping)

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

disque

Page 40: Gestion de la mémoire

Chap. 9 40

Permutation de programmes (swapping)Permutation de programmes (swapping)

Processus ou portion de proc. permuté sur disque pour « sauver la mémoire » quand ils ne sont pas actifs

Page 41: Gestion de la mémoire

Allocation contiguëAllocation contiguë

Chap. 9 41

Page 42: Gestion de la mémoire

Chap. 9 42

Allocation contiguë de mémoireAllocation contiguë de mémoire

Nous avons plusieurs programmes à exécuter Nous pouvons les charger en mémoire les uns

après les autres le lieu où un programme est lu n’est connu qu’au

moment du chargement Besoins de matériel: registres translation et

registres bornes

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

Page 43: Gestion de la mémoire

Chap. 9 43

Affectation contiguë de mémoireAffectation 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

Page 44: Gestion de la mémoire

Chap. 9 44

Registres bornes Registres bornes (ou limites)(ou limites) et translation dans et translation dans MMU 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

Page 45: Gestion de la mémoire

Deuxième manière de voir la même choseDeuxième manière de voir la même chose

Chap. 9 45

Page 46: Gestion de la mémoire

Chap. 9 46

Fragmentation: mémoire non utiliséeFragmentation: mémoire non utilisée

Un problème majeur dans l`affectation contiguë: Il y a assez d ’espace pour exécuter un

programme, mais il est fragmenté de façon non contiguë

La fragmentation peut être: externe: l`espace inutilisé est entre partitions interne: l ’espace inutilisé est dans les partitions

Page 47: Gestion de la mémoire

Chap. 9 47

Partitions fixesPartitions fixes

Mémoire principale subdivisée en régions distinctes: partitions

Les partitions sont soit de même taille ou de tailles inégales

N’importe quel progr. peut être affecté à une partition qui soit suffisamment grande

(Stallings)

Page 48: Gestion de la mémoire

Chap. 9 48

Algorithme de placement pour Algorithme de placement pour partitions fixespartitions fixes

Partitions de tailles inégales: utilisation de plusieurs files assigner chaque

processus à la partition de la plus petite taille pouvant le contenir

1 file par taille de partition

tente de minimiser la fragmentation interne

Problème: certaines files seront vides s’il n’y a pas de processus de cette taille (fr. externe)

(Stallings)

8M

12M

Page 49: Gestion de la mémoire

Chap. 9 49

Algorithme de placement pour Algorithme de placement pour partitions fixespartitions fixes

Partitions de tailles inégales: utilisation d’une seule file On choisit la plus petite

partition libre pouvant contenir le prochain processus

le niveau de multiprogrammation augmente au profit de la fragmentation interne

On pourrait allouer trop de mémoire à un programme

(Stallings)

8M

12M

Page 50: Gestion de la mémoire

Chap. 9 50

Critique des partitions fixesCritique des partitions fixes

Simple, mais... 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.

Les partitions à tailles inégales atténue ces problèmes mais ils y demeurent...

Page 51: Gestion de la mémoire

Chap. 9 51

Partitions dynamiquesPartitions dynamiques

Partitions en nombre et tailles variables Chaque processus est alloué exactement la

taille de mémoire requise Probablement des trous inutilisables se

formeront dans la mémoire: c’est la fragmentation externe

Page 52: Gestion de la mémoire

Chap. 9 52

Partitions dynamiques: exemple Partitions dynamiques: exemple (Stallings)(Stallings)

(d) Il y a un trou de 64K après avoir chargé 3 processus Le prochain processus pourrait demander plus 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

Page 53: Gestion de la mémoire

Chap. 9 53

Partitions dynamiques: exemple Partitions dynamiques: exemple (Stallings)(Stallings)

(e-f) Progr. 2 est suspendu, Progr. 4 est chargé. Un trou de 224-128=96K est créé (fragmentation externe)

(g-h) P1 se termine ou il est suspendu, P2 est repris à sa place: produisant un autre trou de 320-224=96K...

Nous avons 3 trous petits et probabl. inutiles. 96+96+64=256K de fragmentation externe

COMPACTAGE pour en faire un seul trou de 256K

Page 54: Gestion de la mémoire

Chap. 9 54

CompactageCompactage

Une solution pour la fragmentation externe Les programmes sont déplacés en mémoire de

façon à combiner en un seul plusieurs petits trous disponibles

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

Désavantages: temps de transfert programmes besoin de rétablir tous les liens entre adresses de

différents programmes

Page 55: Gestion de la mémoire

Chap. 9 55

Suspension Suspension (Rappel: v. chap 4)(Rappel: v. chap 4)

Lorsque tous les programmes en mémoire sont bloqués, le SE peut en suspendre un (swap/suspend) 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é

ce dernier processus exécute une transition d’état Nouveau ou Suspendu à état Ready

Page 56: Gestion de la mémoire

Chap. 9 56Ch.4 56

UNIX SVR4 UNIX SVR4 Implémente ces conceptsImplémente ces concepts

Created Nouveau

Zombie Terminé

User running Exécute en mode usager

Kernel running Exécute en mode superviseur

Ready in memory

Prêt en mém centrale

Asleep in memory

En attente en mém centrale

Ready swapped Prêt en mém secondaire

Asleep swapped

En attente, mém secondaire

Preempted Par un proc + prioritaire

Page 57: Gestion de la mémoire

Chap. 9 57

Méthode de «groupe de paires» Méthode de «groupe de paires» (buddy systems): (buddy systems): (Unix, Linux, sect. 21.6.1) (Unix, Linux, sect. 21.6.1)

Appelons ‘trou’ un bloc de mémoire vide Débutons avec un seul trou égal à toute la mémoire

disponible Sur une requête pour un trou de taille S:

Trouver le plus petit trou assez grand pour S Si la moitié de ce trou n’est pas suffisant pour S, alors allouer

le trou entier à S Sinon, diviser ce trou en deux compagnons (buddies), égaux Si nécessaire, continuer à diviser jusqu’à ce qu’on aura

généré un trou ni trop grand, ni trop petit pour S Deux compagnons sont fusionnés lorsqu’ils deviennent

tous deux non alloués

Page 58: Gestion de la mémoire

Chap. 9 58

Exemple d’un “Groupe de paires” Exemple d’un “Groupe de paires” (Stallings)(Stallings)

ABCD

E

Page 59: Gestion de la mémoire

Chap. 9 59

Système de groupes de paires (Buddy system)Système de groupes de paires (Buddy system)

Le SE maintient plusieurs listes de trous la i-liste est la liste des trous de taille 2i

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

Sur une requête pour une allocation d’un bloc de taille k tel que 2i-1 < k <= 2i: on examine d’abord la i-liste si elle est vide, on tente de trouver un trou

dans la (i+1)-liste, si trouvé, il sera divisé en 2

Page 60: Gestion de la mémoire

Chap. 9 60

Comment trouver le compagnon Comment trouver le compagnon (pourquoi faut-il le trouver)(pourquoi faut-il le trouver)

Étant donné L’adresse binaire d’un bloc La longueur du bloc Comment trouver son compagnon

Si la longueur du bloc est 2n

Si le bit n de l’adresse est 0, changer à 1 (compagnon est à droite)

Si le bit n de l’adresse est 1, changer à 0 (compagnon est à gauche)

Exemples: Adr: 011011110000 – long. 22 = 100 - comp: 011011110100 Adr: 011011110000 – long. 24 = 10000 - comp: 011011100000

(Valeurs binaires - Compter les bits à partir de la droite et de 0)

Page 61: Gestion de la mémoire

Avantage principalAvantage principal

Pas besoin de compactage Pas besoin de déplacer les programmes en

mémoire

Chap. 9 61

Page 62: Gestion de la mémoire

Chap. 9 62

Groupes de paires: fragmentation interneGroupes de paires: fragmentation interne

En moyenne, la fragmentation interne est de 25% de partition par processus pour chaque proc nous aurons

une demie partition pleine plus une autre demie partition utilisée en moyenne à

moitié Plus concrètement, si la dimension moyenne des

processus est X et s’il y a n processus en mémoire X/3 sera gaspillé en moyenne pour chaque

processus Ou n(X/3) pour l’ensemble des processus

Page 63: Gestion de la mémoire

Groupe de paires: fragmentation externeGroupe de paires: fragmentation externe

Il y aura aussi fragmentation externe égale à tous les trous qu’on ne réussit pas à remplir

Chap. 9 63

Page 64: Gestion de la mémoire

Fragmentation Fragmentation interneinterne pour l’exemple pour l’exempleExercice: travailler cet exempleExercice: travailler cet exemple

Chap. 9 64

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%)

ABCD

E

Page 65: Gestion de la mémoire

Allocation non-contiguëAllocation non-contiguë

Chap. 9 65

Page 66: Gestion de la mémoire

Faits de baseFaits de base La fragmentation (gaspillage) de mémoire est proportionnel

à la dimension des unités d’allocation de mémoire Supposons que l’unité d’alloc mémoire soit la mémoire

entière (la mémoire entière est donnée à un processus) La fragmentation (interne) sera en moyenne 50% de la mémoire

Supposons que l’unité d’alloc mémoire soit 1 seul octet La fragmentation sera 0

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

(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. 9 66

Page 67: Gestion de la mémoire

Chap. 9 67

Allocation non contiguëAllocation non contiguë

Afin de réduire la fragmentation, presque tous les ordis d’aujourd’hui utilisent l’allocation non contiguë diviser un programme en morceaux et permettre l`allocation

séparée de chaque morceau les morceaux sont beaucoup plus petits que le programme entier

et donc permettent une utilisation plus efficace de la mémoire les petits trous peuvent être utilisés plus facilement

Il y a deux techniques de base pour faire ceci: la pagination et la segmentation la segmentation utilise des parties de programme qui ont une

valeur logique (des modules) la pagination utilise des parties de programme arbitraires

(morcellement du programmes en pages de longueur fixe). elles peuvent être combinées

Je trouve que la segmentation est plus naturelle, donc je commence par celle-ci (manuel suit l’ordre opposé)

Page 68: Gestion de la mémoire

La segmentationLa segmentation

Chap. 9 68

Page 69: Gestion de la mémoire

Chap. 9 69

Les segments sont des parties logiques du progr.Les segments sont des parties logiques du progr.

AB

CD

Progr.Princ. Données

Sous-progr.

Données

JUMP(D, 100)

LOAD(C,250)

LOAD(B,50)

4 segments: A, B, C, D

Page 70: Gestion de la mémoire

Chap. 9 70

Les segments comme unités d’alloc mémoireLes 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)

Page 71: Gestion de la mémoire

Chap. 9 71

Mécanisme pour la segmentationMécanisme pour la segmentation Un tableau contient l’adresse de début de tous les segments dans un processus Chaque adresse dans un segment est ajoutée à l’adresse de début du segment par la MMU

Tableau de descripteurs de segments

0

3

1

2

mémoire physique

Adr de 1Adr de 2Adr de 3

Adr de 0

segment courant

base du tableau

Page 72: Gestion de la mémoire

Chap. 9 72

DétailsDétails L’adresse logique est une paire:

<No de segm, décalage> où décalage est l’adresse dans le segment

Le tableau des segments contient: descripteurs de segments adresse de base longueur du segment Infos de protection, on verra…

Dans le PCB du processus il y aura un pointeur à l’adresse en mémoire du tableau des segments

Il y aura aussi là dedans le nombre de segments dans le processus

Au moment de la commutation de contexte, ces infos seront chargées dans les registres appropriés d’UCT

Page 73: Gestion de la mémoire

Chap. 9 73

Traduction d`adresses dans la segmentation Traduction d`adresses dans la segmentation

(figure de Stallings: légère diff. par rapport à la terminologie de Silberschatz)(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?

Page 74: Gestion de la mémoire

Chap. 9 74

Le mécanisme en détail Le mécanisme en détail (implanté dans le matériel)(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

Page 75: Gestion de la mémoire

Chap. 9 75

Partage de segments:Partage de segments:plusieurs processus se servent d’un segmentplusieurs processus se servent d’un segment

Ex 1: Programme Word utilisé pour éditer différents documentsEx 2: DLL utilisé par plus usagers

Page 76: Gestion de la mémoire

Programme et processusProgramme et processus

Cet exemple montre clairement la distinction entre programme et processus

Nous avons un seul programme, l’éditeur, mais deux processus

En mémoire il y a une seule copie du programme Mais chaque processus a son propre tableau de

segments 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. 9 76

Page 77: Gestion de la mémoire

Chap. 9 77

Mécanisme pour 2 processus qui exécutent un seul programme Mécanisme pour 2 processus qui exécutent un seul programme sur données différentessur 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’UCTCeci 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

ProgrammeDonnées proc 1

Données proc 2

Instruction

R1

R2

+

+

Page 78: Gestion de la mémoire

Chap. 9 78

Segmentation et protectionSegmentation et protection

Chaque descripteur de segment peut contenir des infos de protection: longueur du segment privilèges de l`usager sur le segment: lecture,

écriture, exécution Si au moment du calcul de l’adresse on trouve

que l’usager n’a pas droit d’accèsinterruption ces infos peuvent donc varier d ’usager à

usager, par rapport au même segment!

limite base read, write, execute?

Page 79: Gestion de la mémoire

Privilèges des usagers dans tableaux de segmentsPrivilèges des usagers dans tableaux de segments

Chap. 9 79

R

R,W

P1 peut seulement lire l’éditeur, P2 peut le lire ou l’écrire

Page 80: Gestion de la mémoire

Chap. 9 80

Évaluation de la segmentation simpleÉvaluation de la segmentation simple

Avantages: l’unité d’allocation de mémoire est plus petite que le programme entier 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) Désavantage: le problème des partitions dynamiques:

La fragmentation externe n’est pas éliminée: trous en mémoire, compression?

Une autre solution est d`essayer à simplifier le mécanisme en utilisant unités d`allocation mémoire de tailles égales

PAGINATION

Page 81: Gestion de la mémoire

Chap. 9 81

Segmentation contre paginationSegmentation contre pagination

Le pb avec la segmentation est que l’unité d’allocation de mémoire (le segment) est de longueur variable

La pagination utilise des unités d’allocation de mémoire fixe, éliminant donc ce pb

Page 82: Gestion de la mémoire

Exercice: Exercice: édition de liensédition de liens

Voir comment la segmentation résout le problème de rejoindre des adresses dans autres modules Comment il résout le pb de l’édition des liens

Chap. 9 82

Page 83: Gestion de la mémoire

La paginationLa pagination

Chap. 9 83

Page 84: Gestion de la mémoire

Chap. 9 84

Pagination simplePagination simple

La mémoire est partitionnée en petits morceaux de même taille: les pages physiques ou cadres ou frames

Chaque processus est aussi partitionné en petits morceaux de même taille appelés pages (logiques)

Les pages logiques d’un processus peuvent donc être affectées aux cadres disponibles n’importe où en mémoire principale

Conséquences: un processus peut être éparpillé n’importe où dans la

mémoire physique. la fragmentation externe est éliminée

Page 85: Gestion de la mémoire

Chap. 9 85

Exemple de chargement de processusExemple de chargement de processus

Puis, supposons que le processus B se termine ou est suspendu

(Stallings)

Page 86: Gestion de la mémoire

Chap. 9 86

Exemple de chargement de processus Exemple de chargement de processus (Stallings)(Stallings)

Nous pouvons maintenant mettre en mémoire un progr. D, qui demande 5 cadres bien qu`il n’y ait pas 5

cadres contigus disponibles

Seule la dernière page d’un progr peut souffrir de fragmentation interne moy. 1/2 cadre par proc

Page 87: Gestion de la mémoire

Chap. 9 87

Tableaux de pagesTableaux de pages

Les entrées dans le tableau de pages sont aussi appelées descripteurs de pages

Page 88: Gestion de la mémoire

Chap. 9 88

Tableaux de pagesTableaux de pages

Le SE doit maintenir un tableau de pages pour chaque processus

Chaque descripteur de pages contient le numéro de cadre où la page correspondante est physiquement localisée

Une table de pages est indexée par le numéro de la page afin d’obtenir le numéro du cadre

Une liste de cadres disponibles est également maintenue (free frame list)

(Stallings)

Page 89: Gestion de la mémoire

Trois processus et leurs tableaux de pagesTrois processus et leurs tableaux de pages

Chap. 9 89Où sont les pages?

Page 90: Gestion de la mémoire

Traduction d’adressesTraduction d’adresses

La traduction d’adresses se fait comme dans le cas de la segmentation On ajoute l’adresse de base au déplacement

Cependant ceci est simplifié si les dimensions des pages sont égales à une puissance de 2

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

Les adresses de base des pages ont des bits 0 impliqués à droite et l’addition est une simple concaténation

Chap. 9 90

1101 0000 + 1010=

1101 1010

(Ici, taille de pages=24=16)

Page 91: Gestion de la mémoire

Chap. 9 91

Traduction d’adressesTraduction d’adresses

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 pageL’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

d, le décalage, ne change pas

(Stallings)

p d

fd

Page 92: Gestion de la mémoire

Chap. 9 92

Mécanisme: matérielMécanisme: matériel

Page 93: Gestion de la mémoire

Chap. 9 93

Traduction d’adresse (logique-physique) pour la Traduction d’adresse (logique-physique) pour la paginationpagination

Stallings

PTBR

PTBR: Page Table Base Register dans UCT

Page 94: Gestion de la mémoire

ExerciceExercice

Quoi détermine La taille des pages Le nombre de pages que nous pouvons avoir dans

un ordi donné

Est-ce qu’en principe un même programme peut être exécuté sur deux ordinateurs avec pages de tailles différentes?

Est-ce que le compilateur est obligé à connaître la taille des pages de l’ordinateur

Chap. 9 94

p d

Page 95: Gestion de la mémoire

Chap. 9 95

ExerciceExercice

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 ledécalage. Le tableau de pages du processus couramment en exécution est:

Numéro depage

Numéro decadre

00 1101 1010 0111 00.Considérez l'adresse logique 1010. Quelle sera l'adresse physiquecorrespondante?

B) Considérez maintenant un système de segmentation, pas de pagination. Letableau des segments du processus en exécution est comme suit:

Segmentnumber

Base

00 11001 10010 000

Considérez l'adresse logique (no de seg, décalage)= (01, 01) , quelle estl'adresse physique?

Page 96: Gestion de la mémoire

Translation Lookaside Buffer Translation Lookaside Buffer ou cache d’adressesou cache d’adresses

Chap. 9 96

Page 97: Gestion de la mémoire

Chap. 9 97

Problèmes d’efficacitéProblèmes d’efficacité

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

Cependant, si la table des pages est en mémoire principale, chaque adresse logique occasionne au moins 2 références à la mémoire Une pour lire l’entrée de la table de pages L’autre pour lire le mot référencé

Le temps d`accès mémoire est doublé...

Page 98: Gestion de la mémoire

Chap. 9 98

Pour améliorer l`efficacitéPour améliorer l`efficacité

Où mettre les tableaux des pages (les mêmes idées s ’appliquent aussi aux tabl. de segm)

Solution 1: dans des registres de UCT. avantage: vitesse désavantage: nombre limité de pages par proc., la taille

de la mém. logique est limitée Solution 2: en mémoire principale

avantage: taille de la mém. logique (presque) illimitée désavantage: lenteur

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.

Page 99: Gestion de la mémoire

Chap. 9 99

IdéeIdée

J’ai un petit tableau effaçable où je garde les numéros de téléphone de mes contacts le plus courants

Quand je rencontre un nouvel ami, la première fois je dois chercher son numéro dans le bottin

Puis je le mets dans le tableau, mais avant je dois effacer quelqu’un qui est déjà là

Page 100: Gestion de la mémoire

Chap. 9 100

Régistres associatifs TLBRégistres associatifs TLB

TLB: Translation Lookaside Buffers, ou TLB: Translation Lookaside Buffers, ou caches caches d’adressaged’adressage

Recherche parallèle d’une adresse: l’adresse recherchée est cherchée dans la partie

gauche de la table en parallèle (matériel spécial) Traduction page cadre

Si la page recherchée a été utilisée récemment elle se trouvera dans les registres associatifs

recherche rapide

No Page No Cadre

3702

15191723

v. Content-addressable memory dans Wikipedia

Page 101: Gestion de la mémoire

Chap. 9

101

Recherche Recherche associativeassociative dans TLB dans TLB Le TLB est un tableau de registres de matériel où

chaque ligne contient une paire: Numéro de page logique, Numéro de cadre

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

Page 102: Gestion de la mémoire

Chap. 9 102

Translation Lookaside Buffer (TLB)Translation Lookaside Buffer (TLB)

Sur réception d’une adresse logique, le processeur examine le TLB Si cette entrée de page y est , le numéro de cadre en est extrait Sinon, le numéro de page indexe la table de page du processus (en

mémoire)

Cette nouvelle entrée de page est mise dans le TLB Elle remplace une autre pas récemment utilisée

Le contenu du TLB est remplacé quand l’UCT change de proc Les premières trois opérations sont faites par matériel

Page 103: Gestion de la mémoire

Chap. 9 103

Schéma d’utilisation TLBSché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

Page 104: Gestion de la mémoire

Chap. 9 104

Temps d’accès mémoire réel avec TLBTemps d’accès mémoire réel avec TLB

Supposons que recherche dans TLB = 1 nanosecondes = 1ns (normalement petit)

Supposons que le temps de recherche en mémoire = 1 microseconde = 1s = probabilité de touches (hit ratio) = probabilité qu’un numéro de page

soit trouvé dans les registres associatifs (quantité entre 0 et 1)

ceci est en relation avec le nombre de registres associatifs disponibles Temps effectif d’accès tea:

tea = (1ns+1s) + (1ns+2s)(1 – ) Si est grand, ce temps sera près de 1s

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.?

Page 105: Gestion de la mémoire

Décortiqué …Décortiqué …

tea = (1ns+1s) + (1ns+2s)(1 – )

Chap. 9 105

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

Page 106: Gestion de la mémoire

Chap. 9 106

Formulation plus généraleFormulation plus générale

m: temps d’accès RAM : temps d’accès mémoire associative : probabilité de touche

est influencé par la taille de la TLB mais aussi par l’organisation du

programme! (exercice: comment?)

tea =

(m+ ) + (2m+ )(1- ) = m + + 2m - 2m + - =

= 2m + - m

Page 107: Gestion de la mémoire

Comptage d’utilisation dans TLB Comptage d’utilisation dans TLB 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

Contenu courant:

Compt=0 indique la ligne moins récemment utilisée 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 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. 9 107

No Page No Cadre

31

02

15191723

Compt

70

32

Page 108: Gestion de la mémoire

Extensions et combinaisonsExtensions et combinaisons

Chap. 9 108

Page 109: Gestion de la mémoire

Les tableaux de pages peuvent aussi être Les tableaux de pages peuvent aussi être paginéspaginés

Pour permettre aux mémoires logiques d’être vraiment grandes

Chap. 9 109

Page 110: Gestion de la mémoire

Chap. 9 110

Tableaux de pages à deux niveauxTableaux de pages à deux niveauxpour permettre aux tableaux de pages d’être eux-mêmes paginéspour permettre aux tableaux de pages d’être eux-mêmes paginés

tableau de pages du tableau de pages

Page 111: Gestion de la mémoire

Chap. 9 111

Tableaux de pages à deux niveauxTableaux de pages à deux niveaux

La partie de l ’adresse qui appartient au numéro de page est elle-même divisée en 2

Page 112: Gestion de la mémoire

Chap. 9 112

Partage de pages: Partage de pages: 33 proc. partageant un éditeur, sur des données privées à chaque proc 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

Page 113: Gestion de la mémoire

Chap. 9 113

Segmentation simple vs Pagination simple Segmentation simple vs Pagination simple La pagination se préoccupe seulement du problème du chargement,

tandis que La segmentation vise aussi le problème de la liaison (linkage editing) La segmentation est visible au programmeur mais la pagination ne

l’est pas Le segment est une unité logique de protection et partage, tandis

que la page ne l’est pas Donc la protection et le partage sont plus aisés dans la segmentation

La segmentation requiert un matériel plus complexe pour la traduction d’adresses (addition au lieu de concatenation)

La segmentation souffre de fragmentation externe (partitions dynamiques)

La pagination produit de fragmentation interne, mais pas beaucoup (1/2 cadre par programme/processus)

Heureusement, la segmentation et la pagination peuvent être combinées

Page 114: Gestion de la mémoire

Chap. 9 114

Pagination et segmentation combinéesPagination et segmentation combinées

Les programmes sont divisés en segments et les segments sont paginés

Donc chaque adresse de segment n`est pas une adresse de mémoire, mais une adresse au tableau de pages du segment

Les tableaux de segments et de pages peuvent être eux-mêmes paginés Méthode inventée pour le système Multics de

l’MIT, approx. 1965.

Page 115: Gestion de la mémoire

Chap. 9 115

Adressage Adressage (sans considérer la pagination des tableaux de (sans considérer la pagination des tableaux de pages et de segments)pages et de segments)

segment table base register: un registre de l`UCT

s p d’

d

Adresse d divisée en no de page et décalage dans page

Page 116: Gestion de la mémoire

Chap. 9 116

Segmentation et pagination combinées Segmentation et pagination combinées avec avec pagination des tableaux de pages et segmentspagination des tableaux de pages et segments

Page 117: Gestion de la mémoire

Chap. 9 117

Importance de Translation Lookaside BufferImportance de Translation Lookaside Buffer

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

Les adresses les plus récemment utilisées sont trouvées directement dans la TLB

Page 118: Gestion de la mémoire

SommaireSommaire

Chap. 9 118

Page 119: Gestion de la mémoire

Chap. 9 119

Conclusions sur Gestion Mémoire Conclusions sur Gestion Mémoire Problèmes de:

fragmentation (interne et externe) complexité et efficacité des algorithmes

Mécanismes à exécuter pour chaque instruction! Méthodes

Allocation contiguë Partitions fixes Partitions variables Groupes de paires (buddy)

Allocation non-contigue Pagination Segmentation

Problèmes en pagination et segmentation: taille des tableaux de segments et pages pagination de ces tableaux efficacité fournie par Translation Lookaside Buffer

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

V. www pour informations sur les architectures réelles

Page 120: Gestion de la mémoire

Chap. 9 120

Recapitulation sur la fragmentation Recapitulation sur la fragmentation

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

Partitions dynamiques: fragmentation externe qui conduit au besoin de compression.

Paires: fragmentation interne de 25% pour chaque processus + fragm. externe s ’il y a des partit. non utilisées

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)

Pagination: en moyenne, 1/2 cadre de fragm. interne par processus dans le cas de mémoire virtuelle, aucune fragmentation externe

(v. chap suivant) Donc la pagination avec mémoire virtuelle offre la meilleure

solution au pb de la fragmentation

Page 121: Gestion de la mémoire

Chap. 9 121

Par rapport au manuelPar rapport au manuel

Tout à l’exception de Section 9.4.3.2 (Tables de pages hachées) Section 9.4.4 (tables de pages inversées)

Page 122: Gestion de la mémoire

Chap. 9 122

DLL DLL http://www.webopedia.com/TERM/D/DLL.htmlhttp://www.webopedia.com/TERM/D/DLL.html

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.

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.

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.

Page 123: Gestion de la mémoire

TerminologieTerminologie

Registre de base = Registre de translation Segment Table Pointer = Segment Table

Base Register Translation Lookaside Buffer (TLB) =

Address Cache = Mémoire associative etc.

Chap. 9 123