• Aucun résultat trouvé

sur les sites de localisation.

Considérons qu'il faut créer un segment de taille T dans la partition P. Si le site de localisation de la partition est le site local, la solution est simple: il sut d'avoir un pointeur de plage libre dans P, allouer le segment à cette adresse, et incrémenter le pointeur de T. Par contre, si le site localisateur de P est distant, il faudrait un échange de messages avec ce site.

Pour éviter cela, nous utilisons une allocation à deux niveaux: au niveau de la partition, nous allouons desblocs d'allocation; puis, dans ces blocs, nous allouons les segments. Les blocs d'allocation sont des plages d'adresses de taille intermédiaire entre celle des partitions et celle des segments. Chaque site possède un bloc d'al-location appartenant à chacune des partitions existantes dans le système, et alloue les segments dans les blocs correspondant aux partitions dans lesquelles il faut les allouer, et ceci sans avoir à contacter le site localisateur des partitions concernées. Lorsqu'un bloc est épuisé, il est remis au site localisateur de la partition à laquelle le bloc appartient, et un nouveau bloc est retiré.

De plus, chaque site possède un bloc courant dans lequel il alloue les segments pour lesquels aucune partition n'a été demandée. Ce bloc est pris dans une partition choisie en fonction de la charge de son site localisateur. Un nouveau choix est fait à chaque retrait de bloc.

De cette manière, on réduit les communications entre le site qui veut créer un segment et le site localisateur de la partition dans laquelle il faut le créer. Cela permet une création très rapide de segments, et justie l'utilisation d'Arias pour des données dont la durée de vie est très courte.

3.4 La cohérence et la synchronisation

Une critique souvent adressée aux systèmes de mémoire virtuelle partagée est qu'ils font payer à toutes les applications le coût d'un service de cohérence et de synchronisation qu'elles n'ont pas demandé et qui s'avère souvent mal adapté à leurs besoins. Après avoir étudié les diérents modèles de cohérence et de synchronisation (désormais CeS) proposés dans la littérature, nous concluons qu'aucun modèle de CeS n'est idéal. La prolifération de modèles ne fait que soutenir cette conclusion.

Dans Arias aucun modèle de cohérence et de synchronisation n'est imposé aux applications. Celles-ci ont la possibilité de choisir parmi un ensemble de modèles celui qui leur convient le mieux. Toutefois, elles ne sont pas contraintes à le faire. Si une application n'a pas besoin de synchroniser ses accès à la mémoire, elle n'utilise aucun modèle et ne paie aucun surcoût. Arias ore la possibilité d'ajouter de nouveaux modèles de cohérence et de synchronisation à l'ensemble de base.

Dans cette section nous présentons notre approche et sa justication, ensuite nous décrivons l'architecture de notre service de CeS et les fonctionnalités qu'il assure. En n de section la mise en ÷uvre du protocole de cohérence à l'acquisition illustre l'utilisation de notre service.

52 Chapitre 3. Présentation générale de Arias

3.4.1 L'approche Arias

Nous prenons une approche par factorisation. Nous proposons la construction d'un support (une couche générique) qui prend en charge les fonctionnalités d'un service de CeS qui ne limitent pas le choix du modèle. Le service de cohérence et de synchronisation sera complété par un protocole spécialisé de CeS qui s'appuie sur la couche générique et qui met en ÷uvre un modèle particulier.

Après avoir passé en revue les tâches à la charge d'un service de CeS, nous sommes arrivés à la conclusion que les seules tâches qui ne limitent pas le choix du modèle sont la dénition de l'unité de cohérence et de synchronisation, et la localisation de ces unités dans le système.

L'unité de cohérence et synchronisation que nous proposons est la zone. Unezone

est une suite d'octets dépourvue de toute sémantique et sans limite de taille mais totalement incluse dans un segment (cf. section 3.3). Une zone est désignée par son adresse initiale et spéciée par son adresse et sa taille.

Toute zone a une copie dite copie maîtresse qui réside dans un site particulier appelé le maître de la zone. Le site maître est responsable de décider de tous les aspects de synchronisation et de cohérence concernant la zone (nombre de copies, mobilité, protocole de synchronisation, etc.). Toute zone présente dans le système a un site maître à tout moment, mais le site maître d'une zone ne reste pas forcément toujours le même. La localisation des zones dans le système est basée sur le concept de maître de zone.

Si une application a besoin d'accéder à une zone, elle en fait la demande auprès d'un protocole de CeS spécique; si ce protocole s'aperçoit que le maître de la zone est le site même, il prend en charge la demande. Dans le cas contraire, elle est dirigée vers le maître sans que le protocole spécique ait à s'inquiéter de la recherche du maître de la zone. A un instant donné une zone est associée à un seul protocole spécique de CeS, mais cette association n'est pas irrévocable.

La fonction principale de la couche générique de cohérence et synchronisation est de fournir une association zone / maître de zone transparente aux protocoles spécialisés. Nous avons décidé que ces services prendraient l'allure d'une couche d'envoi et de réception de messages. La couche générique permet donc l'envoi de messages vers le maître d'une zone déterminée et la réception de la réponse.

Pour répondre aux besoins d'un outil de diusion sélective dans plusieurs proto-coles (par exemple. copies multiples avec invalidation), nous fournissons une abst-raction supplémentaire: lebus. Un bus permet d'associer plusieurs messages et d'at-tendre toutes ou une partie des réponses pour continuer.

Les éléments de la couche générique et son architecture sont détaillés dans la section suivante.

3.4.2 Architecture générale du service de CeS

Sur tous les sites nous allons avoir la couche générique de synchronisation et de cohérence, et sur cette couche, les protocoles de CeS spécialisés. Les applications peuvent ou non utiliser un protocole spécialisé pour faire leurs accès à la mémoire. La gure Fig. 3.2 montre cette situation.

3.4. La cohérence et la synchronisation 53 de Cohérence et Protocoles spécialisés de Synchronisation R É S E A U P1 P2 ... Pn Applications P1 P2 ... Pn Applications

Couche Générique de Couche Générique de

Cohérence et Synch. Cohérence et Synch.

Fig. 3.2  Architecture générale du sous-système de cohérence et synchronisation

La couche générique va acheminer les messages de synchronisation et de cohérence au maître de la zone concernée et leurs réponses. Ces messages contiennent deux types d'informations:

 Des informations de synchronisation et de cohérence à interpréter par le proto-cole spécialisé. Ces informations consistent, par exemple, en demandes/accords des droits d'accès ainsi qu'au contenu des zones. Une zone est envoyée soit pour répondre à une demande soit pour maintenir la cohérence entre les diérentes copies.

 Des informations qui concernent exclusivement la couche générique. Ces infor-mations indiquent la zone concernée par le message, le protocole spécialisé mis en jeu et des informations concernant la nature du message (déplacement de la maîtrise de la zone, envoi d'une copie de la zone, ou réponse à un message). Pour atteindre le maître d'une zone, la couche générique fait appel au service de localisation (cf. section 3.3) qui lui indique qui est le site primaire du segment auquel la zone appartient. Sur le site primaire ledescripteur du segmentstocke l'association zone maître de zone qui permet à la couche générique de savoir à quel site elle doit envoyer le message. Des caches sur tous les sites nous permettent de stocker l'identité des maîtres des zones auxquelles on a accédées auparavant. Ces caches sont des fragments des descripteurs des segments qu'on a couplés. Ils sont mis à jour lors d'un défaut de zone dans le cache.

Un protocole de cohérence est un ensemble de routines et de structures de données placées sur tous les sites et identiées de manière unique. Chaque protocole spécialisé doit avoir une routine de gestion de messages (un Handler) associée. Cette routine est activée lorsqu'un message pour ce protocole est reçu par la couche générique. Le Handler est chargé d'interpréter les messages qui arrivent au protocole et de déclencher les actions nécessaires.

La couche générique fournit le moyen d'enregistrer de nouveaux protocoles. Elle leur associe des identicateurs uniques et stocke l'association routine identicateur de protocole.

54 Chapitre 3. Présentation générale de Arias