next up previous index
Next: Une première technique : Up: Gestion de la mémoire Previous: Le problème   Index

Subsections

Les critères de comparaison des solutions

Monoprogrammation versus multiprogrammation

La monoprogrammation ne permet qu'à un seul processus utilisateur d'être en mémoire à un instant donné, la gestion de la mémoire est énormément simplifiée. C'est le cas de MS-DOS par exemple.

La suite du cours est dans un cadre de multiprogrammation.

La taille d'un processus

La taille d'un processus n'est pas connue au début de l'exécution, il faut donc l'estimer. Les tailles des données statiques et du code sont connues au chargement, celles des données dynamiques (le tas et la pile) sont fixées arbitrairement.

Si un processus devient plus grand que la zone allouée, il faut soit agrandir l'emplacement, soit lui trouver un nouvel emplacement, soit le tuer.

La fragmentation

Définition 3.1   La fragmentation interne est la quantité :
$F_i = \sum{}{}(tailles \ processus) / \sum{}{}(tailles \ allouees)$

La fragmentation interne existe dès lors que l'unité d'allocation de la mémoire diffère de l'unité minimale (ie l'octet).

Définition 3.2   La fragmentation externe est la quantité :
$F_e = 1 - (\sum{}{}(tailles \ allouees) / (taille \ memoire))$

La protection inter-processus

Un processus ne doit pas endommager ses collègues. Il faut contrôler, avant exécution que toutes les adresses accédées par le processus sont à l'intérieur de la zone allouée. Cela protège les utilisateurs entre eux, mais aussi le SE.

Pour cela, il faut un minimum de matériel : un registre base et un registre limite. Ensuite chaque adresse mémoire utilisée qui n'est pas comprise entre base et limite provoque la terminaison du processus.

La liaison d'adresse

La liaison d'instructions et de données (adresses logiques dans le programme, adresses physiques pendant l'exécution) peut avoir lieu à n'importe quelle étape :

Un utilisateur écrit un programme qui contient des adresses symboliques. Le compilateur peut générer :

  1. des adresses physiques, le code est alors absolu.
  2. des adresses logiques, le code est alors translatable.
    Dans cette situation, le chargeur peut générer :
    1. des adresses physiques, le code est alors non relogable.
    2. des adresses logiques, le code est alors relogable.
      Dans cette situation, il faut pouvoir au moment de l'exécution faire la liaison d'adresses, cela n'est possible qu'avec du matériel spécifique (registre de translation). C'est le rôle de la MMU. On peut distinguer différentes situations :
      1. partition unique : il faut un registre de translation
      2. pagination : l'adresse logique est généralement appelée adresse virtuelle (page, déplacement) : il faut une table des pages et une valeur de translation par cadres de page.
      3. segmentation : l'adresse logique est simplement un déplacement dans le segment associé : il faut une valeur de translation par segment.


next up previous index
Next: Une première technique : Up: Gestion de la mémoire Previous: Le problème   Index
Alain GRIFFAULT
2000-12-22