Académique Documents
Professionnel Documents
Culture Documents
Pr HANIN
2022/2023
Plan
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
• 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 .
• 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
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
11001100
F...FF:
Allocation en mémoire
Ne peut être
admis en
mémoire!
• 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
Pagination
3 ) calculer PA = PPN × P + PO
PPO = VPO
Physical Address (m bits)
0110100010100110 = 0110100010100110
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)
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
Exemple
Segmentation paginée
Une adresse logique =(numéro segment , numéro page, déplacement dans la page)