2.2. SYSTEME MONOTACHE
Dans le cas des systèmes mono-tâches, la gestion
de la mémoire est assez simple. Il suffit de réserver une partie
de la mémoire au système d'exploitation. L'application est
ensuite casée dans l'espace restant qui est libéré
sitôt que l'application est terminée.
Cela se complique un peu si l'application nécessite
plus d'espace que ce que peut fournir la mémoire vive. On segmente alors
l'application en segments de recouvrements ou "Overlays". Cette
technique n'a plus cours maintenant. Elle était utilisée à
l'époque du DOS pour des applications volumineuses. Le programmeur
devait prévoir le découpage de son application en imaginant
comment ces overlays serait chargés en mémoire les uns à
la suite des autres pour qu'au cours de son exécution l'application
puisse atteindre toutes les fonctions nécessaires.
C'est de cette façon qu'on concevait la mémoire
virtuelle à l'époque des systèmes d'exploitation
mono-tâche. Notez que la zone mémoire occupée par le
système d'exploitation n'était pas protégée.
Figure. 2.4 : Montre à l'époque de système
d'exploitation mono-tache. Source : Comment ça marche
2.3. SYSTEME MULTITACHE
Plusieurs processus doivent se partager la mémoire sans
empiéter sur l'espace réservé au système
d'exploitation ni aux autres processus. Quand un processus se termine, le S.E.
doit libérer l'espace mémoire qui lui était alloué
pour pouvoir y placer de nouveaux processus.
28
Partition de la mémoire
Partitions fixes
Le fait d'éviter d'allouer une partition trop grande
à un petit processus conduit parfois à des aberrations. Il arrive
que des partitions plus grandes restent inutilisées alors que se forment
ailleurs des files interminables de petits processus. La mémoire est
donc mal utilisée.
Une autre solution est de créer une file unique.
Lorsqu'une partition se libère, on consulte la file pour trouver la
tâche qui l'occuperait de manière optimale.
Le risque est que les petites tâches soient
pénalisées. Une parade est de conserver une petite partition au
moins qui ne sera accessible qu'aux petites tâches. Une autre solution,
serait de dire qu'un processus ne peut être ignore qu'au maximum un
certain nombre de fois. Après n refus, il prendra place dans une
partition même si la partition est bien plus grande qu'il ne faut.
Partitions variables
Une autre manière d'éviter les emplacements
mémoires inoccupés en fin de partitions est d'allouer aux
processus des espaces qui correspondent exactement à l'espace qui leur
est utile.
Au fur et à mesure que les processus se créent
et se terminent, des partitions s'allouent et se libèrent laissant des
zones mémoires morcelées et inutilisables. La mémoire se
fragmente et est de plus en plus mal employée. Il faudrait la compacter
en déplaçant régulièrement les processus mais cette
tâche supplémentaire ralentit le système.
Figure 2.5 montre la différente partition et l'espace
occupé par le système Source : Comment ça marche
29
Conclusion : Le partitionnement de la mémoire que ce
soit avec des partitions de tailles fixes ou de tailles variables, ne permet
pas d'utiliser la mémoire au mieux.
|