gestion mémoire 2

Page 1

Au bout d'un certain temps de fonctionnement, la mémoire prend l'aspect d'une alternance de trous et de partitions de taille quelconque. La fragmentation de la mémoire est une situation durant laquelle une demande ne peut être satisfaite faute d'un espace de taille suffisante, bien que la somme des tailles des zones libres soit supérieure à cette demande. Pour réduire la fragmentation, on peut grouper les zones libres selon deux techniques différentes : la concaténation ou le compactage. Concaténation des trous : la technique consiste à rassembler, en un seul espace, les trous contigus et ce dès leur formation. Compactage des trous libres : la technique de compactage consiste à rassembler les trous en une seule zone. C’est un algorithme de ramasse de miettes (Garbadge Collector) qui a pour rôle de déplacer les processus encore actifs vers de nouveaux emplacements.

1 A Eniso - 2009/2010

1


Compactage

Concaténation SE Libre 20 Libre 15

SE

SE

Libre 35

SE

Libre 20 Occupé Occupé

Occupé

Occupé

Occupé Libre 30

Libre 30

Libre 30

Occupé

Occupé

Occupé

Libre 50

D’autre solutions pour éviter la fragmentation : Ne pas permettre la formation de trous d'une taille inférieure à celle d'une miette. Implanter des programmes dans des zones de mémoires non contiguës. 1 A Eniso - 2009/2010

2


Allocation contigüe Allocation d’une partition unique Les partitions de taille fixe Les partitions de taille variable Allocation non contigüe La pagination : partitions de taille fixe La segmentation : partitions de taille variable

1 A Eniso - 2009/2010

3


La mémoire physique est découpée en blocs de taille fixe appelés cadres de pages. La mémoire logique est également subdivisée en blocs de la même taille appelés pages. Quand on doit exécuter un processus, on charge ses pages dans les cadres de pages de mémoire disponibles à partir de la mémoire auxiliaire. Lorsqu’un processus est chargé en mémoire, le SE charge chaque page dans un cadre de page inutilisé, qui n'ont pas besoin d’être contigus. Une table de pages stocke le numéro du cadre de page alloué à chaque page. Le numéro du cadre de page dans lequel a été chargée la page N est stocké dans la Nième entrée de la table. Sur les systèmes pour lesquels les processus peuvent avoir un grand nombre de pages, on peut faire appel à un système à plusieurs niveaux. 1 A Eniso - 2009/2010

4


On utilise le numéro de page comme indice à une table de pages. La table de pages contient l'adresse de base de chaque page dans la mémoire physique. Mémoire Mémoire logique

Table de page

1

1

3

2

2

5

3

3

1

4

4

6

physique 1 2 3 4 5 6

Avec la pagination : Nous pouvons posséder de la fragmentation interne si les besoins en mémoire d'un processus ne tombent pas sur les limites des pages, le dernier cadre de page ne sera pas complètement plein. Pas de fragmentation externe : chaque cadre de page libre peut être alloué a un processus qui le requiert. 1 A Eniso - 2009/2010

5


On divise chaque adresse générée par l’UC en deux parties : un numéro de page (n), et un déplacement dans la page (d). UC

0

@ logique n

d

n

Table de pages

Mémoire physique @ physique m

m

d

L’adresse de base est combinée avec le déplacement dans la page afin de définir l'adresse mémoire physique envoyée a l'unité de mémoire. L'adresse logique possède la forme suivante : Numéro de page

déplacement dans la page

n

d

i-j

1 A Eniso - 2009/2010j

6


Sur un système de pagination simple de 224 octets de mémoire physique, 256 pages (28) d'espace d'adressage logique et une taille de page de 210 octets : combien de bits se trouvent dans une adresse logique ? Numéro de page déplacement dans la page  18=8+10

 

n

d

8 bits

10 bits

combien d'octets se trouvent dans un cadre de page ? 210 : la taille d'un cadre de page est la même que celle de la page. Ainsi, la taille du cadre de page est de 210. combien de bits de l'adresse physique spécifient le cadre de page ? 14=24-10 quelle est la longueur de la table de pages ? 256 : une entrée pour chaque page. 1 A Eniso - 2009/2010

7


Comme la pagination, la segmentation divise un programme en un certain nombre de blocs appelés segments, chacun étant alloué indépendamment à la mémoire. À la différence de la pagination, les segments sont de taille variable. Une table de segments est comparable à une table de pages. Chaque entrée de la table de segments possède : le segment de base contient l’adresse physique de début où le segment réside en mémoire, le registre limite spécifie la longueur du segment. Le SE conserve une liste d'espace libre et alloue les segments aux zones de mémoire libres. La segmentation peut provoquer de la fragmentation externe, quand tous les blocs de la mémoire libre sont trop petits pour ranger un segment. L'adresse logique est translatée en une adresse physique par le biais de l'extraction du numéro de segment et de l'offset de l'adresse logique. 1 A Eniso - 2009/2010

8


Il est possible de définir certains segments en lecture seule en ajoutant un bit de lecture seule dans une entrée de table de segments. Le système de gestion de la mémoire recherche des segments en lecture seule dans les opérations d'écriture et génère une erreur si cette opération est détectée. S'il y a une prise en charge des segments en lecture seule, il est possible que plusieurs processus partagent des segments en lecture seule, réduisant ainsi l'utilisation de la mémoire. Cela se produit lorsque deux processus exécutent le même programme et que le code de ce dernier est désigné pour se trouver dans un ou plusieurs segments en lecture seule.

1 A Eniso - 2009/2010

9


Une adresse logique est constituée de deux parties : un numéro de segment et un déplacement dans ce segment. On utilise le numéro du segment comme indice dans la table de segments. Le déplacement de l’adresse logique doit se trouver entre 0 et la limite du segment. Si ce n'est pas le cas, nous effectuons un déroutement. 0

UC

n

@ logique n

Table de segments

Mémoire physique

taille base

d <

Oui

+

Non 1 A Eniso - 2009/2010 Erreur

10


Sur un système utilisant la segmentation simple, calculez l'adresse physique de chacune des adresses logiques, à partir de la table de segments ci-après.

0, 300 1400 2, 800 Erreur 1, 600 3100 3, 1100 5100 1, 1111 Erreur

Segment

Base

Longueur

0

1100

500

1

2500

1000

2

200

600

3

4000

1200

1 A Eniso - 2009/2010

11


Calculez les adresses physiques qui correspondent aux adresses logiques suivantes: 1035, 4093, 4098, 9000. Le mode de gestion est la pagination et les pages ont une taille de 4 KO. N° page N° page La table de pages : logique

physique

0

4

1

6

2

15

3

10

@ logique

N° page physique

Déplacement

@ physique

1035

0

1035

17419

4093

0

4093

20477

4098

1

2

24578

9000

2

808

62248

1 A Eniso - 2009/2010

12


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.