Brevet FR2643734A1 — publié le 19900831

La présente invention concerne les systèmes informatiques utilisant des systèmes de fichiers hiérarchisés. En ce qui concerne le coût et la complexité, les systèmes informatiques que l'on trouve aujourd'hui vont des ordi- nateurs personnels de faible prix à microprocesseur jusqu'au calculateurs centraux très coûteux et élaborés. On peut cependant dire que les systèmes informatiques comportent les mêmes éléments essentiels: au moins une unité centrale de traitement qui contrôle l'exécution des tâches de l'ordi- nateur, des unités d'entrée/sortie qui contrôlent l'entrée et la sortie des informations du système informatique, et une mémoire ou un domaine de mémorisation qui conserve les informations utilisées par l'unité centrale de traitement pour exécuter les tâches de l'ordinateur. L'unité centrale de traitement est contrôlée par le système d'exploitation, qui impose la manière d'exécuter certaines tâches de l'ordinateur. L'une des parties du système d'exploitation est le système de gestion des fi- chiers, qui détermine et contrôle la structure des fichiers du système informatique. La "structure de fichiers hiérarchisée" est l'un des types de structure de fichiers que l'on utilise. Dans une structure de fichiers hiérarchisée, les fichiers sont orga- nisés en une structure d'arbre comprenant un noeud de racine unique appelée "racine". On peut relier à la racine un ou plusieurs noeuds, et on peut relier à chacun des noeuds un ou plusieurs autres noeuds. Chaque noeud qui n'est pas une feuille (c'est-à-dire chaque noeud auquel est relié un autre noeud) de la structure en arbre est considéré comme étant un répertoire de fichiers; les fichiers situés aux noeuds qui sont des feuilles de l'arbre sont des répertoires, des fi- chiers normaux ou bien des fichiers d'unité particulière. Tout fichier possède,un nom identifié par un nom de chemin d'accès qui décrit la manière de localiser le fichier dans la hiérarchie du système de fichiers. Le nom du chemin d'accès est un suite de noms d'éléments ou de noeuds, séparés par des caractères "/". Un nom d'élément est une suite de caractères qui indique un nom de fichier contenu de façon univoque dans l'élément précédent. Un nom de chemin d'accès complet commence par le caractères "/", qui spécifie un fichier qui peut être trouvé en partant de la racine du système de fichiers et en parcourant l'arbre des fichiers en suivant les branches qui mènent aux noms d'éléments suc- cessifs des noms du chemin d'accès. Par exemple, le nom de chemin d'accès /USR/SRC/CMD/UN.C représente la partie, iden- tifiée par le chemin d'accès passant par les noeuds 10, 15, , 25 et 30, d'une structure en arbre illustrée figure 1. De nombreuses instructions permettent de manipuler les structures de fichiers et les fichiers se trouvant dans la structure de fichiers, y renvoyer ou y accéder. Ces ins- tructions comprennent les instructions de montage "mount" et de démontage 1'unmount". L'instruction "mou-nt" relie un premier système de fichiers (le terme "système de fichiers" sera utilisé ici, comme il l'est dans la technique, pour identifier une structure de fichiers hiérarchisée présente dans un système informatique) à un second système de fichiers, tandis que l'instruction système "unmount" dis- socie le premier système de fichiers du second système de fichiers. Une fois que l'on a monté le système de fichiers, on accède à l'information contenue dans ce système de fichiers par l'intermédiaire du répertoire du système de fichiers de racine sur lequel il est monté. Ceci est illustré figure 2. Le système de fichiers de racine 40 possède les répertoires ou noeuds BIN 42, SRC 45 et USR 46. Le système de fichiers 70 est monté sur le répertoire USR et on peut accéder au noeud 72 par le nom de chemin d'accès /USR/BIN/DATE. On pourra trouver d'autres informations sur l'instruction "mount" dans la plupart des manuels des systèmes d'exploi- tation. On pourra trouver des informations plus précises relatives au contexte du système d'exploitation UNIX dans l'ouvrage de J. Bach intitulé The Design of the Unix Operating System, paru en 1986 chez Prentice-Hall. Comme on peut le voir d'après la description ci-dessus, les systèmes de fichiers sont montés répertoire par répertoire, c'est- à-dire qu'on monte au moins un répertoire sur un système de fichiers comprenant au moins un répertoire. Dans un système d'exploitation UNIX classique, une fois que l'on a monté un système de fichiers sur un répertoire donné, les processus ne peuvent plus accéder au "inode" (noeud indépendant) de ce répertoire. Cependant, plus les utilisateurs et les applications exécutées sur le système informatique deviennent élaborées, plus il devient souhaitable de pouvoir monter des systèmes de fichiers processus par processus, même si les processus se trouvent à l'intérieur du même répertoire. Il est ainsi souhaitable de pouvoir exécuter plusieurs montages à l'intérieur d'un même répertoire, afin de pouvoir utiliser différents montages en fonction du processus en cours d'exécution. C'est pourquoi l'un des buts de la présente invention est de proposer un système informatique permettant un montage processus par processus des systèmes de fichiers dans une structure de système de fichiers hiérarchisée. Pour permettre le montage processus par processus, on crée un répertoire temporaire en dehors du répertoire de racine courant. On monte alors le système de fichiers com- mençant au répertoire de racine sur le répertoire temporaire au moyen d'une fonction originale de rétro-bouclage du système de fichiers qui fait en sorte que le système de fichiers est virtuellement dupliqué, avec le répertoire temporaire faisant office de répertoire de racine. On peut alors exécuter un montage du système de fichiers contenant les fichiers spécifiques du processus sur le répertoire temporaire sans affecter le système de fichiers d'origine. On exécute alors une instruction "change root directory" de changement de répertoire de racine afin de passer du répertoire de racine au répertoire temporaire, puis on continue l'exécution en considérant que le système de fichiers monté a pour racine le répertoire temporaire. Plus précisément, le procédé de l'invention comprend les étapes consistant à: créer un répertoire temporaire ratta- ché au répertoire de racine; exécuter un montage rétro- bouclé du système de fichiers sur ce répertoire temporaire, ce système de fichiers étant dupliqué virtuellement avec le répertoire temporaire comme répertoire de racine; monter des fichiers sur le répertoire temporaire; et transformer le répertoire de racine en répertoire temporaire,, de sorte que le système de fichiers vu par le processus soit une duplication virtuelle du système de fichiers d'origine, avec un montage spécial visible seulement par ce processus et que les montages effectués par ce processus dans le système de fichiers ne soient visibles que par ce processus ou par un processus ayant pour racine le même répertoire temporaire, afin de pouvoir ainsi obtenir un montage processus par pro- cessus. La présente invention a également pour objet un module système de gestion de fichiers pour système informatique, permettant de mettre en oeuvre un tel procédé On va maintenant donner un exemple de réalisation de l'invention, en référence aux figures annexées. La figure 1 illustre une structure de fichier hiérar- chisée utilisée dans les systèmes informatiques. La figure 2 illustre l'utilisation de l'instruction système "mount" utilisé par les systèmes d'exploitation de l'art antérieur. La figure 3 est un schéma par blocs du noyau du système d'exploitation UNIX utilisé dans le mode de réalisation préféré du système de la présente invention. La figure 4 est un organigramme décrivant le mode de mise en oeuvre préféré du processus de la présente invention. La figure 5 est un schéma par blocs illustrant le mode de réalisation préféré du système de la présente invention. Grâce au système de la présente invention, on peut réaliser un montage processus par processus dans un système informatique utilisant une structure de fichiers hiérarchi- sée, ce qui donne au système informatique une plus grande souplesse d'utilisation et de nouvelles possibilités. Le système d'exploitation UNIX (UNIX est une marque déposée de AT&T) est un système d'exploitation utilisant une structure de fichiers hiérarchisée. Bien que l'on décrive ci-dessous le mode de réalisation préféré dans le contexte d'un système d'exploitation UNIX, il est évident pour l'homme du métier que le système de la présente invention peut être appliqué à d'autres systèmes informatiques uti- lisant un système d'exploitation faisant usage d'une struc- ture de fichiers hiérarchisée. Dans un système informatique du type UNIX, le système d'exploitation interagit directement avec le matériel, assu- rant ainsi aux programmes des services communs et isolant le logiciel et les utilisateurs des particularismes du matériel d'un système informatique donné. Si l'on représente le système sous la forme d'une succession de couches, le sys- tème d'exploitation est généralement appelé le "noyau système" ou simplement "noyau", ce qui souligne son isolé- ment par rapport aux programmes utilisateurs. Du fait que les programmes sont indépendants du matériel sous-jacent, il est aisé de déplacer les programmes entre des systèmes UNIX tournant sur des matériels différents. Le système de gestion de fichiers UNIX, situé à l'intérieur du noyau, organise et contrôle l'accès aux structures de fichiers. Le noyau est représenté de façon globale sur la figure 3. La figure 3 montre trois niveaux: utilisateur/programmes 74, noyau 75 et matériel 76. Le moduled'appel au système représente la frontière ou interface entre l'utilisateur ou les programmes utilisateurs et le noyau. Les appels au système sont divisés en appels au système qui s'interfacent avec le système de gestion de fichiers 77, et en appels au système qui interagissent avec le système de contrôle des processus 78. Le système de contrôle des processus est responsable de la synchronisation entre processus, de la communication entre processus, de la gestion de la mémoire et de la planification des processus. Le système de gestion de fichiecs communique avec le module de contrôle- du matériel 80 qui assure l'interfaçage avec le matériel du système informatique et gère les fichiers, alloue l'espace mémoire aux fichiers, administre l'espace mémoire libre, contrôle l'accès aux fichiers et va y chercher les données pour les utilisateurs et les programmes. On va maintenant décrire le système en référence aux figures- 4 et 5. Au bloc 100 de la figure 4, on crée un répertoire temporaire. Ce répertoire est de préférence créé hors du répertoire de racine afin d'éliminer toute confusion ultérieure avec les étapes suivantes du processus et pour clairement distinguer le sousrépertoire temporaire des autres sous-répertoires de la même racine. On identifie ce répertoire en tant que "temporaire" car on préfère, après achèvement de l'exécution du processus pour lequel on avait créé le système de fichiers, retirer le répertoire tempo- raire et les noeuds qui y sont reliés afin de restaurer le système de fichiers à sa structure antérieure. Il n'est cependant pas indispensable de retirer le répertoire temporaire, qui peut subsister indéfiniment dans la struc- ture du système de fichiers. La première étape décrite au bloc 100 de la figure 4 est illustrée par les figures 5a et b. La figure 5a montre le répertoire de racine 200, le sous-répertoire USR 205 et le sous-répertoire de USR iden- tifié SRC en 210. La figure 5b illustre le système de fi- chiers après exécution de l'étape 100 de la figure 4. Le répertoire temporaire TMP 215 a été créé, avec un sous- répertoire hors de TMP, identifié FOO en 220. Au bloc 105 de la figure 4, on monte le système de fichiers comprenant les répertoires 200, 205, 210, 215 et 220 sur le répertoire FOO 220, le répertoire FOO 220 donnant ainsi une image du contenu du répertoire de racine d'origine "/" 200. On a illustré ceci figure 5c, o le système de fichiers illustré figure 5b a été dupliqué en montant le système sur le répertoire FOO 220, donnant la structure FOO 220 illustrée par les noeuds de forme rectangulaire avec les sous-répertoires TMP 225, FOO 230, USR 235 et SRC 240. On réalise ce processus au moyen d'une technique originale que l'on appelera "montage rétro-bouclé", dans laquelle on duplique la structure de fichiers ou le système de fichiers en dehors dans un répertoire différent ou un système de fichiers différent en ajoutant un second pointeur qui donne la position du répertoire dans le système de fichiers. Ce processus produit un placement "virtuel" du répertoire à deux endroits. On notera que la duplication apparente des répertoires ne produit pas une duplication effective des répertoires, et qu'il n'existe donc qu'un seul ensemble de répertoires malgré le fait que les répertoires semblent reliés concuremment à deux noeuds différents. A l'étape 110 de la figure 4, le système de fichiers, par exemple un système de fichiers dont on souhaite qu'il soit particulier à un processus, est monté sur le système de fi- chiers temporaire que l'on a créé. Si l'on se réfère aux figures 5b et 5e, le système de fichiers illustré figure 5d comprenant les répertoires BIN et ETC sont montés sur le système de fichiers, plus précisément sur le sous-répertoire SRC 240. La structure résultante est représentée par les noeuds en forme de trapèze illustrés figure 5e. A l'étape de la figure 4, on modifie le répertoire de racine pour donner le noeud /TMP/FOO 220 de la figure 5e (dans le système d'exploitation UNIX, l'instruction "change root directory" de changement du répertoire de racine est "chroot"). Il en résulte un système de fichiers qui, vu par l'utilisateur ou par le processus, correspond à celui illustré figure 5f; c'est parce qu'il n'est visible que du processus qu'on s'y référera en employant la terminologie "processus par processus". La structure comporte le noeud de racine, qui était sur la figure 5e le répertoire FOO 220 et qui apparaît maintenant en tant que racine 260, avec les sous-directoires TMP 265 et FOO 270, ainsi que les sous-répertoires USR 275, SRC 280, BIN 290 et ETC 300. Le processus peut donc être exécuté dans la structure de fichiers de la figure 5f sans affecter les capacités des autres processus exécutés dans le système de fichiers d'ori- gine (illustré figure Sa). On peut voir que les étapes indiquées dans l'organigramme de la figure 4 peuvent être répétées, par exemple en créant un répertoire temporaire TMP1 avec un sous-répertoire FOO, et en montant les répertoires contenant les fichiers à exé- cuter pour un autre processus. En outre, le processus décrit peut être à nouveau répéte pour un second processus, ou un troisième processus, ou d'autres processus encore, chacun des processus étant monté sur un système de fichiers dis- tinct, ce qui permet d'émuler ou permettre un montage pro- cessus par processus. La technique de montage rétro-bouclée peut être aisément réalisée dans l'une des formes de mise en oeuvre du système d'exploitation UNIX. Cette forme de mise en oeuvre comporte un système de fichiers virtuel dans le noyau, ce qui la rend capable de gérer plusieurs types de systèmes de fichiers différents, par exemple plusieurs versions du système UNIX et des systèmes non-UNIX tels que MS-DOS. Un tel système de fichiers virtuel est décrit dans l'ouvrage de S.R. Kleiman intitulé Vnodes: an Architecture for Multiple File System Types in Sun UNIX, publié par Sun Microsystems, Inc. à Mountain View, Californie. Comme cela est décrit dans ce document, le "inode" (noeud indépendant) du système de fichiers classique de UNIX est renommé "vnode" (noeud virtuel). Toutes les manipulations de fichiers sont effectuées avec un objet "vnode". Les systèmes de fichiers sont manipulés par l'intermédiaire du système de fichiers virtuel. Chaque système de fichiers virtuel com- porte un équivalent de la rubrique de table de montage du système UNIX classique, qui spécifie le type de système de fichiers, le répertoire constituant le point de montage, les drapeaux génériques (par exemple "lecture seule") et un pointeur pointant sur des données spécifiques au type de système de fichiers. Une liaison à une liste des systèmes de fichiers montés permet de disposer de données dépendantes du système de fichiers. Ce système de fichiers virtuel permet d'exécuter des montages rétro-bouclés. Pour effectuer un montage rétro-bouclé, l'utilisateur exécute l'appel au système "mount()". Dans cette instruc- tion, l'utilisateur spécifie: (1 ) que cet appel doit être un montage rétro-bouclé, (2 ) le répertoire qui doit être monté et (3 ) le répertoire sur lequel ce dernier doit être monté. Comme on l'a souligné, la structure "vnode" du noyau contient un pointeur pointant sur les données spécifiques au système de fichiers virtuel. Pour un fichier rétro- bouclé, ces données comprennent, entre autres choses, un pointeur pointant sur le "vnode effectif" du fichier. Ainsi, si le répertoire A est monté en rétro-bouclage sur le répertoire B, alors, dans le noyau, le "vnode" du répertoire B est un "vnode" rétro-bouclé dont le "vnode effectif" est le "vnode" du répertoire A. Par exemple, lorsque, sur les figures 5e à f, le répertoire de racine "/" est monté sur le répertoire FOO 220, le "vnode" de FOO 220 comprend un pointeur pointant le répertoire de racine "/" en tant que répertoire réel. Lorsque le noyau reçoit une demande système de fichier destinée au répertoire FOO 220, le noyau exécute alors le code de recherche indépendant du système de fichiers avant d'appeler le code de recherche dépendant du système de fichiers correspondant au système de fichiers virtuel à l'intérieur duquel se trouve le "vnode". Comme le "vnode" du répertoire FOO se trouve dans le système de fichiers rétro-bouclé, on exécute l'opération de recherche en rétro- bouclage. Cette opération appelle l'opération de recherche du "vnode effectif", qui est le "vnode" du répertoire de racine "/". De cette manière, le contenu du répertoire FOO est le même que celui du répertoire de racine "/", car on trouve les mêmes fichiers dans l'un et l'autre répertoire. Le pointeur supplémentaire qui va faire pointer le réper- toire FOO sur le répertoire de racine "/" est le pointeur du "vnode effectif" dans le "vnode" rétro-bouclé du répertoire FOO. REVENDICATIONS 1. Un module système (77) de gestion de fichiers pour un système informatique comprenant une unité centrale de trai- tement, une unité d'entrée/sortie et une mémoire, l'unité centrale de traitement étant contrôlée par un système d'ex- ploitation, ce système d'exploitation comprenant ledit module système de gestion de fichiers, qui organise et con- trôle l'accès aux fichiers du système informatique, ce module de système de gestion de fichiers organisant les fichiers en un système de fichiers avec une structure de fichiers hiérarchisée comprenant un répertoire de racine et un ou plusieurs sous-répertoires, - module caractérisé en ce qu'il comprend en outre: - des moyens pour créer (100) un répertoire temporaire (215) rattaché au répertoire de racine (200), - des moyens pour exécuter (105) un montage rétro-bouclé du système de fichiers sur ce répertoire temporaire, ce sys- tème de fichiers étant dupliqué virtuellement avec le réper- toire temporaire comme répertoire de-racine, - des moyens pour monter (110) des fichiers -(220, 225, 230, 235, 240) sur le répertoire temporaire (215), et - des moyens pour transformer (115) le répertoire de racine en répertoire temporaire, de sorte que le système de fichiers vu par le processus soit une duplication virtuelle du système de fichiers d'ori- gine, avec un montage spécial visible seulement par ce pro- cessus. 2. Le module de la revendication 1, dans lequel lesdits moyens pour exécuter un montage rétro-bouclé du système de fichiers sur le répertoire temporaire comprennent: - des moyens pour créer un système de fichiers virtuel, et - des moyens pour créer un pointeur reliant le répertoire temporaire au répertoire de racine, de sorte que les deux répertoires contiennent la même information pour le pro- cessus. l1 3. Le module de la revendication 1, dans lequel le système d'exploitation est le système d'exploitation UNIX. 4. Le module de la revendication 3, dans lequel les moyens pour créer un répertoire temporaire rattaché au répertoire de racine prévoient l'exécution par le module système de gestion de fichiers de l'instruction de création de répertoire "make directory". 5. Le module de la revendication 3, dans lequel lesdits moyens pour exécuter un montage rétro-bouclé du système de fichiers sur le répertoire temporaire comprennent: - des moyens pour créer un système de fichiers virtuel, et - des moyens pour créer un pointeur reliant le répertoire temporaire au répertoire de racine, de sorte que les deux répertoires contiennent la même information pour le pro- cessus. 6. Le module de la revendication 3, dans lequel les moyens pour monter les fichiers contenant les données du processus sur le système de fichiers monté sur le répertoire temporaire prévoient l'exécution par le module système de gestion de fichiers de l'instruction de montage "mount". 7. Le module de la revendication 3, dans lequel les moyens pour transformer le répertoire de racine en répertoire temporaire prévoient l'exécution par le module système de gestion de fichiers de l'instruction de chan- gement du répertoire de racine "change root directory" ("chroot"*r). 8. Un procédé pour dupliquer virtuellement des systèmes de fichiers afin de permettre un montage processus par processus dans un système informatique comprenant une unité centrale de traitement, une unité d'entrée/sortie et une mémoire, l'unité centrale de traitement étant contrôlée par un système d'exploitation, ce système d'exploitation comprenant un module système de gestion de fichiers, ce module système de gestion de fichiers organisant et contrô- lant l'accès aux fichiers du système informatique, ce module de système de gestion de fichiers organisant les fichiers en un système de fichiers avec une structure de fichiers hiérarchisée comprenant un répertoire de racine et un ou plusieurs sous-répertoires, procédé caractérisé en ce qu'il comprend les étapes consistant à: - créer (100) un répertoire temporaire (215) rattaché au répertoire de racine (200), - exécuter (105) un montage rétro-bouclé du système de fichiers sur ce répertoire temporaire, ce système de fichiers étant dupliqué virtuellement avec le répertoire temporaire comme répertoire de racine, - monter (110) des fichiers (220, 225, 230, 235, 240) sur le répertoire temporaire (215), et - transformer (115) le répertoire de racine en répertoire temporaire, de sorte que le système de fichiers vu par le processus soit une duplication virtuelle du système de fichiers d'ori- gine, avec un montage spécial visible seulement par ce pro- cessus et que les montages effectués par ce processus dans le système de fichiers ne soient visibles que par ce processus ou par un processus ayant pour racine le même répertoire temporaire, afin de pouvoir ainsi obtenir un montage processus par processus. 9. Le procédé de la revendication 8, dans lequel l'étape consistant à exécuter un montage rétro-bouclé du système de fichiers sur le répertoire temporaire comprend les étapes consistant à: - créer un système de fichiers virtuel, et - créer un pointeur reliant le répertoire temporaire au répertoire de racine, de sorte que les deux répertoires contiennent la même information pour le processus. 10. Le procédé de la revendication 9, dans lequel le système d'exploitation est le système d'exploitation UNIX. 11. Le procédé de la revendication 10, dans lequel l'étape consistant à créer un répertoire temporaire rattaché au répertoire de racine comprend l'exécution de l'instruc- tion de création de répertoire "make directory". 12. Le procédé de la revendication 10, dans lequel l'étape consistant à exécuter un montage rétro-bouclé du système de fichiers sur le répertoire temporaire comprend les étapes consistant à: - créer un système de fichiers virtuel, et - créer un pointeur reliant le répertoire temporaire au répertoire de racine, de sorte que les deux répertoires con- tiennent la même information pour le processus. 13. Le procédé de la revendication 10, dans lequel l'étape consistant à monter les fichiers contenant les données du processus sur le système de fichiers monté sur le répertoire temporaire comprend l'exécution de l'instruction de montage "mount". 14. Le procédé de la revendication 10, dans lequel l'étape consistant à transformer le répertoire de racine en répertoire temporaire comprend l'exécution de l'instruction de changement du répertoire de racine "change root direc- tory" ("chroot").