Вы находитесь на странице: 1из 17

Gestion de la mémoire réelle

• Généralités

• Système monoprogrammé
– Organistation de la mémoire et protection du SE
– Les overlays (segments de recouvrement)

• Système multiprogrammé
– Partitions fixes
– Partitions variables

• État de la mémoire :

• Politiques de placement et de libération d’espace

• Le Va-et-vient (swapping)

Systèmes d’exploitation Génie Informatique


École Polytechnique de Montréal Chapitre 8.1

Généralités
• L’espace d’adressage d’un processus est généré par le compilateur et l’éditeur de liens.

Modules Traducteur Modules


source objet

Éditeur
Bibliothèque de liens
statique

Phases de génération de l’espace Module


exécutable
d’adressage
Chargeur

Bibliothèque Liaison et
dynamique Chargement Image
dynamiques mémoire

Systèmes d’exploitation Génie Informatique


École Polytechnique de Montréal Chapitre 8.2

1
Généralités (2)
Espace d’adressage linéaire

Systèmes d’exploitation Génie Informatique


École Polytechnique de Montréal Chapitre 8.3

Généralités (3)
Espace d’adressage non linéaire : plusieurs segments

Systèmes d’exploitation Génie Informatique


École Polytechnique de Montréal Chapitre 8.4

2
Généralités (4)
Rôle du gestionnaire de la mémoire
• Toute instruction ou donnée de l’espace d’adressage doit être chargée en mémoire
centrale (principale, physique) avant d’être traitée par un processeur.

• Le gestionnaire de la mémoire est le composant du système d’exploitation qui se charge


de gérer l’allocation d’espace mémoire aux processus à exécuter :

– Comment organiser la mémoire ? (une ou plusieurs partitions, le nombre et la taille


des partitions fixes ou variables au cours du temps).

– Faut-il allouer une zone contiguë à chaque processus à charger en mémoire ? Faut-il
allouer tout l’espace nécessaire à l’exécution du processus entier ? (politique
d’allocation).

– Comment mémoriser l’état de la mémoire? Parmi les parties libres en mémoire,


lesquelles allouées au processus? (politique de placement)

– S’il n’y a pas assez d’espace en mémoire, doit-on libérer de l’espace en retirant des
parties ou des processus entiers? Si oui lesquels ? (politique de remplacement).

– Les adresses figurant dans les instructions sont-elles relatives? Si oui, comment les
convertir en adresses physiques.

– Si plusieurs processus peuvent être résident en mémoire, comment assurer la


protection des processus (éviter qu’un processus soit altéré par un autre?
Systèmes d’exploitation Génie Informatique
École Polytechnique de Montréal Chapitre 8.5

Généralités (5)
Exigences

• Efficacité : la mémoire doit être allouée équitablement et à moindre coût


tout en assurant une meilleure utilisation des ressources (mémoire,
processeurs et disque).

• Protection : Les processus ne peuvent pas se corrompre.

• Transparence : Chacun des processus doit ignorer l’existence des autres


en mémoire.

• Relocation : la possibilité de déplacer un processus en mémoire (lui


changer de place).

Systèmes d’exploitation Génie Informatique


École Polytechnique de Montréal Chapitre 8.6

3
Système monoprogrammé
Organisation de la mémoire
• Un seul processus en mémoire.

Cas (b): ordinateurs de poche ou systèmes embarqués


Cas (c) : MS-DOS
Systèmes d’exploitation Génie Informatique
École Polytechnique de Montréal Chapitre 8.7

Système monoprogrammé (2)


Protection (cas de b)

• Pour protéger le code et les données du SE des programmes des


utilisateurs, on utilise un registre limite qui indique la limite de la zone
réservée aux utilisateurs.

• Chaque adresse référencée par un processus est comparée avec le


registre limite.
Registre limite

CPU adresse > Mémoire


reg. lim

Erreur:
Adressage illégal
Systèmes d’exploitation Génie Informatique
École Polytechnique de Montréal Chapitre 8.8

4
Système monoprogrammé (3)
Overlays (segments de recouvrement)

• Pour permettre l’exécution de processus dont la taille dépasse celle de la


mémoire, on offrait la possibilité à l'
utilisateur de :

– Diviser son programme en plusieurs sections (segments de


recouvrement : overlays),

– Gérer le chargement et le retrait des sections du programme de la


mémoire.

• Inconvénients :
– Cela complique la tâche aux programmeurs.
– Mauvaise utilisation des ressources.

Systèmes d’exploitation Génie Informatique


École Polytechnique de Montréal Chapitre 8.9

Système monoprogrammé (3’)


Overlays (segments de recouvrement)

Exemple :

main (15k)

f1 (16k) f2 (13k)

f3 (8k) f4 (6k) f5 (10k)

Sans recouvrement : 15 +16 + 13 + 8 + 6 + 10 = 68k


Avec recouvrement : ?

Systèmes d’exploitation Génie Informatique


École Polytechnique de Montréal Chapitre 8.10

5
Système multiprogrammé

• La mémoire est partagée entre le système d'


exploitation et plusieurs
processus.

• Optimisation du taux d'utilisation du processeur en réduisant notamment


les attentes sur des entrées-sorties.

• Deux préoccupations:

– Comment permettre efficacement la cohabitation de plusieurs


processus ?

– Comment assurer leur protection ?

Systèmes d’exploitation Génie Informatique


École Polytechnique de Montréal Chapitre 8.11

Système multiprogrammé (2)

Degree of multiprogramming

Taux d’utilisation = 1 – Pn où P taux d’attente d’E/S et n nombre de processus.

Systèmes d’exploitation Génie Informatique


École Polytechnique de Montréal Chapitre 8.12

6
Système multiprogrammé (3)
avec Partitions fixes

• La mémoire réservée aux utilisateurs est divisée en un ensemble de


partitions.

• Le nombre et la taille des partitions sont fixés à l'


avance (lors du
chargement du système).

• Les partitions peuvent être égales ou non.

• La choix du nombre et de la taille des partitions dépend du niveau


de multiprogrammation voulu.

• On peut avoir une file par partition ou une file globale.

• L’unité d’allocation est une partition.

Systèmes d’exploitation Génie Informatique


École Polytechnique de Montréal Chapitre 8.13

Système multiprogrammé (4)


avec partitions fixes

• Utilisée par OS/360 sur des mainframes IBM durant de nombreuses


années (une seule file).

Systèmes d’exploitation Génie Informatique


École Polytechnique de Montréal Chapitre 8.14

7
Système multiprogrammé avec partitions fixes : (5)
Translation d’adresse et protection

• Comme on ne peut prévoir dans quelle partiton sera chargé un processus,


les adresses attribuées par le compilateur et l’éditeur de liens aux
instructions et aux données d’un programme doivent être relatives à une
adresse 0.

• Ces adresses relatives seront ensuite translatées en adresse physiques.

• La translation peut se faire lors du chargement du processus (utilisée


dans OS/360 d’IBM. Les adresses relatives sont remplacées par des
adresses absolues (en ajoutant à chaque fois l’adresse de début de la
partition).

• Cette solution n’est pas intéressante car en remplaçant les adresses


relatives en adresses absolues, il ne sera plus possible de déplacer le
processus.

Systèmes d’exploitation Génie Informatique


École Polytechnique de Montréal Chapitre 8.15

Système multiprogrammé avec partitions fixes (6)


Translation d’adresse et protection

• Pour éviter la translation d’adresse au cours du chargement d’un


processus, une autre solution consiste à doter la machine de 2 registres
spéciaux :
– Le registre de base ;
– Le registre limite.
• Quand un processus est élu (par l’ordonnanceur), le SE charge dans le
registre de base l’adresse absolue du début de sa partition et dans le
registre limite la longueur de la partition.

• Durant l’exécution d’une instruction, chaque adresse relative référencée par


l’instruction est vérifiée en la comparant avec le contenu du registre limite,
afin d’interdire tout accès en dehors de la partition courante.

• Les adresses physiques sont obtenues en ajoutant le contenu du registre


de base aux adresses relatives.

Avantage : le processus peut être déplacé en mémoire.

Systèmes d’exploitation Génie Informatique


École Polytechnique de Montréal Chapitre 8.16

8
Système multiprogrammé avec partitions fixes (7)
Translation d’adresse et protection

Registre limite Registre base

SE

V
CPU adresse < +

Mémoire
F

Erreur: Adressage illégal

Cette translation doit être rapide.

Systèmes d’exploitation Génie Informatique


École Polytechnique de Montréal Chapitre 8.17

Système multiprogrammé avec partitions fixes (8)


Problème : Fragmentation interne

SE
• Fragmentation interne
est causée par la Partition 2K
partie d'une partition
non utilisée par un Fragmentation
processus. interne Partition 4K

Partition 6K

Partition
vide
Partition 6K

Mémoire
Systèmes d’exploitation Génie Informatique
École Polytechnique de Montréal Chapitre 8.18

9
Système multiprogrammé avec partitions variables (9)
• Initialement, l’espace mémoire réservée aux utilisateurs constitue une seule
partition.

• Quand un nouveau processus doit être chargé, on lui alloue une zone contiguë
de taille suffisamment grande pour le contenir.

• Le nombre et les tailles des partitions varient au cours du temps.

• Cette forme d' allocation conduit éventuellement à l'


apparition de trous trop petits
pour les allouer à d’autres processus : c'
est la fragmentation externe

• Solutions:
– Compactage (coûteux et exige que les processus soient relocalisables)
– Allocation discontinue.

Systèmes d’exploitation Génie Informatique


École Polytechnique de Montréal Chapitre 8.19

Système multiprogrammé avec partitions variables (10)


Exemple
0K 0K
Moniteur Moniteur
40K 40K
processus 1 processus 1

100K 100K

Fin du processus 2
processus 2

200K 200K
processus 3 processus 3
230K 230K
256K 256K

a) b)
Systèmes d’exploitation Génie Informatique
École Polytechnique de Montréal Chapitre 8.20

10
Système multiprogrammé avec partitions variables (11)
Exemple (suite)
0K 0K
Moniteur Moniteur
40K 40K
processus 1 processus 5
90K
100K 100K

processus 4 processus 4

170K 170K
200K 200K
processus 3 processus 3
230K 230K
256K 256K

c) d)
Systèmes d’exploitation Génie Informatique
École Polytechnique de Montréal Chapitre 8.21

Système multiprogrammé avec partitions variables (12)


Compactage de mémoire (opération coûteuse)

0K 0K
Moniteur Moniteur
40K 40K
processus 5 processus 5
90K 90K
100K

processus 4 processus 4
160K
170K processus 3
200K 190K
processus 3
230K
256K 256K

Une machine de 256Mo de RAM (4 octets en 40ns) nécessite 2,7 s


Systèmes d’exploitation Génie Informatique
École Polytechnique de Montréal Chapitre 8.22

11
État de la mémoire

• Pour gérer l'


allocation et la libération de l'
espace mémoire, le gestionnaire
doit :

– Connaître l'
état de la mémoire :
• Tables de bits,
• Listes chaînées.

– Avoir une politique de placement et de récupération d’espace.


• Premier ajustement
• Meilleur ajustement
• Pire ajustement
• Par subdivision

Systèmes d’exploitation Génie Informatique


École Polytechnique de Montréal Chapitre 8.23

État de la mémoire (2)


Table de bits (Bitmaps)

0 8 16 24 32 …

P1 P2 P3

• La mémoire est un ensemble d’unités d’allocation.


11111100 Un bit est associé à chaque unité.
00001111
• Lorsqu'on doit ramener un processus de k unités, le
11111100 gestionnaire de la mémoire doit alors parcourir la
00000000 table des bits à la recherche de k zéros consécutifs.

000111… • Cette méthode est rarement utilisée car la méthode


de recherche est lente (k zéros consécutifs).

Systèmes d’exploitation Génie Informatique


École Polytechnique de Montréal Chapitre 8.24

12
État de la mémoire (3)
Liste chaînée
a)
0 5 7 12 32 35

occupé libre

O L O L O

0 5 7 12 32

5 2 5 20 3

b)

Systèmes d’exploitation Génie Informatique


École Polytechnique de Montréal Chapitre 8.25

État de la mémoire (4)


Liste chaînée

Mémorisation de l’état de la mémoire cas de BSD 4.


Systèmes d’exploitation Génie Informatique
École Polytechnique de Montréal Chapitre 8.26

13
Politiques de placement

occupé libre

Systèmes d’exploitation Génie Informatique


École Polytechnique de Montréal Chapitre 8.27

Politiques de placement (2)

• Premier ajustement (first fit): La première zone qui convient.

• Meilleur ajustement (best fit): La zone qui laisse le plus petit espace non
occupé.

• Pire ajustement (worst fit): La zone qui laisse le plus grand espace non
occupé.

• Si la zone sélectionnée est plus grande que celle du processus à charger,


elle est scindée en deux parties : la première est alloué au processus, la
seconde est libre.

Systèmes d’exploitation Génie Informatique


École Polytechnique de Montréal Chapitre 8.28

14
Politiques de placement (3)
Simulations (Shore, 1975)

Performants
Performance

Requêtes

Systèmes d’exploitation Génie Informatique


École Polytechnique de Montréal Chapitre 8.29

Politiques de placement (4)


Par subdivision

• Les tailles des blocs sont des puissances de 2.

• Initialement, on a un seul bloc libre.

• Supposons que la taille maximale est de 1 Mo et qu’un processus de 70 Ko demande à


être chargé en mémoire.

• Le gestionnaire détermine d’abord la taille du bloc à allouer (égale à la plus petite


puissance de 2 supérieure à 70Ko, soit 128 Ko).

• Comme il n’y a pas de blocs libres de taille 128 Ko, 256 Ko ou 512 Ko, la mémoire de 1 Mo
est divisée en deux blocs de 512 Ko.

• Le premier bloc est divisé en deux blocs de 256 Ko. Enfin, le premier des deux blocs
nouvellement créés est divisé en deux blocs de 128 Ko.

• L’espace alloué au processus est situé entre l’adresse 0 et 128 Ko.

• L’allocation par subdivision est rapide mais elle est assez inefficace en ce qui concerne
l’utilisation de la mémoire (arrondir les tailles à une puissance de 2, fragmentation interne).

Systèmes d’exploitation Génie Informatique


École Polytechnique de Montréal Chapitre 8.30

15
Libération d’espace

• 4 cas peuvent se présenter lors de la libération de l’espace occupé par un processus X.

1er cas :

A X B A B

Modifier l’indicateur de l’état du segment (il passe à libre)

2ième cas

A X A

ième
3 cas
X B B

Modifier l’indicateur de l’é tat du segment (il passe à libre) fusionner les deux segments.

4ième cas

Systèmes d’exploitation Génie Informatique


École Polytechnique de Montréal Chapitre 8.31

Le va-et-vient (Swapping)

• Le va-et-vient est mis en œuvre lorsque tous les processus ne peuvent pas
tenir simultanément en mémoire.

• On doit alors en déplacer temporairement certains sur une mémoire


provisoire, en général, une partie réservée du disque (mémoire de réserve,
swap area ou backing store).

• Sur le disque, la zone de va-et-vient d’un processus peut être allouée à la


demande. Quand un processus est déchargé de la mémoire centrale, on lui
recherche une place.

• Les places de va-et-vient sont gérées de la même manière que la mémoire


centrale.

• La zone de va-et-vient d’un processus peut aussi être allouée une fois pour
toute au début de l’exécution. Lors du déchargement, le processus est sûr
d’avoir une zone d’attente libre sur le disque (éviter des interblocages).

Systèmes d’exploitation Génie Informatique


École Polytechnique de Montréal Chapitre 8.32

16
Le va-et-vient (Swapping) (2)

Mémoire utilisateur Mémoire provisoire

Systèmes d’exploitation Génie Informatique


École Polytechnique de Montréal Chapitre 8.33

Exercice

1. Donnez les états d' occupation de la mémoire aux différentes étapes de traitement de
ces processus, sous les hypothèses suivantes :
1. Partitions fixes de tailles 6 MB, 4 MB, 2 MB et 4 MB (pour le système) ;
2. Le mode d' allocation des trous utilise l’algorithme meilleur ajustement (Best Fit) ;
3. Le répartiteur de haut niveau fonctionne selon PAPS ;
4. Le répartiteur de bas niveau fonctionne selon SJF (Shortest Job First).
5. Pas de va-et-vient
Instant Processus Taille Temps Durée
t CPU E/S
0 A 3 MB 9 ms 2 ms
4 B 5 MB 6 ms 9 ms
6 C 5 MB 4 ms 4 ms
8 D 4 MB 2 ms 6 ms
10 E 1 MB 4 ms 3 ms
12 F 1 MB 5 ms 1 ms
16 G 1 MB 3 ms 2 ms
18 H 3 MB 3 ms 8 ms
Chaque processus effectue un calcul suivi d’une E/S en utilisant son propre périphérique

Systèmes d’exploitation Génie Informatique


École Polytechnique de Montréal Chapitre 8.34

17