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
n
programme principal, procédure, fonction, méthode, objet, variables locales, variables globales, pile, etc…
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
1
Comment un utilisateur voit un programme ?
3
Les segments comme unités d’alloc mémoire 0 3
0 1
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
2
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
3
Détails n n
L’adresse logique consiste en une paire: 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
4
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
Si oui Défaut de segment
Vérifier si table des Pages du segment En mémoire.
La localiser
Examiner l’entrée dans la table des pages, de la page virtuelle demandée ( est-elle en mémoire ? )
sinon
? Si oui
Trap
Extraire de la table des pages, l’adresse de base de la page
Défaut de page
Ajouter le déplacement
Le déplacement est ajoutée à l’adresse de base pour obtenir l’adresse du mot en mémoire.
Lire/écrire
9
Schéma du matériel de segmentation Adresse logique comporte deux champs: , 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
5
Architecture de la Segmentation n
Translation n n
n
Protection n
n
read/write/execute privilèges
Partage. n n
n
dynamique Basé sur la table des segments
Segments partagé Même numéro de segment
Allocation. n
first fit/best fit, etc…
n
fragmentation externe
11
Exemple de Segmentation
12
6
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
Pagination
Segmentation
Le programme doit-il Connaître la technique utilisée ?
Non
Oui
Combien y a-t-il d’espace d’adressage linéaires ?
1
Plusieurs
L’espace total d’adressage peut il dépasser la taille de la mémoire ?
Oui
Oui
Les proc édures et les données peuvent-elles être séparées et protégées séparément ?
Non
oui
Peut-on traiter facilement des tables dont la taille varient ?
Non
Oui
Le partage de procédures entre utilisateur est-il simplifié ?
Non
Oui
Pourquoi cette technique a-t-elle été inventée ?
Pour obtenir un grand espace d’adressage linéaire sans avoir à acheter de la mémoire
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.
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.
Facilité de programmation Modularité n protection - partage
n
n
n
n
14
7