Vous êtes sur la page 1sur 11

Gestion de la mémoire centrale

Gestion de la mémoire centrale

I -- Introduction

Qu’est-ce que la mémoire centrale ?


Commande
Processus
Données

Lieu où sont stockées les données et les commandes pour bien exécuter un processus.

Inconvénient majeur de la mémoire centrale ?


• même si elle augmente, elle reste insuffisante ;
• système d'exploitation multiple programmé => partage de la mémoire central
GESTION MODERNE DE LA MEMOIRE

Le partage de la mémoire engendre trois soucis :


o définir un espace d'adressage séparé pour chaque processus ;
o allouer une place mémoire pour le code et les données ;
o protéger l'espace d'adressage vis-à-vis de l'accès d'autres processus.

II -- Concepts fondamentaux

Rappel : Quelle est la chaîne de production d'un programme réalisé avant son exécution ?
Code source

Code objet

Le chargement d'un programme en mémoire centrale se décline sous 2 modes :


o Chargement statique : translation des adresses lors du chargement du programme en mémoire.
o Chargement dynamique : translation des adresses lors de l'exécution du programme.

Pour ce 2ème deuxième type de chargement :


o adresse logique / virtuel : - adresse du programme
- dispose du CPU (processeur)
o adresse physique : - adresse en mémoire centrale
- où est l'information

1 / 11 ALSI
Gestion de la mémoire centrale

III -- Allocation de la mémoire physique

Que de sur le processeur pour accéder à la mémoire centrale ?

Transforme l'adresse logique en adresse physique.


[MMU : Memory Management Unit]

Mémoire centrale
Lorsqu'un utilisateur demande exécution d'un programme :
Code +
Données
Le chargeur de retrouver une place libre suffisamment grande
Système
Lorsque le processus est terminé :
Code + La place mémoire doit être libérée
Données
Prog
Utilisateurs

Les stratégies de location de la mémoire centrale sont divisées en deux grandes familles :
o Partition variable : un programme est un ensemble de mots continus insécables => l'espace d'adressage
linéaire
o Pagination / fragmentation : un programme est un ensemble de mots contigus sécables => chaque
morceau peut être alloué de manière indépendante

1 -- Allocation contiguë de la mémoire physique

Notion de partitions variables :

o Programme = espace d'adressage insécable

o La mémoire physique = elle est découpée en deux zones disjointes de taille variable (adaptable à la taille
des programmes : partitions)

Une zone libre :


- adresse d'implantation ;
- taille en octets ;
- organisés en liste circulaires chaîné.

Pour le chargement d'un nouveau programme en mémoire :


o zone libre suffisamment grande ;
o minimiser la place perdue ;
o avoir un temps de choix d'une zone libre plus faible.

Trois stratégies existent :


o First Fit : Première zone libre ;
o Best Fit : Meilleurs zone libre ;
o Worst Fit : Plus mauvaise zone libre.

2 / 11 ALSI
Gestion de la mémoire centrale

Stratégie première zone libre


But : Avantages / Inconvénients

Avantage : optimise la rapidité du


choisir la première zone suffisamment choix de la zone
grand dans la liste chaînée des au
niveau Inconvénient : la zone et forcément la
meilleure

Stratégie meilleure zone libre


But : Avantages / Inconvénients

Avantages : optimiser l'utilisation de


la mémoire centrale
choisir une zone libre dont la taille est
la plus grande de celle du programme
Inconvénient : mois rapide car
a alloué
l'ensemble des zones libres doit être
examiné

Stratégie plus mauvaise zone libre


But : Avantages / Inconvénients

Avantage : optimise l'utilisation de la


choisir une zone libre dont la taille est mémoire (zone plus grande)
la plus éloignée de celle du
programme alloué (sélectionnez la Inconvénient : mois rapide car
plus grande zone libre) l'ensemble des zones libres doit être
examiné

Qu'un inconvénient majeur découle des stratégies présentées ?

Chargement d'un programme :


o sa taille > taille d'une des zones libre.
o Somme des tailles de toutes les zones libres > ou = sa taille
=> Fragmentation externe

SOLUTION :
Compactage de la mémoire centrale

Déplacer les programmes en mémoire centrale de la


manière à ne créer une seule zone.

3 / 11 ALSI
Gestion de la mémoire centrale
Protection des partitions : chaque zone allouée à un
programme constitue un espace d'adressage protégé ou
aucun d'autres processus ne doit voire accéder

Comment est assurée cette protection ?

Cette protection est une mise en œuvre grâce à l'adresse


logique générée par le CPU ou on vérifie que :
Adresse logique < taille partition du processus

2 -- Allocation non contiguë de la mémoire physique

Les deux difficultés de la méthode en partitions variables :


o une zone libre contiguë ;
o fragmentation externe.

Par ce principe d'allocation, une solution est apportée par rapport au 1er premier problème :
Programme : ensemble sécable
Le programme chargé bat être divisé en un ensemble de morceaux.
Chaque morceau va être alloué de manière aléatoire en mémoire.

2 méthodes :
o morceau de taille fixée égale :
- mécanisme de location : pagination
- chaque morceau : page
o morceau de taille variable :
- mécanismes d'allocation : segmentation
- chaque morceau : segment

a) La pagination

Généralités :
o le programme est découpé en morceaux linéaires de même taille : pages
o la mémoire physique est découpée en morceaux linéaires de même taille : cases
o taille d'une case = taille d'une page
o taille : - défini par le matériel
- une puissance de 2
- variable en fonction du système (512 - 8192 o)

Son principe : Chargement du programme en mémoire :


o placer les pages dans n'importe quelle case disponible
o connaître les cases disponibles : table des cases
o table des cases : c'est un tableau qui indique l'état des cases de la mémoire :
- libre
- occupé : par quels processus

4 / 11 ALSI
Gestion de la mémoire centrale

Conséquence :

Fragmentation
interne

Conversion d'adresse logique en adresse physique :


Avec la pagination, on ne parle pas d'adresse logique, mais d'adresses paginées.
Cette adresse est formée d'un numéro de page (p) et d'un déplacement relatif par rapport au début de page (d).

Méthode de calcul pour une adresse de m bits, avec une taille des pages de 2n

Numéro de page (p) : m – n

Déplacement (d) : n bits restants

Comment faire la conversion adresse agit en adresse physique ?

Adresse paginée En mémoire centrale


- numéro de la page = p - case => page
- déplacement relatif = d

Il faut donc, faire la correspondance :


o page – case
o déplacement de d dans la case
Structure particulière = table de pages

La table des pages : caractéristiques


o Une table par processus
o tableau contenant autant d'entrée que le processus a de page ou chaque entrée :
 numéro de la page
 case physique ou est chargée la page.
D'après le schéma de la pagination (page précédente), donner les tables de page pour les processus, P1, P2.

Table de pages processus 1


Table de pages processus 2 Page 1 Case 2
Page 1 Case 4 Page 2 Case 6
Page 2 Case 8 Page 3 Case 3
Page 4 Case 7
o structure logicielle placée en mémoire centrale
o Chaque processus enregistre l'adresse de la table dans son PCB
o lorsque le processus est élu, cette adresse est placée dans le registre PTBR (Page Table Base Registre) de
la MMU.

5 / 11 ALSI
Gestion de la mémoire centrale
Comment se fait accent de mort central à partir d'une
adresse paginée ?
- 1er accès : pour lire l'entrée de la table de page et
connaître le numéro de la case :
Adresse physique de la case = numéro de la case –
1 * taille de la case
- 2nd accès pour la lecture / écriture de l'aube des
recherches et à :
Adresse physique de la case + déplacement

Mais pour accélérer les actions mémoire on utilise un


cache.

Un cache placer en amont de la mémoire, contient des


couples (pages, adresse de cases) et plus récemment
utilisées.

a) La segmentation

Problème de la pagination : le découpage des processus ne correspond pas à l'image que le programmeur a de son
programme.

Pour le programmeur :
o données manipulé par le programme
o programme principal
o sous-programme (procédures / fonctions)

La segmentation résout le problème de la pagination de cet aspect :


Le découpage du processus cherche à conserver cette vue du programmeur.
Lors de la compilation, le compilateur associe en segment à chaque morceau de programme compilé.

Définition un segment : ensemble d'emplacements en mémoire non sécable. À la différence des pages, les
segments d'un même processus peuvent être de taille différente.

Illustration du découpage en segment :

6 / 11 ALSI
Gestion de la mémoire centrale
Conversion d'adresse logique en adresse physique :

Avec la segmentation, on ne parle pas d'adresse logique mais d'adresse segmentée.

C'est d'adresser formée :


o d'un numéro de segment : s
o d'un déplacement relatif par rapport au début du segment : d

Comment faire la conversion d'adresse segmentée en adresse physique ?

o Numéro de segment ( s )→ l'adresse physique d'implantation du segment mémoire


o ajouter le déplacement ( d )

Qui se charge de ce travail ?


La MMU grâce à une table de segment.
N° segment - adresse physique

La table de segment : caractéristiques

o Structure logicielle stockée en mémoire centrale


o Chaque processus enregistre l'adresse de la
table dans son PCB
o dès que le processus est élu, adressée placée
dans le registre STBR (Segment Table Base
Registre) de la MMU
o besoin d'autre registre STLR (Segment Table
Length Register) qu'on peut l'an le nombre de
segments du processus

À partir de ce schéma, écrire un algorithme de conversion d'une adresse segmentée en adresse physique :

Si (s > valeur du registre STLR) Alors


Trappe (segments inexistants)
Sinon
s + STBR (d'index de d'entrée de la table)
récupérez adresse segmentée
Si (d > taille du segment) (information de la
table) Alors
Trappe (en dehors du segment)
Sinon
d + adresse d'implantation
FSI
FSI

7 / 11 ALSI
Gestion de la mémoire centrale
Comment se fait allocation des segments en mémoire centrale ?
o même principe de l'allocation de partitions variables
o pour allouer un segment, il faut trouver une zone libre d'une taille au moins égale à celle du segment.
o Mais, on aura le même problème : la fragmentation

D'où le risque de fragmentation externe


Solution :
o le processus est découpé en segment
o chaque segment est ensuite paginé → il existe donc une table de pages pour chaque segment
o un signe table de segment contient l'adresse de la table des pages en mémoire pour ce segment

IV -- Mémoire virtuelle

Principal inconvénient de la mémoire centrale :


Elle est insuffisante pour pouvoir stocker d'où les
processus nécessaires

Lors de l'exécution d'un processus :


A un annonce dans donné, le processus n'accède
qu'à une partie de son espace d'adressage (page
de code exécuté + pages de données)

Par déduction, les autres pages sont inutiles en


mémoire centrale.

Solution :
Ne chargée pour chaque processus que les pages
couramment utilisées.

Définition de la mémoire virtuelle : le principe de la mémoire virtuelle consiste à ne charger un instant donné en
mémoire centrale, que la partie couramment utile de l'espace d'adressage des processus, et autorise ainsi, la
constitution de programme dont la taille n'est plus limitée par celle de la mémoire centrale.

Si toutes les pages ne sont pas chargées, quel problème va survenir ?

Le CPU doit savoir si la page dont il a besoin est chargé ou non, chaque entrée de la table de pages contient une
information supplémentaire :
bit de validation :
o 0 : si la page n'est pas chargée
o 1 : si la page est chargée

8 / 11 ALSI
Gestion de la mémoire centrale
2 stratégies existent pour attribuer les gaz mémoire différents processus :
o allocation équitable ou fixe : tous les processus pour le même nombre de cases
o allocation proportionnelle : les cases mémoires sont réparties proportionnellement à la taille du processus

Comment se détecte une page non chargée ?


o la MMU accède à la table de pages
o la valeur du bit de validation est à 0
o une trappe (défaut de page) élevé
processus → bloqué (attente E / S)
o chargement de la case libre

Où sont stockés les pages des processus en cours d'exécution ?


Les pages des processus sont stockées dans une zone particulière du disque : zone de swap

Où est mémorisée l'adresse de chaque page sur le disque ?


L'adresse de chaque page sur disque est mémorisée dans l'entrée correspondant de la table de pages.

Que peut-il se passer lors une opération de chargement de page est demandé ?
Plus de cases disponibles en mémoire.
Il faut donc libérer une case de la mémoire centrale.
C'est ce qu'on appelle : le remplacement de pages.
La case libérée s'appelle une victime.
La case victime doit être sauvegardée si elle a été modifiée.
La table de base doit être mise a jour.

Comment se fait le choix de la case victime ?


o Localement au processeur
o globalement à l'ensemble des processus
Le choix optimal de la page victime :
o libérer une case qui ne servirait plus du tout (éviter un nouveau défaut de page)

Plusieurs méthodes existent :


o FIFO Fisrt In First Out
o LRU Least Recently Used
o Algorithme de la seconde chance
o LFU Least Frequently Used
o MFU Most Frequently Used

Pour l'étude et de méthodes on suppose que :


 une mémoire dotée de trois cases
 la suite de pages demandées : 8, 1, 2, 3, 1, 4, 1, 5, 3, 4, 1, 4, 3
 la lettre D signalera à défaut de page

9 / 11 ALSI
Gestion de la mémoire centrale
1 - FIFO Fisrt In First Out

o C'est la page la plus ancienne chargée qui est remplacée


o mise en œuvre simple
o performances pas toujours bonnes : l'âge de la page ne reflète pas forcément son utilité

Demandes 8 1 2 3 1 4 1 5 3 4 1 4 3
Case 1 8 8 8 3 3 3 3 5 5 5 1 1 1
Case 2 1 1 1 1 4 4 4 3 3 3 3 3
Case 3 2 2 2 2 1 1 1 4 4 4 4
D D D D D D D D D D

2 - LRU Least Recently Used

o c’est la page la moins récemment utilisée qui est remplacé


o mise en œuvre coûteuse (calcule date / heure)
o algorithme le plus souvent utilisé, car il est considéré comme très bon

Demandes 8 1 2 3 1 4 1 5 3 4 1 4 3
Case 1 8 8 8 3 3 3 3 5 5 5 1 1 1
Case 2 1 1 1 1 1 1 1 1 4 4 4 4
Case 3 2 2 2 4 4 4 3 3 3 3 3
D D D D D D D D D

10 / 11 ALSI
Gestion de la mémoire centrale
Gestion de la mémoire paginée, segmentée, principe de la mémoire virtuelle
Exercice 1
On considère une mémoire paginée pour laquelle les cases en mémoire centrale sont de 4 Ko. Dans ce contexte on
considère 2 processus A et B d'une taille respective de 24 Ko et 13,5 Mo.
1) Indiquer le nombre de cases nécessaire pour recevoir le processus A et le processus B.
La mémoire centrale compte au total 15 cases numérotées de 1 à 15.
Ci-contre la table de pages pour le processus A. Table de pages
2) Représenter sur un schéma de la mémoire centrale processus A
Page 1 Case 2
Page 2 Case 6
Page 3 Case 3
Page 4 Case 7
La mémoire est réellement organisée de la manière suivante : Page 5 Case 5
Le premier méga octet est réservé au système. Page 6 Case 9
Le kilo octet suivant est réservé au stockage des tables de page.
On trouve ensuite les 15 cases de 4 Ko.

3) A partir de ces données, indiquer une adresse possible pour le stockage de la table de page du processus A.
Toute adresse est exprimée en octets.
4) On suppose que le processeur est en train de traiter l'adresse logique (pagel, 15), indiquer l'adresse physique
exprimée en octets correspondante.

Exercice2
On considère cette fois une mémoire segmentée. Dans ce contexte on considère 2 processus A et B d'une taille
respective de 24 Ko et 13 Ko. Le processus A est découpé en 4 segments (numérotés de 1 à 4) avec comme taille
respective 4 Ko, 10 Ko, 7 Ko, 3 Ko. Le processus B est découpé en 3 segments (numérotés de 1 à 3) de taille
respective 2 Ko, 8 Ko et 3 Ko.
La taille de la mémoire est de 128 Mo et le premier méga octet est réservé au système. On a le découpage de la
mémoire suivant :
Système
1) Donner les tables de segments des 2 processus
Zone Libre 1039 Ko
2) La MMU dispose des informations suivantes dans ces registres (avec l'exécution
Segment 1 du processus B) :
Processus B STBR : 3
Zone libre STLR : 1 058 816 octets
Segment 2 1086 ko
Processus A
adresse dans la table de segments (segment 4, 1024 o) Indiquer l'adresse
Segment 3 1096 ko physique calculée exprimée en octets.
Processus B
Zone libre 1149 ko 3) Faire la même chose avec les données suivantes concernant le processus A cette
Segment 4 fois-ci :
Processus A STBR : 4
Segment 2 1152 ko
STLR: 1058 910octets
Processus B
Zone Libre 1309 ko adresse dans la table de segments (segment 2,1024 o)
Segment 3
Processus A
Zone Libre 1313 ko
Segment 1
Processus A
Zone Libre

11 / 11 ALSI