Académique Documents
Professionnel Documents
Culture Documents
Systèmes d’Exploitation
Cours 8/13 : Mémoire segmentée
Nicolas Sabouret
Université Paris-Sud
Licence 3 - semestre S5
Plan
1 Segmentation simple
3 Conclusion
Plan
1 Segmentation simple
Principe général
Mise en œuvre
Avantages et limites
3 Conclusion
Idée
Découper en tenant compte de la structure du processus !
(code + données)
Mémoire segmentée
Principe général
Structurer la mémoire en blocs de données/routines indépendants :
Exemples
Pile
Table des symboles
Programme principal
Fonction
Bibliothèque
...
Structure en segments
Processus
Structure en segments
processus
Structure en segments
processus
segment 0
Espace d’adressage logique
Structure en segments
processus
base
offset
segment 0
Espace d’adressage logique
Structure en segments
processus
base
Routine printf x86 (stdio)
offset
offset
mov eax, 4 ; Appel de sys write
segment 0 mov ebx, 1 ; Sortie standard STDOUT
mov ecx, Buffer ; Chaine à afficher
mov edx, BufferSize ; Taille de la chaine
Espace d’adressage logique int 80h ; Interruption du kernel
mov eax, 1 ; Appel de sys exit
mov ebx, 0 ; Code de retour
int 80h ; Interruption du kernel
Adressage
Adresse logique
Numéro de segment (selecteur)+ décalage
Résolution
Memory Management Unit
Transformer segment + décalage en adresse physique
Vérifier que le décalage ne sort pas du segment
Adressage
Adresse logique
Numéro de segment (selecteur)+ décalage
Résolution
Memory Management Unit
Transformer segment + décalage en adresse physique
Vérifier que le décalage ne sort pas du segment
→ erreur de segmentation
offset
segment ?!
À la compilation
Ü dépendant du langage
Chaque segment est référencé par un numéro
→ table des segments (1 par processus)
À la compilation
Ü dépendant du langage
Chaque segment est référencé par un numéro
→ table des segments (1 par processus)
Exemple : Java
Méthodes
Tas (fonctions, attributs static)
Pile (1 pour chaque thread)
Class loader
À la compilation
Ü dépendant du langage
Chaque segment est référencé par un numéro
→ table des segments (1 par processus)
Exemple : C
Variables globales (tas)
Fonctions de bibliothèques (1 par bibliothèque)
Programme principal et pile
Résolution d’adresse
Principe
Géré au niveau de la MMU
Numéro de segment (selecteur) → adresse de base
Base + décalage → adresse physique
Erreurs de segmentations
Résolution d’adresse
Principe
Géré au niveau de la MMU
Numéro de segment (selecteur) → adresse de base
Base + décalage → adresse physique
Erreurs de segmentations
Résolution d’adresse
RAM
UC
Résolution d’adresse
RAM
adresse logique
UC
Résolution d’adresse
RAM
adresse logique
UC
numéro de segment décalage
Résolution d’adresse
RAM
adresse logique
UC
numéro de segment décalage
Résolution d’adresse
RAM
adresse logique
UC
numéro de segment décalage
Résolution d’adresse
RAM
adresse logique
UC
numéro de segment décalage
erreur de segmentation
Résolution d’adresse
RAM
adresse logique
UC
numéro de segment décalage
erreur de segmentation
Résolution d’adresse
RAM
adresse logique
UC
numéro de segment décalage
erreur de segmentation
Résolution d’adresse
RAM
adresse logique
base
UC
numéro de segment décalage
décalage
segment
Memory Management Unit
erreur de segmentation
6A B5 C8 F526A FF 5E 4B C2
+ 73 82 21 + 6BD12 + 21 FD AA DB
------------ -------- ---------------
Partage de segments
Un même segment (de code) utilisé par plusieurs processus
Exemple : bibliothèques
1 segment pour la bibliothèque
N processus utilisent le même segment
base limite
main stdio 0 3000 1000
main 0
1 4000 5F21
segment 0 segment 1 Table des segments
Mémoire logique processus 0 Processus 0 stdio
base limite
main stdio 0 A7D3 1000
main 1
1 4000 5F21
segment 0 segment 1 Table des segments
Mémoire logique processus 1 Processus 0
RAM
Partage de segments
Problème
Résolution d’adresse des segments partagés
Appel de routine = saut d’adresse
Utilisation de stub : code remplaçable
→ Adresse définie lors du premier chargement de la bibliothèque !
Partage de segments
Problème
Résolution d’adresse des segments partagés
Appel de routine = saut d’adresse
Utilisation de stub : code remplaçable
→ Adresse définie lors du premier chargement de la bibliothèque !
Protection
Les segments peuvent être marqué Read, Write ou ReadWrite.
→ bit de protection dans la table des segments
Segmentation : avantages
Partage de code
3 Bibliothèques, processus multi-utilisateurs
7 Plus difficile qu’avec la pagination (stub)
3 . . . mais résolu à la compilation + chargement par l’OS
Protection de la mémoire
Ü Par segment et par processus !
Segmentation : limite
Solution ?
Segmentation : limite
Solution
Segmentation avec pagination
Plan
1 Segmentation simple
3 Conclusion
Principe général
Idée
Paginer les segments
Ü Réduit la fragmentation et les problème d’allocation
Ü Permet le partage et l’adressage des segments
Adresse logique = sélecteur + décalage1
résolu par segmentation donne :
Adresse linéaire = (répertoire +)1 page + décalage2
Adresse physique = cadre de page + décalage2
1
si pagination à 2 niveaux
Info32b Systèmes d’Exploitation Nicolas Sabouret 17/32
Segmentation simple Segmentation avec pagination Conclusion
Principe Exemples Exercice
Principe général
Idée
Paginer les segments
Ü Réduit la fragmentation et les problème d’allocation
Ü Permet le partage et l’adressage des segments
Adresse logique = sélecteur + décalage1
résolu par segmentation donne :
Adresse linéaire = (répertoire +)1 page + décalage2
Adresse physique = cadre de page + décalage2
Implémentation : MMU
UC
RAM
Implémentation : MMU
adresse logique
UC sélecteur décalage
RAM
Implémentation : MMU
adresse logique
UC sélecteur décalage
limite base
RAM
Implémentation : MMU
adresse logique
UC sélecteur décalage
RAM
Implémentation : MMU
adresse logique
UC sélecteur décalage
adresse linéaire
segfault ≤ limite base + répertoire page décalage’
RAM
Implémentation : MMU
adresse logique
UC sélecteur décalage
adresse linéaire
segfault ≤ limite base + répertoire page décalage’
RAM
Implémentation : MMU
adresse logique
UC sélecteur décalage
adresse linéaire
segfault ≤ limite base + répertoire page décalage’
RAM
Implémentation : MMU
adresse logique
UC sélecteur décalage
adresse linéaire
segfault ≤ limite base + répertoire page décalage’
RAM
Implémentation : MMU
adresse logique
UC sélecteur décalage
adresse linéaire
cadre de page
segfault ≤ limite base + répertoire page décalage’
RAM
Implémentation : MMU
adresse logique
UC sélecteur décalage
adresse linéaire
cadre de page
segfault ≤ limite base + répertoire page décalage’
RAM
Implémentation : MMU
adresse linéaire
cadre de page
segfault ≤ limite base + répertoire page décalage’
RAM
Architectures x386
Intel 80386
Architecture proposée en 1986, jusque dans les années 2000
Processeur CISC (Complex Instruction Set) 32 bits
Instruction sur plusieurs mots de 32 bits
Adressage physique sur 32 bits
Ü RAM max = 4Go
Mémoire virtuelle
4 Go par processus
Ü Chaque processus adresse potentiellement l’ensemble de la
RAM
Info32b Systèmes d’Exploitation Nicolas Sabouret 19/32
Segmentation simple Segmentation avec pagination Conclusion
Principe Exemples Exercice
Architectures x386
Segmentation
214 segments par processus (16 384 segments)
213 segments globaux (8 192 segments)
→ segments partagés entre plusieurs processus
(ex : bibliothèques)
213 segments locaux (8 192 segments)
→ données et code propre au processus
Architectures x386
Segmentation
214 segments par processus (16 384 segments)
213 segments globaux (8 192 segments)
→ segments partagés entre plusieurs processus
(ex : bibliothèques)
213 segments locaux (8 192 segments)
→ données et code propre au processus
Adresse logique
16 bits sélecteur =
13 bits numéro de segment + 1 bit global/local + 2 bits read-write
Architectures x386
Segmentation
214 segments par processus (16 384 segments)
213 segments globaux (8 192 segments)
→ segments partagés entre plusieurs processus
(ex : bibliothèques)
213 segments locaux (8 192 segments)
→ données et code propre au processus
Taille maximale du segment = 216 octets (256 Ko)
→ max 4Go par processus
Architectures x386
Pagination
Adresse linéaire sur 32 bits
base (32 bits) + décalage (16 bits) → 32 bits
Pages de 4Ko (212 octets)
Pagination à 2 niveaux
Architectures x386
Pagination
Adresse linéaire sur 32 bits
base (32 bits) + décalage (16 bits) → 32 bits
Pages de 4Ko (212 octets)
Pagination à 2 niveaux
Adresse linéaire
10 bits répertoire répertoire = 210 × 32 bits = 4Ko
12 bits décalage
Segmentation
L’OS réduit la capacité de segmentation
Ü permet d’être compatible avec plusieurs architectures
Exemple
Linux ≥2.0 sur architecture 80386 (32 bit)
Ü 2 niveaux RW (user/kernel) au lieu de 4 !
00=noyau, 11=utilisateur
Ü 4 types de segments :
Code
Données
État du processus (PCB) = 1 seul segment
Table des descripteurs (du processus) = 1 seul segment
Remarques
Exercice
Énoncé général
On se place dans un système de mémoire de 1Go de mémoire géré
de manière paginée et segmentée avec des cadres de page de 4Ko.
Chaque processus peut utiliser jusqu’à 1024 segments. Chaque
segment peut occuper 4Mo de mémoire. Le système d’exploitation
autorise jusqu’à 1024 processus.
Exercice
Énoncé général
On se place dans un système de mémoire de 1Go de mémoire géré
de manière paginée et segmentée avec des cadres de page de 4Ko.
Chaque processus peut utiliser jusqu’à 1024 segments. Chaque
segment peut occuper 4Mo de mémoire. Le système d’exploitation
autorise jusqu’à 1024 processus.
Exercice
Énoncé général
On se place dans un système de mémoire de 1Go de mémoire géré
de manière paginée et segmentée avec des cadres de page de 4Ko.
Chaque processus peut utiliser jusqu’à 1024 segments. Chaque
segment peut occuper 4Mo de mémoire. Le système d’exploitation
autorise jusqu’à 1024 processus.
Question 1
Quelle est la taille (en bits) de l’adresse logique ?
Exercice
Énoncé général
On se place dans un système de mémoire de 1Go de mémoire géré
de manière paginée et segmentée avec des cadres de page de 4Ko.
Chaque processus peut utiliser jusqu’à 1024 segments. Chaque
segment peut occuper 4Mo de mémoire. Le système d’exploitation
autorise jusqu’à 1024 processus.
Question 1
Quelle est la taille (en bits) de l’adresse logique ?
Réponse
210 segments de 222 octets → 232 octets
Ü 32 bits
Info32b Systèmes d’Exploitation Nicolas Sabouret 24/32
Segmentation simple Segmentation avec pagination Conclusion
Principe Exemples Exercice
Exercice
Énoncé général
On se place dans un système de mémoire de 1Go de mémoire géré
de manière paginée et segmentée avec des cadres de page de 4Ko.
Chaque processus peut utiliser jusqu’à 1024 segments. Chaque
segment peut occuper 4Mo de mémoire. Le système d’exploitation
autorise jusqu’à 1024 processus.
Question 2
Quelle est la taille (en bits) de l’adresse physique ?
Exercice
Énoncé général
On se place dans un système de mémoire de 1Go de mémoire géré
de manière paginée et segmentée avec des cadres de page de 4Ko.
Chaque processus peut utiliser jusqu’à 1024 segments. Chaque
segment peut occuper 4Mo de mémoire. Le système d’exploitation
autorise jusqu’à 1024 processus.
Question 2
Quelle est la taille (en bits) de l’adresse physique ?
Réponse
RAM = 230 octets
Ü 30 bits
Info32b Systèmes d’Exploitation Nicolas Sabouret 25/32
Segmentation simple Segmentation avec pagination Conclusion
Principe Exemples Exercice
Exercice
Énoncé général
On se place dans un système de mémoire de 1Go de mémoire géré
de manière paginée et segmentée avec des cadres de page de 4Ko.
Chaque processus peut utiliser jusqu’à 1024 segments. Chaque
segment peut occuper 4Mo de mémoire. Le système d’exploitation
autorise jusqu’à 1024 processus.
Question 3
Quelle est la taille (en bits) de l’adresse linéaire ?
Exercice
Énoncé général
On se place dans un système de mémoire de 1Go de mémoire géré
de manière paginée et segmentée avec des cadres de page de 4Ko.
Chaque processus peut utiliser jusqu’à 1024 segments. Chaque
segment peut occuper 4Mo de mémoire. Le système d’exploitation
autorise jusqu’à 1024 processus.
Question 3
Quelle est la taille (en bits) de l’adresse linéaire ?
Réponse
Il faut pouvoir adresser tout le processus (virtuel) :
Ü 32 bits : 20 (page) + 12 (décalage)
Info32b Systèmes d’Exploitation Nicolas Sabouret 26/32
Segmentation simple Segmentation avec pagination Conclusion
Principe Exemples Exercice
Exercice
Énoncé général
On se place dans un système de mémoire de 1Go de mémoire géré
de manière paginée et segmentée avec des cadres de page de 4Ko.
Chaque processus peut utiliser jusqu’à 1024 segments. Chaque
segment peut occuper 4Mo de mémoire. Le système d’exploitation
autorise jusqu’à 1024 processus.
Question 4
Combien y a-t-il de cadres dans la RAM
Exercice
Énoncé général
On se place dans un système de mémoire de 1Go de mémoire géré
de manière paginée et segmentée avec des cadres de page de 4Ko.
Chaque processus peut utiliser jusqu’à 1024 segments. Chaque
segment peut occuper 4Mo de mémoire. Le système d’exploitation
autorise jusqu’à 1024 processus.
Question 4
Combien y a-t-il de cadres dans la RAM
Réponse
230 ÷ 212 = 218
Exercice
Exercice
Réponse
Chaque processus dispose de 230 ÷ 28 = 222 octets de RAM
(4Mo).
Le processus est plus gros (224 ) : il peut faire un défaut de
page.
Probabilité = 1 − 222−24 = 0,75.
Exercice
Segmentation
segment limite base
0DE 0A 7E 5F 1D FF A0 21
Soit la table de descripteurs : 174 05 DD 24 03 D1 02 81
3B1 37 FB 21 00 7D EF 0D
5D0 00 05 E2 06 78 BF 63
Question 6
Donnez l’adresse linéaire correspondant à l’adresse logique :
5D 04 31 FF
Exercice
Segmentation
segment limite base
0DE 0A 7E 5F 1D FF A0 21
Soit la table de descripteurs : 174 05 DD 24 03 D1 02 81
3B1 37 FB 21 00 7D EF 0D
5D0 00 05 E2 06 78 BF 63
Question 6
Donnez l’adresse linéaire correspondant à l’adresse logique :
5D 04 31 FF
Réponse
Les 10 premiers bits donnent le numéro de segment.
0101 1101 0000 1000 0011 0001 1111 1111
→ 0001 0111 0100 = 174 (numéro de segment)
Exercice
Segmentation
segment limite base
0DE 0A 7E 5F 1D FF A0 21
Soit la table de descripteurs : 174 05 DD 24 03 D1 02 81
3B1 37 FB 21 00 7D EF 0D
5D0 00 05 E2 06 78 BF 63
Question 6
Donnez l’adresse linéaire correspondant à l’adresse logique :
5D 04 31 FF
Réponse
ligne 174 : limite = 05 DD 24
Les 22 derniers bits donnent le décalage : 04 31 FF ≤ 05 DD 24
→ pas d’erreur de segmentation
Exercice
Segmentation
segment limite base
0DE 0A 7E 5F 1D FF A0 21
Soit la table de descripteurs : 174 05 DD 24 03 D1 02 81
3B1 37 FB 21 00 7D EF 0D
5D0 00 05 E2 06 78 BF 63
Question 6
Donnez l’adresse linéaire correspondant à l’adresse logique :
5D 04 31 FF
Réponse
ligne 174 : base = 03 D1 02 81
Les 22 derniers bits donnent le décalage : 04 31 FF + 03 D1 02 81
→ 03 D5 34 80 (adresse linéaire)
Exercice
Pagination
page cadre
... ...
Soit la table de pages : 03D52 00031
03D53 02B7A
... ...
Question 7
Donnez l’adresse physique correspondant à l’adresse logique :
5D 04 31 FF
Exercice
Pagination
page cadre
... ...
Soit la table de pages : 03D52 00031
03D53 02B7A
... ...
Question 7
Donnez l’adresse physique correspondant à l’adresse logique :
5D 04 31 FF
Réponse
Rappel : adresse linéaire = 03 D5 34 80, cadres de 4 Ko
Exercice
Pagination
page cadre
... ...
Soit la table de pages : 03D52 00031
03D53 02B7A
... ...
Question 7
Donnez l’adresse physique correspondant à l’adresse logique :
5D 04 31 FF
Réponse
Rappel : adresse linéaire = 03 D5 34 80, cadres de 4 Ko
Les 12 derniers bits donnent le décalage : 480
0000 0011 1101 1001 0011 0100 1000 0000
Exercice
Pagination
page cadre
... ...
Soit la table de pages : 03D52 00031
03D53 02B7A
... ...
Question 7
Donnez l’adresse physique correspondant à l’adresse logique :
5D 04 31 FF
Réponse
Rappel : adresse linéaire = 03 D5 34 80, cadres de 4 Ko
Les 20 premiers bits donnent le décalage : 03D53
0000 0011 1101 1001 0011 0100 1000 0000
Exercice
Pagination
page cadre
... ...
Soit la table de pages : 03D52 00031
03D53 02B7A
... ...
Question 7
Donnez l’adresse physique correspondant à l’adresse logique :
5D 04 31 FF
Réponse
Remplacer le numéro de page par le numéro de cadre :
03 D5 34 80 → 02 B7 A4 80
Exercice
Pagination
page cadre
... ...
Soit la table de pages : 03D52 00031
03D53 02B7A
... ...
Question 7
Donnez l’adresse physique correspondant à l’adresse logique :
5D 04 31 FF
Réponse
Remplacer le numéro de page par le numéro de cadre :
03 D5 34 80 → 02 B7 A4 80
Ü 02 B7 A4 80 (adresse physique)
Info32b Systèmes d’Exploitation Nicolas Sabouret 30/32
Segmentation simple Segmentation avec pagination Conclusion
Plan
1 Segmentation simple
3 Conclusion