0% ont trouvé ce document utile (0 vote)
51 vues35 pages

Chap3 Gestion Memoire

Le chapitre IV traite de la gestion de la mémoire dans les systèmes d'exploitation, en abordant les concepts de monoprogrammation et multiprogrammation, ainsi que les différentes stratégies d'allocation mémoire telles que les partitions contiguës fixes, dynamiques et siamoises. Il explique également les techniques de pagination et de segmentation pour gérer la mémoire non contiguë, ainsi que les défis de la fragmentation et du compactage. Enfin, il présente le mécanisme de traduction d'adresses pour optimiser l'utilisation de la mémoire.

Transféré par

Aicha mrabet
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
51 vues35 pages

Chap3 Gestion Memoire

Le chapitre IV traite de la gestion de la mémoire dans les systèmes d'exploitation, en abordant les concepts de monoprogrammation et multiprogrammation, ainsi que les différentes stratégies d'allocation mémoire telles que les partitions contiguës fixes, dynamiques et siamoises. Il explique également les techniques de pagination et de segmentation pour gérer la mémoire non contiguë, ainsi que les défis de la fragmentation et du compactage. Enfin, il présente le mécanisme de traduction d'adresses pour optimiser l'utilisation de la mémoire.

Transféré par

Aicha mrabet
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Chapitre IV: Gestion de la mémoire

Halima MHAMDI

Cours: Système d’exploitation


Niveau : CPI1

Institut Supérieur d’Informatique et de Multimédia de Gabès


Plan
I. Introduction

II. Organisation de la mémoire : monoprogrammation -multiprogrammation

III. Multiprogrammation et partitions multiples contigües

1.Partitions contiguës fixes

2.Partitions contiguës dynamiques

3. Partitions contiguës Siamoises

4. Va et vient (Swap)

5. Fragmentation et Compactage
I. Introduction
➢ La gestion de la mémoire est l'une des tâches fondamentales d'un
système d'exploitation.
➢ Un programme ne peut s'exécuter que si ses instructions et ses
données sont en mémoire physique. Donc, si on désire exécuter
plusieurs programmes simultanément dans un ordinateur, il
faudra que tous ces programmes soient chargés dans la mémoire.
➢ Le système d'exploitation devra donc allouer à chaque
programme une zone de la mémoire où celui-ci sera chargé. Mais
tous les programmes n'ont pas la même taille, de plus les
programmes sont lancés par les utilisateurs, puis se terminent à
des moments inconnus du système à l'avance. Chaque fois qu'un
utilisateur va demander le lancement d'un programme, le système
devra trouver une place dans la mémoire pour le charger.
I. Introduction
➢ Le fait de travailler en multiprogrammation implique donc que les
programmes d'application sont chargés dans des zones de la
mémoire dont la localisation n'est pas connue d'avance.
➢ Le système prend à sa charge la gestion de la mémoire principale,
il assure sa protection, et il fournit l'information qui permet à
chaque programme de s'exécuter sans savoir à l'avance dans quelle
zone mémoire il sera au moment de son exécution (cette zone
peut d'ailleurs changer entre différentes exécutions et même en
cours d'exécution).
➢ Le but d'une bonne gestion de la mémoire est d'augmenter le
rendement global du système.
➢ La question principale à laquelle le système devra répondre
chaque fois qu'un nouveau programme demande à être exécuté
sera donc "à quel endroit dans la mémoire ?"
II. Organisation de la mémoire : monoprogrammation -
multiprogrammation
1. Organisation de la mémoire en monoprogrammation:

➢ A la base, le rôle du plus simple gestionnaire de mémoire est


d'exécuter un seul programme à la fois, en partageant la mémoire
entre le programme et le système d'exploitation. Trois variantes
de l'organisation possible sont montrées à la figure suivante:
II. Organisation de la mémoire : monoprogrammation -
multiprogrammation
2. Gestion de la mémoire et multiprogrammation:

➢ Excepté sur des systèmes embarqués simples, on n'a plus


tellement recours à la monoprogrammation de nos jours.
➢ La plupart des systèmes modernes autorisent l'exécution de
processus multiples en même temps, ce qui implique le séjour de
plusieurs programmes en même temps en mémoire et c’est cette
technique qui a donné naissance à la gestion moderne de la
mémoire.
➢ Pour supporter la multiprogrammation et donc l'existence de
plusieurs processus en mémoire principale, on peut distinguer
deux grandes stratégies d'allocation mémoire: l'allocation de
partitions contiguës et l'allocation de partitions non-contiguës.
III. Multiprogrammation et partitions multiples contigües
➢ L'espace mémoire est divisé en partitions. Chaque partition peut
être allouée à un programme. La taille des partitions et leur
nombre peuvent être fixe ou variable.
1. Partitions contiguës fixes:
Table de description des partitions
➢ Dans cette stratégie la mémoire est divisée en n partitions de
tailles fixes (si possible inégales).
➢ Ce partitionnement se fait au démarrage du système. Le système
d'exploitation maintient une table de description des partitions.
➢ Exemple de table de description des partitions:
III. Multiprogrammation et partitions multiples contigües
1. Partitions contiguës fixes:
Allocation de partitions fixes : files d'attente séparées:
➢ Quand un processus arrive, il peut être
placé dans la file d'attente des entrées de la
plus petite des partitions assez larges pour
le contenir.
➢ La figure illustre ce type de systèmes à
partitions fixes. Le tri des processus qui
arrivent en différentes files d'attente
présente des inconvénients lorsque la file
d'attente pour une grande partition est
vide tandis que celle d'une petite partition
est pleine, comme l'illustrent les partitions
1 et 3 de la figure
III. Multiprogrammation et partitions multiples contigües
1. Partitions contiguës fixes:
Allocation de partitions fixes : file d'attente commune:
➢ Une autre organisation
possible consiste à gérer une
seule file d'attente, comme la
figure. Dès qu'une partition
devient libre, toute tâche
placée en tête de file d'attente
et dont la taille convient peut
être chargée dans cette
partition vide et exécutée.
III. Multiprogrammation et partitions multiples contigües
2. Partitions contiguës dynamiques

➢ Stratégie du premier qui convient (First Fit): La liste des partitions


libres est triée par ordre des adresses croissantes. La recherche
commence par la partition libre de plus basse adresse et continue
jusqu'à la rencontre de la première partition dont la taille est au
moins égale à celle du processus en attente.
➢ Stratégie du meilleur qui convient (Best Fit): On alloue la plus petite
partition dont la taille est au moins égale à celle du processus en
attente. La table des partitions libres est de préférence triée par
tailles croissantes.
➢ Stratégie du pire qui convient (Worst Fit): On alloue au processus la
partition de plus grande taille.
III. Multiprogrammation et partitions multiples contigües
2. Partitions contiguës dynamiques
Exemple d’allocation de partitions dynamiques contigües

➢ Soit une MC dont la table des


partitions libres est la suivante
➢ Soit les demandes suivantes
P4(24K), P5(128K), P6(256K):
➢ Déterminer l’évolution de la
table des partitions libres en
utilisant First fit, Best fit et
Worst fit:
III. Multiprogrammation et partitions multiples contigües
3. Partitions contiguës Siamoises
➢ C'est un compromis entre partitions de tailles fixes et partitions de
tailles variables.
➢ La mémoire est allouée en unités qui sont des puissances de 2.
Initialement, il existe une seule unité comprenant toute la mémoire.
Lorsque la mémoire doit être attribuée à un processus, ce dernier
reçoit une unité de mémoire dont la taille est la plus petite puissance
de 2 supérieures à la taille du processus. S'il n'existe aucune unité de
cette taille, la plus petite unité disponible supérieure au processus est
divisée en deux unités "siamoises" de la moitié de la taille de
l'original. La division se poursuit jusqu'à l'obtention de la taille
appropriée.
➢ De même deux unités siamoises libres sont combinées pour obtenir
une unité plus grande.
III. Multiprogrammation et partitions multiples contigües
3. Partitions contiguës Siamoises
Exemple
III. Multiprogrammation et partitions multiples contigües
3. Partitions contiguës Siamoises
Application
Soit un système de 1 Mo de mémoire et qui utilise le système de zones siamoises. Elaborer un diagramme
d’allocations de la mémoire après chacun des évènements suivants :

1. Arrivée du processus A, 100 Ko.

2. Arrivée du processus B, 240 Ko.

3. Arrivée du processus C, 64 KO

4. Arrivée du processus D, 256 Ko.

5. Sortie du processus B.

6. Sortie du processus A.

7. Arrivée du processus E, 75 Ko.

8. Sortie du processus C.

9. Sortie du processus E.

10. Sortie du processus D.


III. Multiprogrammation et partitions multiples contigües
4. Va et vient (Swap)
➢ Multiprogrammation et limite de la mémoire principale
Dans un système à temps partagé, parfois la mémoire principale est
insuffisante pour maintenir tous les processus courants actifs : il faut
alors conserver les processus supplémentaires sur un disque et les
charger pour qu'ils s'exécutent dynamiquement.
➢ Swap
La stratégie la plus simple, appelée va-et-vient (swap), consiste à
considérer chaque processus dans son intégralité: en cas de réquisition
du processeur, le programme en cours doit être sauvegardé sur disque
avant le chargement en mémoire principale de son successeur, dans sa
totalité, pour exécution.
III. Multiprogrammation et partitions multiples contigües
4. Va et vient (Swap)
III. Multiprogrammation et partitions multiples contigües
5. Fragmentation et Compactage
III. Multiprogrammation et partitions multiples contigües
5. Fragmentation et Compactage
➢ Exemple de fragmentation de la mémoire:
III. Multiprogrammation et partitions multiples contigües
5. Fragmentation et Compactage

➢ Compactage de la mémoire:

Les zones libres sont regroupées. C'est une technique très coûteuse, et

en plus elle change les adresses de chargement des processus.

➢ Compactage et réallocation:

Le compactage de la mémoire n'est possible que s'il y a un mécanisme

de réallocation dynamique des processus (basé sur l'utilisation des

registres de translation d'adresse (registre base))


IV. Multiprogrammation et partitions non contigües
1. Introduction
La traduction dynamique d'adresse réalisée par l'emploi d’un
registre de base impose que les programmes soient chargés en
mémoire principale dans des cellules contiguës. Nous avons vu que
les techniques d'allocation associées conduisent à la fragmentation de
la mémoire. Pour l'éviter, il faut pouvoir implanter un programme
dans plusieurs zones non contiguës. Plusieurs techniques proposent
d'allouer des espaces mémoire non-contiguës pour les processus :
Pagination et Segmentation.
IV. Multiprogrammation et partitions non contigües
2. Pagination

➢ Pagination:

La solution apportée par les mécanismes de pagination consiste à

découper l'espace adressable, ou espace virtuel, en zones de taille


fixe appelée pages. La mémoire réelle est également découpée

en cases (frame en anglais) ayant la taille d'une page de sorte que

chaque page peut être implantée dans n'importe quelle case de la

mémoire réelle
IV. Multiprogrammation et partitions non contigües
2. Pagination

➢ Pagination à un niveau :

Une adresse est divisée en deux parties : un numéro de page p et un

déplacement à l'intérieur de la page d. La taille de la page (et donc


de la case) est une puissance de 2 variant généralement entre 512 et
8192 octets selon les architectures.
IV. Multiprogrammation et partitions non contigües
2. Pagination
Le choix de tailles de puissance 2 permet de simplifier la division
nécessaire pour calculer le numéro de page et le déplacement à
partir d'une adresse logique, ainsi : Si la taille de l'espace d'adressage
logique est 2m et la taille d'une page est 2n (octets ou mots)
 Les m-n bits de poids fort d'une adresse paginée désignent le
numéro de page ; et
 Les n bits de poids faible désignent le déplacement dans le page.
IV. Multiprogrammation et partitions non contigües
2. Pagination
Si T est la taille d'une page et A une adresse logique, l'adresse
paginée (p, d) est déduite à partie des formules :

 p = A div T

 d = A modulo T

et l'adresse logique est égale à : A = p*T + d


IV. Multiprogrammation et partitions non contigües
2. Pagination

➢ Table des pages:

La traduction des adresses utilise une table des pages qui est située
en mémoire centrale ou dans des registres, et dans laquelle les
entrées successives correspondent aux pages virtuelles consécutives.
La p éme entrée de la table des pages contient le numéro r de la case
où est implantée la page p, et éventuellement des indicateurs
supplémentaires.
IV. Multiprogrammation et partitions non contigües
2. Pagination
IV. Multiprogrammation et partitions non contigües
2. Pagination
➢ Traduction d'adresse :

L'adresse réelle (f,d) d'un mot d'adresse virtuelle (p,d) est obtenue
en remplaçant le numéro de page p par le numéro de case f trouvé
dans la p-ième entrée
IV. Multiprogrammation et partitions non contigües
2. Pagination
➢ Optimisation de la taille des tables de pages :

Pour éviter d'avoir des tables de pages trop longues, des tables de
plusieurs niveaux (hiérarchiques) peuvent être utilisés.
IV. Multiprogrammation et partitions non contigües
2. Pagination
➢ Pagination et fragmentation :

Avec la pagination, il n y a plus de fragmentation externes (s'il y a


suffisamment de mémoire (de pages) non allouée à un programme il
les aura), par contre la fragmentation interne persiste: si un
programme nécessite 2 pages et 1 octet, il aura 3 pages.
IV. Multiprogrammation et partitions non contigües
3. Segmentation

➢ Segmentation et Pagination

La segmentation est analogue à la pagination sauf que la taille d'un


segment est variable. L'espace d'adressage logique est divisé en un
ensemble de segments.

L'avantage de la segmentation par rapport à la pagination, est que les


segments peuvent refléter une vision logique du programme. Par
exemple chaque segment peut représenter un module de
programme généré au moment de la compilation.
IV. Multiprogrammation et partitions non contigües
3. Segmentation
➢ Table de segments :
L'espace d'adressage physique correspondant peut ne pas être
contigu. Une table de segment spécifie pour chaque segment deux
valeurs :
 base : adresse début du segment en mémoire centrale
 limite : taille du segment
Une adresse logique est dite segmentée. Elle comprend un numéro
de segment (s) et un déplacement dans le segment (d). (s) est utilisé
comme index dans la table de segments. La table de segments est
généralement implantée par des registres rapides. Si d > limite :
alors erreur de débordement (fameux Segmentation fault).
IV. Multiprogrammation et partitions non contigües
3. Segmentation
➢ Traduction d'adresse
La figure illustre le mécanisme de traduction d'adresses segmentées
et le mécanisme de protection.
IV. Multiprogrammation et partitions non contigües
4. Segmentation paginée
➢ Adressage en segmentation paginée:

L'adressage est composé de deux niveaux :

 Le niveau segment et

 Le niveau page
Chaque segment est un espace linéaire d'adressage logiques. Il est
découpé en pages. Une adresse est formée de trois parties : (s, p, d')
 s : numéro du segment

 p : numéro de page

 d' : déplacement dans la page


IV. Multiprogrammation et partitions non contigües
4. Segmentation paginée
➢ Table de page :
La table de segments est divisée en portions. Chaque portion
concerne un segment bien précis. La base permet de retrouver la
portion concernant le segment donné, et p donne le numéro de page
dans cette portion.
IV. Multiprogrammation et partitions non contigües
5. application
Considérez une mémoire virtuelle avec une taille de mémoire
physique (principale) de 1 Mo, et supportant des blocs de 128
octets. Aussi, supposez un processus occupant un espace d’adresse
logique de 22 Ko.
1. Calculez le nombre de cadres dans l’espace d’adresse physique
et le nombre de pages dans l’espace d’adresse logique.
2. Montrez les formats des adresses physique et logique, soit le
nombre de bits pour les blocs, les cadres et les pages.
3. Déterminez l’adresse physique dans laquelle se situe l’adresse
logique 10237, si l’on suppose que la page contenant l’adresse
10237 se trouve dans le cadre 1839.

Vous aimerez peut-être aussi