23. allocation mémoire contigue Flashcards
Un ordinateur possède plusieurs programmes
* Où ces programmes sont-ils situés?
disque dur
Peut-on les exécuter s’ils sont sur le disque
dur?
Non, le disque dur est un périphérique de
stockage lent
quoi faire
Donc, il nous faut les transférer dans la
mémoire principale (RAM)
L’objectif de la gestion mémoire est de
partager la mémoire RAM entre les divers
programmes
Objectifs secondaires:
* Utilisation simple pour un programme
* Maximiser l’utilisation de la mémoire disponible
Allocation mémoire: 2 stratégies
Allocation contigüe: le programme occupe un
espace contigu en mémoire
* partitions de taille fixe
* partitions de taille variable
Allocation paginée: le programme est divisé en
petits morceaux (pages) qui peuvent être répartis à
différents endroits.
fonctionnement Allocation mémoire contigüe
On réserve un «bloc» (ou «fragment») de mémoire
contigu (pas de trou)
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.
fonctionnement Allocation mémoire contigüe, taille fixe
On divise la mémoire en blocs
de taille fixe, par exemple 1Mo
* Chaque processus est placé
dans un bloc libre
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!
fragmentation Il en existe 2 types:
Fragmentation interne: espace perdu
à l’intérieur une partition
* Fragmentation externe: espace perdu
à l’extérieur d’une partition
Avec des partitions de taille fixe,
seule la fragmentation —- est
possible
Avec des partitions de taille fixe,
seule la fragmentation interne est
possible. aucun espace à l’extérieur d’une
partition n’est perdu—il peut toujours
être alloué à un autre processus peu
importe son emplacement
Allocation mémoire contigüe, taille variable fonctionnement
On crée une partition de la
bonne taille pour chaque
processus.
* Il peut parfois y avoir plusieurs
endroits où une partition peut
être créée: il faudra déterminer
la bonne stratégie à employer!
Qu’arrive-t-il si un processus
se termine?
trou
Quels sont les problèmes avec
l’allocation contigüe avec
partitions de taille variable?
Lorsqu’un processus se termine, il
peut laisser des «trous».
Avec des partitions de taille
variable, seule la fragmentation
—– est possible
Avec des partitions de taille
variable, seule la fragmentation
externe est possible
* aucun espace à l’intérieur d’une
partition n’est perdu car chaque
partition est créée en fonction de la
taille de son processus
4 algorithmes afin de déterminer l’emplacement d’un
processus en mémoire
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.
* Souvent utilisé malgré sa simplicité apparente!
- Prochaine allocation (Next Fit): Le processus est mis dans le premier bloc
de mémoire suffisamment grand à partir du dernier bloc alloué. - Crée souvent un peu plus de fragmentation que « First Fit »
- 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. - Semble meilleur, mais demande beaucoup de temps de calcul!
- Pire allocation (Worse Fit): Le processus est mis dans le bloc de mémoire le
plus grand.
Que faire si aucun «trou» n’est assez
grand pour un processus?
Ne peut être admis en mémoire!
Est-ce qu’un processus doit absolument savoir à
quel endroit il est placé en mémoire?
Tout ce que le processus doit savoir, c’est
comment accéder à chacune des adresses dans
son bloc de mémoire
Un—— utilise des adresses virtuelles
* La——– utilise des adresses physiques
* Il faut donc «traduire» entre les deux: c’est le
travail du ——-
Un processus utilise des adresses virtuelles
* La mémoire utilise des adresses physiques
* Il faut donc «traduire» entre les deux: c’est le
travail du Memory Management Unit (MMU)
le MMU effectue le calcul
suivant pour traduire une adresse virtuelle en adresse physique:
aphysique = avirtuelle + apartition
même calcul pour taille variable ou taille fixe