Gestion de la Mémoire

•Segmentation pure •Segments paginés

1

Segmentation
n

n

La segmentation est un schéma de gestion de la mémoire basée sur la vue qu’un utilisateur peut avoir d’un programme. Un programme est composé de segments. Un segment est une unité logique représentant l’un des éléments suivants:
n n n n n n n n

programme principal, procédure, fonction, méthode, objet, variables locales, variables globales, pile, etc…

n

La segmentation permet d’avoir deux dimensions dans l’espace d’adressage (numéro de segment et une adresse à l’intérieur de celui-ci)
n

Les données ou bien la pile peuvent changer de taille plus facilement sans que cela affecte d’autres segments.
2

Comment un utilisateur voit un programme ?

3

Les segments comme unités d’alloc mémoire
0 0 1 3

2 3

1 2

espace usager

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

Segmentation

Mémoire segment ée exploitée par les tables d’un compilateur et permettant à chaque table de croître ou de diminuer indépendamment des autres. 5

Mécanisme pour la segmentation
n n

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

0 3

segment courant

Adr de 3 Adr de 2 Adr de 1 Adr de 0

1 2

tableau de segments mémoire physique
6

Détails
n n

L’adresse logique consiste en une paire: <No de segm, décalage> n où décalage est l’adresse dans le segment (qui à son tour est constitué d’un numéro de page et d’un mot dans la page)

7

Implementation de la Segmentation pure

(a)-(d) Evolution de la fragmentation externe (e) Compactage de la mémoire
8

A chaque référence mémoire l’algorithme suivant est exécuté
Récupérer descripteur de segment

Le num éro de segment permet de retrouver le descripteur de segment.

sinon

?
Trap Défaut de segment La localiser Si oui

Vérifier si table des Pages du segment En mémoire.

sinon

?
Trap Défaut de page Si oui Extraire de la table des pages, l’adresse de base de la page

Examiner l’entrée dans la table des pages, de la page virtuelle demandée ( est-elle en mémoire ? )

Ajouter le déplacement

Le déplacement est ajoutée à l’adresse de base pour obtenir l’adresse du mot en mémoire. 9

Lire/écrire

Schéma du matériel de segmentation
Adresse logique comporte deux champs: <numsegment, déplacement>, Table des Segments – Chaque entrée de la table comporte:
– base – pointe sur l’adresse physique de début du segment dans la mémoire physique. – limit – précise la longueur du segment.

10

Architecture de la Segmentation
n

Translation
n n

dynamique Basé sur la table des segments read/write/execute privilèges Segments partagé Même numéro de segment first fit/best fit, etc… fragmentation externe

n

Protection
n

n

Partage.
n n

n

Allocation.
n n

11

Exemple de Segmentation

12

Partage de segments: le segment 0 est partagé

P.ex: DLL utilisé par plusieurs usagers

13

Comparaison entre la pagination et la segmentation

Considérations
Le programme doit-il Connaître la technique utilisée ? Combien y a-t-il d’espace d’adressage linéaires ? L’espace total d’adressage peut il dépasser la taille de la mémoire ? Les proc édures et les données peuvent-elles être séparées et protégées séparément ? Peut-on traiter facilement des tables dont la taille varient ? Le partage de procédures entre utilisateur est-il simplifié ? Pourquoi cette technique a-t-elle été inventée ?

Pagination
Non 1 Oui

Segmentation
Oui Plusieurs Oui

Non

oui

Non Non Pour obtenir un grand espace d’adressage linéaire sans avoir à acheter de la mémoire

Oui Oui Pour permettre la séparation des programmes et des données dans des espaces d’adressage logiquement indépendants et pour faciliter le partage et la protection. Facilité de programmation Modularité n protection - partage
n n

Avantages

Taille des pages constantes Non-conservation en mémoire de l’intégralité d’un segment si seule une partie de celui -ci est utilisée.
n n

14

Sign up to vote on this title
UsefulNot useful