ASIM team
LIP6 Laboratory Paris, France |
Avant l'appel à la primitive Send ou Receive, les données
doivent être verrouillées. Si les données font partie de l'espace
en mémoire d'un processus, celui-ci peut les déverrouiller par erreur (appel système
munlock()
) en cours de transfert. Du côté émetteur, on
risque ainsi d'envoyer le contenu de pages physiques d'autres
processus chez le récepteur, ce qui pose le problème de la
confidentialité des données. Du côté récepteur, on risque de
voir des données venir se déposer dans des zones allouées entre temps à d'autres
processus, voire même au noyau, et on se trouve donc également confronté au
problème de l'intégrité du système. On pourrait imaginer interdire
l'appel système munlock()
pendant les transferts, mais la fin
prématurée du processus repose les mêmes problèmes.
La solution, mise en uvre au sein de la sous-couche VMR (Virtual Memory
Referencer), consiste à créer et gérer de façon adéquate une carte
de la mémoire au sein du système de mémoire virtuelle de Mach, du même type
que celles qui décrivent les espaces en mémoire des processus et du
noyau. Cette carte n'est associée à aucun processus. Dès qu'une
opération Send ou Receive intervient dans un quelconque
processus, on recherche un espace libre dans la carte de la mémoire pour y
insérer des entrées référençant entièrement les objets de la mémoire Mach
correspondants (le plus souvent il s'agit d'une zone du tas ou de la
pile). On simule alors des fautes de page sur ces entrées de carte
de la mémoire puis on les verrouille. On a alors la garantie que même si le
processus vient à les déverrouiller, les références de notre carte
de la mémoire empêcheront les données de réellement quitter la mémoire
physique, par exemple pour retourner dans la zone de pagination sur
disque.
Plutôt que de libérer la carte de la mémoire à chaque fin de transaction, une opération périodique de ramasse-miettes se charge de la mettre à jour. Le coût de la couche VMR est le suivant : il faut 6 µs sur un Pentium 200 pour vérifier qu'une zone en mémoire de 4 Ko est déjà référencée dans la carte de VMR, alors qu'il faut plus de 200 µs pour l'y insérer.
La figure 1 présente l'empilement des couches de protocoles, depuis le pilote de périphérique, jusqu'à la couche de plus haut niveau adaptée aux opérations en adresses virtuelles. La figure 3 présente les messages en jeu dans un échange Send/Receive sans faute (MICP n'intervient donc pas).
Server design A. Fenyö
mpc@mpc.lip6.fr - contact people About this Web Site $Date: 1998/02/19 01:30:00 $ |
Copyright © 1997-1998 UPMC/LIP6
All rights reserved |