Segmentation de la mémoire virtuelle

Comme les techniques de gestion de la mémoire virtuelle par pagination engendrent une fragmentation interne, un moyen de résoudre ce problème est de ne plus travailler avec des blocs de tailles fixes (pagination), mais bien d'adapter la taille du bloc selon la taille du processus qui doit entrer en mémoire (segmentation).

En pagination, lorsqu'un processus libère un espace mémoire, comme toutes les pages ont une taille identique, un autre process peut prendre la place ainsi libérée.

En segmentation, comme la taille du segment est fonction de la taille du processus qui s'est présenté en entrée, lorsque le processus libère la mémoire, il faut que le processus suivant ait une taille similaire.

Adressage et segmentation

Dans un système de pure segmentation, le principe est presque similaire à celui de l'adressage en mémoire paginée.

L'adresse virtuelle est composée d'un numéro de segment, et du déplacement à effectuer.

La différence par rapport à l'adressage en mémoire paginée est que la valeur du déplacement n'est plus ici concaténée à celle trouvée dans la table de pages, mais réellement additionnée à la valeur trouvée dans la table de segments.

Structure d'une entrée dans la table des segments

r | a | l | R | W | E | A | s' |

r : Bit qui détermine l'endroit où se trouve le segment (Segment residence bit).

  • r = 0 : le segment ne se trouve pas en Mp.
  • r = 1 : le segment se trouve en Mp.

a : Adresse du segment en Ms (si r = 0).

l : Longueur du segment, pour éviter que la valeur de déplacement dans la conversion d'adresse ne pointe hors des bordures du segment.

Bits de protection :

  • R : autorise l'accès lecture (Read). Le processus peut lire ou copier le segment s'il le désire.
  • W : autorise l'accès écriture (Write). Le processus peut modifier chaque partie du segment, ajouter des informations, ou détruire toutes les informations contenues dans le segment.
  • E : autorise l'accès exécution (Execute). Dans le cas où le segment contient des données, il ne peut être exécuté.
  • A : autorise l'ajout d'information (Append). Le processus peut ajouter des informations, mais ne peut pas modifier les informations existantes.

s' : Adresse de début du segment (Base address segment) si r = 1.

Document créé le 15/05/2004, dernière modification le 27/10/2018
Source du document imprimé : https://www.gaudry.be/systeme-exploitation-memoire-segmentation.html

L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.