Systèmes d’exploitation
Gestion de la mémoire
Introduction
Mémoire ressource importante devant être gérée avec prudence
Gestion de la mémoire du ressort du gestionnaire de la mémoire
Ce gestionnaire doit :
Connaître les parties libres et occupées de la mémoire
Allouer de la mémoire aux processus qui en ont besoin
Récupérer la mémoire utilisée par un processus lorsque celui-ci se termine
Traiter le va-et-vient (swapping ou swap) entre le disque et la mémoire principale
lorsque cette dernière ne peut pas contenir tous les processus
Les systèmes de gestion de la mémoire se répartissent en 2 catégories :
1. Les systèmes qui déplacent les processus entre la mémoire principale et le disque (va-
et-vient et pagination)
2. Ceux qui ne le font pas
2ème catégorie + simple
Le va-et-vient et la pagination sont des artifices qui pallient à un manque de
mémoire princiaple
Monoprogrammation sans
va-et-vient ni pagination
Gestion de la mémoire la + simple consite à avoir un seul processus en mémoire à un instant
donné et lui permettre d’utiliser toute la mémoire disponible
La mémoire est partagée entre le SE et un unique processus utilisateur
L’IBM PC (i8086->i8486) utilise ce schéma :
Les pilotes sont en ROM (Read Only Memory), les programmes en ROM sont appelés BIOS (Basic
Input Output System)
Le SE se trouve en bas de la mémoire vive (RAM, Random Access Memory)
Le programme utilisateur au-dessus du SE en RAM
Lorsque la mémoire est organisée de cette manière, il ne peut y avoir qu’un seul processus
s’exécutant à un instant donné
L’utilisateur tape une commande sur son terminal, le SE charge le programme en mémoire et
l’exécute ; lorsque le processus se termine le SE affiche une invite (prompt) sur le terminal et
attend la commande suivante pour charger un nouveau processus qui remplace le précédent
Pilotes périphériques en ROM
Programme utilisateur
SE en RAM
Multiprogrammation et utilisation
de la mémoire : modélisation
La multiprogrammation permet d’améliorer le taux d’allocation du processeur
Supposons qu’un processus passe une fraction pde son temps à attendre la fin d’une
E/S ; si nprocessus se trouvent en mémoire en même temps, la probabilité qu’ils
soient tous en attente sur une E/S (et donc que le processeur soit inutilisé) est pn;
nous avons donc : utilisation du processeur = 1 - pn
0
10
20
30
40
50
60
70
80
90
100
0 1 2 3 4 5 6 7 8 9 10
degré de multiprogrammation
Utilisation du processeur (%)
80 % d'attente sur E/S
50 % d'attente sur E/S
20 % d'attente sur E/S
Multiprogrammation avec des
partitions fixes
Il est clair (à présent) qu’il est souvent utile d’avoir + d’un processus en mémoire à la fois
Comment alors organiser la mémoire le plus efficacement possible ?
La méthode la + simple est de diviser la mémoire en n partitions (éventuellement de tailles inégales)
Chaque nouvelle tâche est placée dans la file d’attente de la plus petite partition qui peut la contenir
Partition 4
Partition 3
Partition 2
Partition 1
SE
700 K
400 K
200 K
100 K
0
Files d’entrée multiples
Trier les tâches en fonction de leurs taille dans des files multiples présente un inconvénient lorsque la file
des grandes partitions est vide et celles des petites est pleine ; une alternative consiste à utiliser 1 seule file
Partition 4
Partition 3
Partition 2
Partition 1
SE
700 K
400 K
200 K
100 K
0
File d’entrée unique
Pas intéressant d’allouer une grande partition à une petite tâche: parcourir la liste et choisir la plus grande
tâche qui peut contenir la partition
Cette stratégie désavantage les petites tâches (théoriquement il vaut mieux les traiter en priorité) ; une
solution consiste à interdire la non-sélection d’une tâche plus de kfois
Ce système à partitions fixes a été utilisé par OS/360 (IBM), il s’appelait MFT (Multiprogramming with a
Fixed number of Tasks)
1 / 36 100%