Chapitre 4

Proposition pour Guide

[Table des matières]

1 Introduction

Le service de désignation est une fonction importante du système Guide, il doit permettre aux utilisateurs et aux applications de nommer et d'utiliser leurs objets au moyen de noms symboliques.

Le regroupement des différentes machines connectées au sein d'une même cellule et l'extension à des interconnexions de cellules nécessitent la conception d'un service de désignation global. Un tel service doit à la fois pouvoir contenir un nombre quasiment illimité de machines et d'utilisateurs et résister aux pannes. Le service doit donc répondre à de fortes contraintes de disponibilité et d'efficacité.

Le but de ce chapitre est de présenter le schéma du service de désignation extensible et tolérant les pannes que nous mettrons en oeuvre sur le système Guide.

[Table des matières]

1.1 Objectifs

La fonction de base de la désignation est d'associer aux noms symboliques d'objets leurs identificateurs internes (références système Guide). Pour réaliser cette fonction, on utilise des répertoires dont la structuration permet de construire un espace de noms. Ainsi pour chercher la référence d'un objet désigné par un nom, on doit fournir son chemin d'accès. Un tel chemin est formé par la concaténation des noms des répertoires traversés pour accéder à l'objet.

Pour concevoir un service de désignation extensible, il faut répondre aux objectifs suivants :

Il faut noter que l'extension ne consiste pas simplement en un regroupement d'espaces de noms, elle remet également en question les techniques utilisées pour résister aux pannes et pour assurer l'efficacité des mécanismes.

[Table des matières]

2 Description du service

Le service de désignation est bâti au-dessus du système Guide. L'interface qu'il fournit aux utilisateurs est similaire à celle du système de fichiers d'UNIX. Les noms sont indépendants de la localisation des objets qu'ils désignent, leur recherche s'effectue dans une arborescence unique et globale à un ensemble de cellules Guide.

Un objet serveur de noms est un objet Guide, c'est donc un objet passif. Cependant nous avons gardé l'appellation Serveur (plutôt que service) car cet objet a la même fonction qu'un serveur dans un système classique.

[Table des matières]

2.1 Niveaux de service

Le service de désignation est sollicité par les différentes applications du système (Programmes Guide, Cyrilnote2 et interpréteurs de commandes), on y accède par création d'une instance de la classe serveurs de noms (Name server). Chaque application exécute donc une instance particulière, cela nous permet d'utiliser les variables de ces instances pour stocker l'environnement du service et son état (par exemple : répertoire par défaut, répertoire de travail, contenu du cache utilisateur).

Le serveur de noms est organisé en deux niveaux :

Niveau client
Ce niveau d'utilisation permet des opérations de recherche et de création de noms dans l'arbre de désignation. Il y a aussi toutes les opérations évoluées de manipulation de noms introduites dans le système UNIX comme ls, mkdir. Le niveau client sert en outre à rendre la distribution et la duplication de l'espace de noms totalement transparente.
Niveau administration
En règle générale, toutes les opérations qui manipulent les répertoires inter-cellules note3sont réservées à l'administration. En particulier ainsi que nous le verrons, l'opération d'extension est mise en oeuvre à ce niveau. D'autres aspects liés à la tolérance aux pannes et à la cohérence des copies multiples appartiennent également à ce niveau car ils nécessitent une intervention explicite de l'administrateur.

[Table des matières]

2.2 Structure du service

Les composantes fonctionnelles du service de désignation sont modélisées par des objets, elles seront développées progressivement dans la suite du rapport. Ces composantes sont :

L'interaction entre ces composantes est représentée dans la Fig 0 , le Service de Stockage de Guide constitue la partie système qui gère la persistance des objets. Pour notre application, seule la composante fonctionnelle catalogue doit être persistante. Les autres composantes sont créées et détruites dynamiquement au moment de l'utilisation du service.

Image vue-globale.gif

Fig 0. Architecture des composantes fonctionnelles

[Table des matières]

3 Organisation de l'espace de noms et Extensibilité

L'espace de noms proposé pour le système Guide est une arborescence à base d'objets, elle est unique et globale à un ensemble de cellules interconnectées. L'extension est obtenue par un regroupement par le haut d'un ensemble d'espaces locaux à des cellules . Cette approche permet de regrouper un grand nombre de cellules moyennant peu de répertoires globaux, elle possède aussi l'avantage de préserver la désignation locale à une cellule puisqu'elle ne modifie pas sa structure (voir Lampson ).

La structure de l'espace ainsi obtenue sera formée de deux parties disjointes, la première est la partie supérieure de l'arbre, elle sera qualifiée de niveau global ou inter-cellulaire, la seconde partie correspond au niveau inférieur et sera dite niveau local ou intra-cellulaire.

Image espace-noms.gif

Fig 1. Espace de noms de Guide

Cette séparation a un impact considérable sur les méthodes de conceptions utilisées dans les deux niveaux, chacun d'eux possède des propriétés particulières et nécessite des mécanismes adaptés. L'autre conséquence concerne la structure des noms absolus globaux qui sont composés de deux parties :

  1. Un préfixe formé de répertoires globaux, il commence par le nom symbolique de la racine globale.
  2. Un suffixe formé de répertoires locaux, il commence par le nom symbolique de la racine d'une cellule.

[Table des matières]

3.1 Conventions de nommage

Des conventions de nommage ont été prises pour accélérer la recherche de noms et pour bien spécifier ses règles d'utilisation. Elle définissent la manière d'écrire les noms dans les applications et l'état du service, à l'initialisation et au cours de son utilisation. Les conventions prises sont :

  1. Les noms absolus donnés à partir de la racine globale de l'espace seront précédés du symbole '%'. Dans l'exemple suivant la racine globale est désignée par le nom %Grenoble.
ex : %Grenoble/IMAG/Bull-IMAG/users/layaida