Vous êtes sur la page 1sur 34

Ingénierie des Systèmes d’Exploitation

Chapitre 5 : Gestion de la mémoire

Pr HANIN

2022/2023
Plan

 Chapitre 1 : Processus (Introduction générale)

 Chapitre 2 : Création / Manipulation des processus

 Chapitre 3: Ordonnancement des processus

 Chapitre 4 : Communication entre processus & Synchronisation

 Chapitre 5: Gestion de la mémoire

 Chapitre 6: Gestion des entrées sorties et des fichiers

Cours: Ingénierie Systèmes d’exploitation Chapitre 4 : Communication interprocessus & Synchronisation 2


PLAN (Chapitre 5)

o Concepts de base
o Définitions
o Mémoire Physique
o Mémoire virtuelle
o MMU
o Allocation en mémoire
o Allocation contiguë :
o Partitionnement statique
o Partitionnement dynamique
o Algorithmes de placement de processus
o Allocation non contiguë :
o Pagination
o Segmentation

Pr. HANIN Chapitre 4: Gestion de la mémoire 3


Concepts de base : définitions

• La mémoire est une ressource importante et limitée qui doit être gérer d’une façon
optimale.
• Plusieurs types de mémoire peuvent étre utilisés lors de l’éxécution d’un programme
• Dans un système d'exploitation, la mémoire est divisée en plusieurs parties, chacune
ayant une fonction spécifique :
• La mémoire vive (RAM) .
• La mémoire cache.
• La mémoire virtuelle.
• La mémoire partagée .

Pr. HANIN Chapitre 5 : Gestion de la mémoire 4


Concepts de base : définitions

Mémoire physique, mémoire logique et mémoire virtuelle

• Mémoire physique:
• La mémoire principale RAM de la machine
• Adresses physique : les adresses de cette mémoire; reçu par l’unité mémoire
• Mémoire logique : l’espace d’adressage d’un programme
• Adresses logiques ou virtuelles : les adresses dans cet espace ; générée par le CPU
• Remarque : Adresse physique # adresse logique
• Mémoire virtuelle (Swap) : extension de la mémoire dans le disque

Pr. HANIN Chapitre 5 : Gestion de la mémoire 5


Problèmes de gestion de la mémoire

Problème n°1 : la mémoire est trop petite

un processus = 264 adresses = 18 446 744 073 709 551 616 octets
= 17 179 869 184 Gio

0...00: 01110101
0...01: 11001011
0...02: 10100111

VS

mémoire physique = quelques Gio

11001100
F...FF:

Pr. HANIN Chapitre 5 : Gestion de la mémoire 6


Problèmes de gestion de la mémoire

Problème n°2 : comment gérer l’espace disponible ?


Même si chaque processus n’a pas besoin de 264 octets,
• il y a de nombreux processus simultanément
• des dizaines ? des centaines ? des milliers ?
• combien d’espace occupe chacun ? pour combien de temps ?

• qui manipulent des éléments hétérogènes


• Instructions(code) ►en lecture seule
• Données(fichiers) ►chargées depuis le disque
• Variables (locales,globales) ►en lecture+écriture

Pr. HANIN Chapitre 5 : Gestion de la mémoire 7


Problèmes de gestion de la mémoire

Problème no 3 : comment protéger chaque processus ?

Problème no 4 : comment permettre la coopération ?

Pr. HANIN Chapitre 5 : Gestion de la mémoire 8


Concepts de base : définitions

Solution : ajouter un niveau d’indirection


MMU : Memory Management Unit

Espace d’adressage virtuel = VAS = { 0, 1, 2, ..., N −1}


• le CPU exprime les adresses sur n bits ► N=2n
• chaque processus dispose d’un VAS privé

Espace d’adressage physique = PAS = { 0, 1, 2, ..., M −1}


• une adresse pour chaque octet de (DRAM + périphériques)
• adresses exprimées sur m bits ► M=2m

• La MMU permet de traduire les adresses virtuelles utilisées par un programme en


adresses physiques correspondantes dans la mémoire physique.

Pr. HANIN Chapitre 5 : Gestion de la mémoire 9


Concepts de base Systèmes de gestion de la mémoire

Allocation en mémoire

• Plusieurs types d’allocation:


• Contiguë : le processus est chargé en entier dans la mémoire, dans un bloc contigu
• Les blocs de mémoire peuvent avoir une taille:
• fixe: la taille des blocs est prédéterminé, et est la même pour tous les
processus.
• variable: chaque processus se voit allouer un bloc de taille différente.
• Non contiguë: le processus est subdivisé et éparpillé dans la RAM, et un mécanisme
est défini pour retrouver les différentes briques une fois le programme chargé
• La mémoire peut être :
• Partitionné: subdivisée depuis le démarrage en partitions fixes
• Non partitionné: les partitions seront créées au fur et à mesure que les
programmes sont chargés et déchargés de la mémoire.

Pr. HANIN Chapitre 5 : Gestion de la mémoire 10


Allocation en mémoire

Allocation contiguë : taille fixe

• On divise la mémoire en blocs de taille fixe,


par exemple 1Mo
• Chaque processus est placé dans un bloc
libre

Pr. HANIN Chapitre 5 : Gestion de la mémoire 11


Allocation en mémoire

Allocation contiguë : taille fixe

Pr. HANIN Chapitre 5 : Gestion de la mémoire 12


Allocation en mémoire

Allocation contiguë : taille fixe

Pr. HANIN Chapitre 5 : Gestion de la mémoire 13


Allocation en mémoire

Allocation contiguë : taille fixe

Pr. HANIN Chapitre 5 : Gestion de la mémoire 14


Allocation en mémoire

Allocation contiguë : taille fixe

Ne peut être
admis en
mémoire!

Pr. HANIN Chapitre 5 : Gestion de la mémoire 15


Allocation en mémoire

Allocation contiguë : taille fixe

Quels sont les problèmes avec l’allocation


contigüe avec partitions de taille fixe?
• Ne peut allouer un programme si sa taille
dépasse celle d’une partition
• Beaucoup d’espace mémoire perdu:
fragmentation
• Il en existe 2 types:
• Fragmentation interne: espace perdu à
l’intérieur d’une partition
• Fragmentation externe: espace perdu à
l’extérieur d’une partition

Pr. HANIN Chapitre 5 : Gestion de la mémoire 16


Allocation en mémoire

Allocation contiguë : taille variable

Qu’arrive-t-il si un processus (ex: P2)


se termine?

Pr. HANIN Chapitre 5 : Gestion de la mémoire 17


Allocation en mémoire

Algorithmes d’allocation de mémoire

• Il existe plusieurs algorithmes afin de déterminer l’emplacement d’un processus en


mémoire. Le but de tous ces algorithmes est de maximiser l’espace mémoire occupé.
• Première allocation (First Fit): Le processus est mis dans le premier bloc de
mémoire suffisamment grand à partir du début de la mémoire.
• Prochaine allocation (Next Fit): Le processus est mis dans le premier bloc de
mémoire suffisamment grand à partir du dernier bloc alloué.
• Meilleure allocation (Best Fit): Le processus est mis dans le bloc de mémoire le
plus petit dont la taille est suffisamment grande pour l’espace requis.
• Pire allocation (Worse Fit): Le processus est mis dans le bloc de mémoire le plus
grand.

Pr. HANIN Chapitre 5 : Gestion de la mémoire 18


Allocation en mémoire

Algorithmes d’allocation de mémoire : Exemple

Effectuez les étapes suivantes pour un système ayant


une mémoire de 16Mo:
• Les processus suivants sont alloués en mémoire (dans
l’ordre)
• P1, 3Mo
• P2, 5Mo
• P3, 2Mo
• P4, 2Mo
• P1 et P3 se terminent
• À quel endroit en mémoire le processus (P5, 2Mo) sera-t-il
alloué si l’on emploie chacun des algorithmes d’allocation
mémoire

Pr. HANIN Chapitre 5 : Gestion de la mémoire 19


Allocation en mémoire
Allocation non contiguë
Pagination & segmentation

• Dans ce type d'allocation, la mémoire d'un programme est divisée en plusieurs petits
morceaux dispersés dans l'espace mémoire, au lieu d'être allouée en un seul bloc contigu.
• Il y’a deux techniques pour faire ceci : La pagination et la segmentation
• La pagination permet de découper la mémoire physique en pages de taille fixe et
d'allouer dynamiquement ces pages au programme selon ses besoins.
• Contrairement à la pagination, la segmentation découpe la mémoire virtuelle d'un
programme en segments de taille variable, chaque segment correspondant à une partie
logique ou fonctionnelle du programme

Pr. HANIN Chapitre 5 : Gestion de la mémoire 20


Allocation en mémoire Allocation non contiguë

Pagination

• La pagination permet de découper la mémoire physique en pages de taille fixe et


d'allouer dynamiquement ces pages au programme selon ses besoins.
• Chaque page de mémoire est numérotée et mappée à une adresse virtuelle dans l'espace
d'adressage du programme.
• Une unique taille de bloc : P=2p octets (en général P=4Kio)
• disque dur géré par blocs de taille P appelés secteurs
• DRAM gérée par blocs de taille P appelés pages physiques ou cases ou frame
• VAS géré par blocs de taille P appelés pages virtuelles

Pr. HANIN Chapitre 5 : Gestion de la mémoire 21


Allocation en mémoire Allocation non contiguë

Pagination : Numérotation des pages

• Numéro de page virtuelle : VPN ∈{0, 1, ..., X} avec X = N ÷ P


• Numéro de page physique : PPN ∈{0, 1, ..., Y} avec Y = M ÷ P

Pr. HANIN Chapitre 5 : Gestion de la mémoire 22


Allocation en mémoire Allocation non contiguë

Pagination : Traduction des numéros de pages

Pr. HANIN Chapitre 5 : Gestion de la mémoire 23


Allocation en mémoire Allocation non contiguë

Pagination : Algorithme de MMU

1. Extraire le numéro de page à partir de l'adresse virtuelle.


2. Utiliser le numéro de page pour accéder à la table de pagination
3. Extraire l'adresse physique de la page correspondante à partir de
l'entrée correspondant au numéro de page.
4. Concaténer l'adresse physique de la page correspondante avec le
décalage de page (Page offset) pour obtenir l'adresse physique
5. Utiliser l'adresse physique pour accéder à la mémoire physique

Pr. HANIN Chapitre 5 : Gestion de la mémoire 24


Allocation en mémoire Allocation non contiguë

Pagination : Algorithme de MMU

1)calculer VPN = [VA÷P♩et PO = VA mod P

• autrement dit, VA = VPN × P + PO

• PO = Page Offset = position à l’intérieur de la page

2)trouver le PPN correspondant au VPN

• dans un annuaire appelé la Table de Pagination = Page Table PT

3 ) calculer PA = PPN × P + PO

• offset identique dans la page virtuelle et la page physique

Pr. HANIN Chapitre 5 : Gestion de la mémoire 25


Allocation en mémoire Allocation non contiguë

Pagination : Algorithme de MMU

Exemple avec m=n=16 et p=10 :


Virtual Page Number (n−p bits)
1011010010100110 = 1011010010100110
Virtual Address (n bits) Page Offset (p bits)

Page Table: VPN ›→PPN

PPO = VPO
Physical Address (m bits)
0110100010100110 = 0110100010100110

Physical Page Number (m−p bits)

Pr. HANIN Chapitre 5 : Gestion de la mémoire 26


Allocation en mémoire Allocation non contiguë

Algorithmes de remplacement de pages

Deux sortes d’algorithmes :


Ceux qui ne tiennent pas compte de l’utilisation des cases :
• RAND : sélection au hasard. On peut virer une page dont on a besoin tout de
suite.
• FIFO : ordre chronologique de chargement ;
Ceux qui tiennent compte de l’utilisation des cases :
• LFU (least frequently used) : on remplace la page la moins fréquemment
référencée
• LRU (least recently used) : ordre chronologique d'utilisation. On s’intéresse
aux dates d’utilisation mais pas à la fréquence.
• OPT : on remplace celle qui sera utilisée au bout du temps la plus long .

Pr. HANIN Chapitre 5 : Gestion de la mémoire 27


Allocation en mémoire Allocation non contiguë

Avantages / Inconvénients de la pagination

Avantages :
 Ce type de gestion est très efficace car utilise au maximum la mémoire et évite le
tassage de mémoire.
 Possibilité de ne charger des pages que lorsqu'elles sont référencées (chargement à la
demande).
 Indépendance de l'espace virtuel et de la mémoire physique (mémoire virtuelle
généralement plus grande).
 Possibilité de ne vider sur disque que des pages modifiées.
 Une plus grande simplicité du partage de la mémoire entre différents processus. En
particulier quand plusieurs processus partagent le même code. La page qui contient du code
utilisé par les processus sera partageable et protégée en écriture.
Sous Unix le compilateur produit automatiquement des programmes dont la partie code est
partageable.
Inconvénients :
 Fragmentation interne (toutes les pages ne sont pas remplies).
 on reste toujours limité par la taille effective de la mémoire (Le problème de la taille de
la TPV)

Pr. HANIN Chapitre 5 : Gestion de la mémoire 28


Allocation en mémoire Allocation non contiguë

Segmentation : Définitions
• La segmentation permet de diviser l'espace d'adressage logique d'un processus en
segments de tailles variables correspondant à des parties distinctes du programme en
cours d'exécution.
• Chaque segment peut contenir du code, des données, PCB...
• Les segments sont identifiés par un numéro de segment ou un nom de segment.
• L’adresse logique = (s, d) où (s : numéro de segment; d : déplacement(offset) à l’intérieur
de segment s)
• une table de segments pour calculer une adresse physique où chaque entrée de la table
contient l’adresse physique du début du segment appelé base b et la longueur m du
segment.
• L’adresse physique =b+d  0<= d < m

Pr. HANIN Chapitre 5 : Gestion de la mémoire 29


Allocation en mémoire Allocation non contiguë

Segmentation : Traduction d’adresses

Pr. HANIN Chapitre 5 : Gestion de la mémoire 30


Allocation en mémoire Allocation non contiguë

Segmentation : Traduction d’adresse

Exemple

Pr. HANIN Chapitre 5 : Gestion de la mémoire 31


Allocation en mémoire Allocation non contiguë

Segmentation : Partage de segments

Pr. HANIN Chapitre 5 : Gestion de la mémoire 32


Allocation en mémoire Allocation non contiguë

Segmentation : Problème de fragmentation externe


La mémoire segmentée pose des problèmes de fragmentation.

(a)-(d) Evolution de la fragmentation externe


(e) Compactage de la mémoire
Pr. HANIN Chapitre 5 : Gestion de la mémoire 33
Allocation en mémoire Allocation non contiguë

Segmentation paginée

Problème de la segmentation : La croissance de la taille des mémoires virtuelle  problème


de
l’encombrement de la mémoire principale par la table des segments dont la taille augmente
Idée : Paginer les segments : on a une TPV par segment  segmentation paginée

Une adresse logique =(numéro segment , numéro page, déplacement dans la page)

Pr. HANIN Chapitre 5 : Gestion de la mémoire 34

Vous aimerez peut-être aussi