Vous êtes sur la page 1sur 44

Systèmes d’Exploitation

2 ème Année (GL-RT-IIA-IMI)

Gestion de la Mémoire
Partitionnement, Pagination, Segmentation

Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 1


Gestion de la Mémoire

CONCEPTS DE BASE

Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 2


Gestion de la Mémoire
Concepts de Base
• La mémoire est une ressource importante et limitée qui doit être gérer
d’une façon optimale.
• Plusieurs types de mémoires peuvent être utilisés lors de l’exécution
d’un programme.
§ Mais, pour s’e xécuter, un programme doit être placé en mémoire centrale.
• La gestion de la mémoire peut se faire avec ou sans va-et-vient
(swapping).
Mem. volatile
Registres UC

Capacité de stockage
Vitesse d’accès
Cache
RAM/ ROM
Mem. Non volatile

Disques

Bandes

Hiérarchie des Mémoires

Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 3


Gestion de la Mémoire Centrale: Objectifs
Concepts de Base
• Optimisation de l ’utilisation de la mémoire principale (RAM)
• Les plus grand nombre possible de processus actifs doit y être gardé,
de façon à optimiser le fonctionnement du système en
multiprogrammation
§ Garder le système le plus occupé possible, surtout l’UCT
§ S’adapter aux besoins de mémoire de l ’usager
§ Allocation dynamique au besoin
• Concepts
§ Adresse physique et adresse logique
§ Remplacement
§ Allocation contiguë (partitions fixes et variables)
§ Pagination
§ Segmentation
§ Segmentation paginée

Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 4


Mémoire Physique et Mémoire Logique
Concepts de Base
• Mémoire physique:
§ La mémoire principale RAM de la machine
§ Adresses physiques: les adresses de cette mémoire

• Mémoire logique: l’espace d’adressage d’un programme


§ Adresses logiques: les adresses dans cet espace

• Il faut séparer ces concepts car normalement, les programmes sont


chargés de fois en fois dans des positions différentes de la mémoire
§ Donc adresse physique ≠ adresse logique

Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 5


Traduction Adresses Physiques & Logiques
Concepts de Base

MMU: Memory Management Unit

Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 6


Chargement d’un Module en Mémoire
Concepts de Base
• Étapes de chargement
§ Trouver de la mémoire libre pour un module de chargement
o Contiguë ou non contiguë
§ Traduire les adresses du programme et effectuer les liaisons par rapport aux
adresses où le module est chargé
• Dans les premiers systèmes, un programme était toujours chargé dans la
même zone mémoire
• La multiprogrammation et l’allocation dynamique ont engendré le besoin de
charger un programme dans différentes positions
§ Au début, ceci était fait par le chargeur (loader) qui changeait les adresses
avant de lancer l ’exécution
§ Aujourd’hui, ceci est fait par le MMU au fur et à mesure que le programme est
exécuté
• Ceci ne cause pas d’hausse de temps d ’exécution, car le MMU agit en
parallèle avec d’autres fonctions d’UCT
§ Par ex. l ’MMU peut préparer l ’adresse d’une instruction en même temps que
l’UCT exécute l ’instruction précédente

Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 7


Permutation (Swapping)
Concepts de Base
• Un programme, ou une partie de programme, peut être
temporairement enlevé de mémoire pour permettre l’exécution
d’autres programmes
§ Il est mis dans la mémoire secondaire, normalement le disque

Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 8


Allocation en Mémoire
Concepts de Base
• Plusieurs types d’allocation
§ Contiguë : Le processus est chargé en entier dans la mémoire, dans un bloc
contigu
o L’allocation contiguë n’est plus utilisée aujourd’hui pour la mémoire centrale,
mais les concepts que nous verrons sont encore utilisés pour l’allocation de
fichiers sur disques
§ 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ée : subdivisée depuis le démarrage en partitions fixes
§ Non-partitionnée : les partitions seront créées au fur et à mesure que les
programmes sont chargés et déchargés de la mémoire

Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 9


Gestion de la Mémoire

ALLOCATION CONTIGUË

Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 10


Partitions Fixes
Allocation Contiguë
• Mémoire principale subdivisée en régions
distinctes: partitions

• Les partitions sont soit de même taille ou de


tailles inégales

• N’importe quel programme peut être affecté à une


partition qui soit suffisamment grande
§ Un programme doit tenir sur une seule partition
§ Une partition ne peut contenir qu’un seul
programme

• Problème de fragmentation: Il y’a assez d’espace


pour exécuter un programme, mais cet espace est
fragmenté de façon non contiguë
§ Fragmentation interne : espace entre les partitions
§ Fragmentation externe : espace dans les partitions

Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 11


Partitions Fixes de Tailles Égales
Allocation Contiguë
• Diviser la mémoire en N partitions de même taille
• Chaque nouvelle tâche est placée dans la première partition libre
• Problèmes:
§ La taille de partition doit être assez grande pour n’importe quel processus
§ Gros problème de fragmentation interne

Partition 4

Partition 3

Partition 2
File unique
Partition 1

Noyau

Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 12


Partitions Fixes de Tailles Inégales
Allocation Contiguë
• Diviser la mémoire en N partitions qui peuvent être de tailles inégales
et associer à chaque partition une file d’attente.
• Chaque nouvelle tâche est placée dans la file d’attente de la plus petite
partition qui peut la contenir.
• L’espace non utilisé dans une partition est perdu (pb de fragmentation)

Partition 3 Partition 3
Files multiples Problème:
Saturation des files
Partition 2 Partition 2
d’attente des petites
partitions
File unique
Partition 1 Partition 1

Noyau Noyau

Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 13


Partitions Dynamiques
Allocation Contiguë
• Initialement, la mémoire n’est pas partitionnée
• Les partitions se créent au fur et à mesure que les processus entrent et
sortent de la mémoire
§ Ils varient en nombre, en taille et en position

B B B
A A
C C
SE SE SE SE SE SE SE

Temps
• Utilise la technique de va-et-vient ou encore swapping
§ La mémoire est une ressource ne pouvant pas contenir tous les processus. Il est
alors nécessaire de déplacer quelques processus sur le disque et de les ramener
en RAM avant de les exécuter.
• Problème de fragmentation externe

Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 14


Partitions Dynamiques: Exemple
Allocation Contiguë

• Mémoire=1024K, OS=128K, P1=320K, P2=224K, P3=228K, P4=128K.


• (d) Il y a un trou de 64K après avoir chargé 3 processus: pas assez d’espace pour
d’autres processus
• Si tous les processus se bloquent (p.ex. attente d’un événement), P2 peut être
permuté et P4=128K peut être chargé.

Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 15


Partitions Dynamiques: Exemple
Allocation Contiguë

• (e-f ) P2 est suspendu, P4 est chargé. Un trou de 224-128=96K est créé (fragmentation
externe)
• (g-h) P1 se termine ou il est suspendu, P2 est repris à sa place: produisant un autre trou de
320-224=96K...
• Nous avons 3 trous petits et probablement inutiles.
§ 96+96+64=256K de fragmentation externe
• COMPRESSION pour en faire un seul trou de 256K
Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 16
Algorithmes de Placement
Allocation Contiguë
• Pour décider l’emplacement du prochain
processus
• But: réduire l’utilisation de la compression qui
prend du temps...
• Choix possibles:
§ Best fit: choisir le plus petit trou (meilleur
accès)
§ Worst fit: le plus grand (pire accès)
§ First-fit: choisir 1er trou à partir du début
(premier accès)
§ Next-fit: choisir 1er trou à partir du dernier
placement (prochain accès)
• En pratique, utiliser l’algorithme le plus simple,
donc FF

Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 17


Gestion de la Mémoire

ALLOCATION NON CONTIGUË

Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 18


Allocation Non Contiguë
Allocation Non Contiguë
• Afin de réduire la fragmentation, tous les systèmes d’aujourd’hui
utilisent l’allocation non contiguë
§ diviser un programme en morceaux et permettre l’allocation séparée de
chaque morceau
§ les morceaux sont beaucoup plus petits que le programme entier et donc
permettent une utilisation plus efficace de la mémoire
o les petits trous peuvent être utilisés plus facilement
• Il y a deux techniques de base pour faire ceci: la pagination et la
segmentation
§ La segmentation utilise des parties de programme qui ont une valeur
logique (des modules)
§ La pagination utilise des parties de programme arbitraires (morcellement
du programmes en pages de longueur fixe).
§ Elles peuvent être combinées

Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 19


Gestion de la Mémoire

ALLOCATION NON CONTIGUË : PAGINATION

Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 20


Définition
Pagination
• La mémoire est partitionnée en petits morceaux de même taille: les
pages physiques ou cadres ou frames

• Chaque processus est aussi partitionné en petits morceaux de même


taille appelés pages logiques (pages)

• Les pages logiques d’un processus peuvent donc être assignées aux
cadres disponibles n’importe où en mémoire principale

• Conséquences:
§ un processus peut être éparpillé n’importe où dans la mémoire physique.
§ la fragmentation externe est éliminée

Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 21


Exemple
Pagination

• Supposons que le processus B se termine ou est suspendu

Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 22


Exemple
Pagination
• Nous pouvons maintenant transférer
en mémoire un processus D, qui
demande 5 cadres
§ Bien qu’il n’y ait pas 5 cadres contigus
disponibles

• La fragmentation externe est limitée


au cas que le nombre de pages
disponibles n’est pas suffisant pour
exécuter un processus en attente

• Seule la dernière page d’un processus


peut souffrir de fragmentation interne
§ En moyenne 1/2 cadre par processus

Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 23


Table de Page
Pagination

Les entrées dans la table de pages sont


aussi appelées descripteurs de pages

Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 24


Table de Page
Pagination
• Le SE doit maintenir une table de pages pour chaque processus
• Chaque descripteur de pages contient le numéro de cadre où la page
correspondante est physiquement localisée
• Une table de pages est indexée par le numéro de la page afin d’obtenir
le numéro du cadre
• Une liste de cadres disponibles est également maintenue (free frame
list)

Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 25


Traduction d’Adresses
Pagination
• L’adresse logique est facilement traduite en adresse
physique
§ car la taille des pages est une puissance de 2
§ les pages débutent toujours à des adresses qui sont
des puissances de 2
§ qui ont autant de 0 à droite que la longueur de l’offset
§ donc ces 0 sont remplacés par l’offset (déplacement)

• Ex: si 16 bits sont utilisés pour les adresses et que la


taille d’une page = 1K: on a besoin de 10 bits pour le
décalage, laissant ainsi 6 bits pour le numéro de page

• L’adresse logique (p,d) est traduite en adresse


physique (f,d) en utilisant p comme index sur la table
des pages et en le remplaçant par l ’adresse f trouvée
depuis la table
§ d ne change pas

Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 26


Traduction d’Adresses
Pagination

Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 27


Traduction d’Adresses
Pagination

Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 28


Exercice 1
Pagination

• Hypothèses:
§ Bus d’adresses de 16 bits
§ Taille d’une page 4Ko = 4096 o
(adresse sur 12bits)

§ Table de page (ci contre)

• Question
§ Calculer l’adresse physique correspondante à
l’adresse logique (virtuelle) 8196

Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 29


Exercice 1 - Correction
Pagination

• Adresse physique= 24580

Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 30


Exercice 2
Pagination

• Soit un ordinateur ayant :


§ Une mémoire physique de capacité 128 Mo
§ Une architecture 32 bits.
§ La taille d'u ne page égale à 4 Ko,
§ Une adresse virtuelle indexe un octet

• Donner la taille de la table des pages.


§ Chaque entrée de la table (référence d’un cadre + bit présence
absence)

Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 31


Exercice 2: Correction
Pagination
• Taille table des pages = Taille d'u ne entrée de la table x Nombre d'e ntrées de la
table
• Nombre d'e ntrées de la table = Taille de l'e space virtuelle / taille d'u ne page
• Taille de l'e space virtuelle = nombre d'adresses virtuelles possible x 1octet = 2 32
octets
§ (car par défaut une adresse virtuelle indexe un octet dans la mémoire virtuelle)
• Nombre d'e ntrées de la table = (2 32 octet)/(4x1024 octet) = 2 20 entrées
• La taille d'u ne entrée de la table des pages =1 bit (d'absence/présence) + nombre
de bits utilisés pour référencer un cadre de page dans la mémoire physique.
• Pour déterminer le nombre de ces bits il faut déterminer le nombre de cadres de
page, soit égal à: (128 x 1024 ko)/(4 ko) = (2 7 x 2 10 )/(2 2 )= 2 15 cadres de pages
• D'o ù le nombre de bits nécessaires pour référencer les cadres de page est 15
è taille d'u ne entrée de la table des pages = 1 + 15 = 16 bits
• Taille table des pages = taille d'u ne entrée de la table x le nombre d'e ntrées de la
table = 2 20 x 16 bits = 16 Mbits = 2 Mo

Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 32


Défaut de Page
Pagination
• Dans la Table de Page, lorsque le bit
de présence est à 0, un défaut de
page se produit et le système
effectue un déroutement pour
récupérer la page manquante à partir
du disque.

• Pour remettre la page récupérée sur


la RAM, il faut vider une case de la
mémoire physique en utilisant un
algorithme de remplacement de
page.

Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 33


Algorithmes de Remplacement de Page
Pagination
• Les algorithmes de remplacement de pages sont (entre autres):
§ L’algorithme First In First Out (FIFO):
o Remplacer la page la plus ancienne dans la mémoire.

§ L’algorithme Least Recently Used (LRU):


o Remplacer la page qui est restée inutilisée le plus de temps.

§ L’algorithme optimal
o Retirer de la mémoire la page qui sera référencée le plus tard. C’est un
algorithme théorique car il nécessite la connaissance des requêtes futures.

§ L’algorithme Not Recently Used (NRU):


o Remplacer la page la non récemment utilisée; c’est une solution matérielle.

Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 34


Gestion de la Mémoire

ALLOCATION NON CONTIGUË : SEGMENTATION

Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 35


Technique de Segmentation
Segmentation
• La segmentation utilise des parties de programme qui ont une valeur
logique (des modules)
§ Générés à la compilation,
§ Un segment est un ensemble d'a dresses virtuelles contiguës.
§ Chaque segment est repéré par son numéro S et sa longueur variable L .

• Contrairement à la pagination, la segmentation est "connue" du


processus
§ Une adresse est donnée par un couple ( S , d ),
o S est le n° du segment
o d le déplacement dans le segment, d Î [0 , L [ .

• Pour calculer l'a dresse physique, on utilise une table des segments .

Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 36


Table de Segments
Segmentation

• Le tableau des segments contient des descripteurs de segments


§ B : l’adresse de base
§ L : la longueur du segment
§ p : Infos de protection

• Dans le PCB du processus il y aura un pointeur à l’adresse en mémoire


de la table de segments
§ Il y aura aussi là dedans le nombre de segments dans le processus

• Au moment de la commutation de contexte, ces infos seront chargées


dans les registres appropriés d’UCT

Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 37


Traduction d’Adresses
Segmentation

Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 38


Traduction d’Adresses
Segmentation

Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 39


Partage de Segments
Segmentation

Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 40


Partage de Segments
Segmentation
R1 Données proc 1
Programme
+

Instruction

R2
+ Données proc 2

• La même instruction, si elle est exécutée


§ par le proc 1, son adresse est modifiée par le contenu du registre 1
§ par le proc 2, son adresse est modifiée par le contenu du registre 2

• Ceci fonctionne même si l’instruction est exécutée par plusieurs UCT au


même instant, si les registres se trouvent dans des UCT différentes

Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 41


Segmentation Simple: Avantages et Inconvénients
Segmentation

• Avantages:
§ l’unité d’allocation de mémoire est plus petite que le programme entier
§ l’unité d’allocation de mémoire est une entité logique connue par le
programmeur
§ Les segments peuvent changer de place en mémoire
§ La protection et le partage de segments sont aisés (en principe)

• Désavantage: le problème des partitions dynamiques


§ Mêmes problématiques que pour l’allocation contiguë à partitions
dynamiques
§ La fragmentation externe n’e st pas éliminée:
o trous en mémoire, compression?

Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 42


Segmentation Paginée
Segmentation
• La taille d'un segment peut être importante, d'o ù un temps de chargement
long qui peut en résulter. La pagination des segments peut être une
solution.
• Une adresse virtuelle (S , d) est transformée en (S , P , d' ), où P est un
numéro de page et d’ un déplacement dans la page P.
• Exemple : avec des pages de 4 Ko, l'adresse logique (2 , 9392) est
transformée en (2 , 2, 1200)

Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 43


Références

• Wassim Youssef, Les systèmes d’e xploitation, Cours ISI, 2015

• Mona Laaroussi, Les systèmes d’e xploitation, Cours INSAT, 2009

Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 44

Vous aimerez peut-être aussi