Brevet FR2773237A1 — publié le 19990702

La présente invention concerne d'une manière générale les ordinateurs, ainsi qu'un code de système d'exploitation pour gérer l'accès à un disque d'ordina- teur et, d'une manière plus spécifique, un procédé pour modifier d'une manière dynamique le "mappage" de parti- tions du disque vers une unité logique du code du système d'exploitation. Dans un ordinateur comportant un ou plusieurs dispositifs de mémorisation, tels qu'un disque dur, les dispositifs de mémorisation sont souvent séparés en des partitions différentes, ce qui fait que certaines données ou certains programmes peuvent être mémorisés séparément. Par exemple, dans un ordinateur qui utilise le système d'exploitation DOS ou WINDOWS de Microsoft, tel que pro- duit par la Microsoft Corporation, Redmond, Washington, une unité de disque d'ordinateur individuelle peut être "partitionnée" (divisée) en une partition primaire, laquelle contiendrait le système d'exploitation DOS ou WINDOWS, ainsi que d'autres programmes d'application, et en une partition utilitaire, laquelle contiendrait des programmes du type utilitaire ou maintenance. Dans certains cas, il n'est pas souhaitable de laisser un utilisateur accéder à la partition utilitaire lors d'une utilisation normale de l'ordinateur, étant donné que l'utilisateur risquerait alors de perdre ou de détruire facilement les données mémorisées sur son disque dur, de reconfigurer l'ordinateur ou de se fourvoyer dans d'autres situations dont il est préférable de tenir éloi- gné l'utilisateur. Par conséquent, une solution consiste à configurer la partition utilitaire de manière à ce qu'elle soit "invisible" pour le système d'exploitation et, donc, inaccessible à l'utilisateur. Ceci s'effectue en établissant un code de type de partition, associé à la partition utilitaire, à une valeur qui n'est pas recon- naissable par le système d'exploitation, ou qui est inva- lide, et en établissant un indicateur d'activité comme "inactif". Cependant, la partition primaire reste "visi- ble", celle-ci possédant un code de type de partition qui est reconnaissable par le système d'exploitation, ou qui est valide, ainsi qu'un indicateur d'activité établi comme "actif". Bien que la partition utilitaire soit invisible pour l'utilisateur, le scénario ci-dessus est associé à plusieurs problèmes. Un problème se pose lors du proces- sus de fabrication alors qu'un logiciel est chargé sur le disque dur. Dans de telles situations, il est souhaitable de pouvoir permuter entre partitions utilitaire et pri- maire. Cependant, un système d'exploitation de l'ordina- teur ne fait référence qu'aux partitions visibles comme unités logiques, en leur assignant ou en leur "mappant" une lettre identificatrice de lecteur (unité) pour la ré- férence. Lorsqu'on utilise, par exemple, le système d'ex- ploitation DOS, la partition primaire est une partition active située sur le disque dur et il lui est assignée la lettre identificatrice de lecteur "C:". Par ailleurs, la partition utilitaire est inactive et aucune lettre iden- tificatrice de lecteur ne lui est assignée. Un autre pro- blème, avec le scénario ci-dessus, est qu'un grand nombre de processus de chargement de logiciel incluent une seule référence logique pour un disque dur, tel que le lecteur "C:" dans l'exemple du DOS, et ne peuvent par conséquent pas effectuer de distinction entre les deux partitions. Ceci tient au fait que, comme mentionné ci-dessus, seule l'une des partitions est associée à une lettre identifi- catrice de lecteur. La solution typique pour résoudre les problèmes mentionnés ci-dessus consiste à changer le code de type de partition de la partition souhaitée en un code "ac- tif", et à réamorcer l'ordinateur. Cependant, de tels ré- amorçages sont onéreux en ce sens qu'ils nécessitent une importante quantité de temps et de ressources. En outre, les réamorçages ont tendance à perdre ou à reconfigurer certains aspects de l'ordinateur que l'utilisateur peut souhaiter préserver. Par exemple, si un programme mémori- sé sur la partition primaire provoque une panne de l'or- dinateur sous certaines conditions, il peut s'avérer sou- haitable d'utiliser un programme de maintenance mémorisé sur la partition utilitaire pour examiner l'ordinateur. Cependant, pour accéder au programme de maintenance, l'ordinateur se doit d'être réamorcé, ce qui fait que l'on ne se trouve plus en mesure d'examiner l'état de l'ordinateur comme lors de la panne. En réponse, on fournit un système et un procédé pour modifier les "mappages" de partitions vers des uni- tés logiques dans un dispositif de mémorisation d'un or- dinateur. Dans un premier mode de réalisation, l'ordina- teur comporte un processeur pour exécuter un code de sys- tème d'exploitation et un dispositif de mémorisation à disque dur. Le disque dur, auquel peut accéder le proces- seur, comporte au moins deux partitions, la première par- tition étant initialement active et étant d'un type qui est reconnu par le système d'exploitation et la seconde partition étant initialement inactive et étant d'un type qui n'est pas reconnu par le système d'exploitation. Lorsque l'ordinateur est réamorcé, une valeur de référence logique, dans le code du système d'exploita- tion, pointe vers la première partition. Une routine de changement de référence est alors lancée pour permuter d'une manière dynamique la valeur de référence logique vers la seconde partition. Ceci s'effectue en obtenant que la routine de changement de référence modifie certai- nes tables prédéfinies dans le code d'exploitation. Les tables sont utilisées par le code du système d'exploita- tion afin de "mapper" la référence logique vers une par- tition particulière. Par conséquent, après que la routine de changement de référence a orienté la référence logique vers la seconde partition, le processeur peut continuer d'exécuter le code d'exploitation, sans que l'on ait à réamorcer l'ordinateur. Un avantage technique résultant est qu'il de- vient possible d'accéder aux deux partitions du disposi- tif de mémorisation sans avoir à effectuer de réamorçage intermédiaire, d'o l'économie d'une grande quantité de temps. Un autre avantage technique résultant est que les programmes ou les routines mémorisés sur une parti- tion peuvent être utilisés pour configurer l'ordinateur et que les programmes et les routines mémorisés sur l'au- tre partition peuvent alors être utilisés pour effectuer la maintenance de l'ordinateur configuré, ou d'autres opérations utilitaires. On va maintenant décrire la présente invention, à titre d'exemple uniquement, en se reportant aux dessins annexés sur lesquels: - la figure 1 est un schéma fonctionnel d'un ordinateur destiné à implémenter un mode de réalisation, - la figure 2 est un diagramme structurel d'un disque dur de l'ordinateur de la figure 1, et - la figure 3 est un ordinogramme d'une routine à exécuter par l'ordinateur de la figure 1. On va maintenant décrire en détail le mode pré- féré de réalisation. La description qui va suivre fait référence à la demande de brevet des Etats-Unis DC-1314 intitulée "Method for Updating Partition Mappings to Logical Drives in a Computer Memory Device" et à la demande de brevet des Etats-Unis DC-1315 intitulée "Method for Simulating a Computer Storage Device", déposées concurremment à la présente demande. En se reportant à la figure 1, la référence nu- mérique 10 indique un ordinateur comportant plusieurs composants, parmi lesquels un processeur 12, un bloc de mémoires à accès aléatoire (RAM) 14a et de mémoires à lecture seule (ROM) 14b, un disque dur 16 et une inter- face-réseau 18. Chaque composant est capable de communi- quer avec le processeur 12, comme illustré graphiquement, via un bus universel 20. Dans le présent exemple, l'ordi- nateur 10 est un ordinateur personnel fonctionnant sous Microsoft DOS et/ou WINDOWS. Il va de soi, cependant, que l'ordinateur 10 et ses composants illustrés ne sont que représentatifs d'un grand nombre de types différents d'ordinateurs et de composants, bien connus et compris de l'homme du métier. En se reportant à la figure 2, le disque dur 16 est subdivisé en trois partitions différentes: un sec- teur d'amorçage maître 30, une partition utilitaire 32 et une partition primaire 34. Dans le secteur d'amorçage maître 30 se trouvent un code d'amorçage 40 et une table de partition maîtresse 42. La table de partition maî- tresse contient un code qui représente un type pour cha- que partition 32 et 34. Il va de soi que le secteur d'amorçage maître 30 contient aussi un code classique, tel que pour amorcer l'ordinateur 10, qui est bien connu dans la technique. La partition utilitaire 32 contient un secteur d'amorçage 50 et une ou plusieurs parties d'un logiciel, tel qu'un programme de maintenance 52. Pendant une opéra- tion normale, la partition utilitaire 32 ne sera utilisée que durant des circonstances spéciales, telles que durant les opérations de maintenance et d'examen de l'ordina- teur. La partition primaire 34 contient aussi un secteur d'amorçage 60 et une ou plusieurs parties d'un logiciel, tel qu'un programme 62. Lors d'une opération normale, la partition primaire 34 sera souvent utilisée et utilisera la majeure partie du disque dur 16. Par conséquent, du- rant une opération normale, lorsqu'un système d'exploita- tion accédera au disque dur 16, il ne verra que la parti- tion primaire 34 et n'accédera qu'à celle-ci, et non à la partition utilitaire 32. Les tableaux 1 et 2 ci-après illustrent des en- trées de la table de partition maîtresse 42. Le tableau 1 décrit une partie de la table de partition maîtresse 42 lorsque la partition primaire 34 est visible pour le DOS et lorsque la partition utilitaire 32 est invisible pour le DOS. Le tableau 2 décrit une partie de la table de partition maîtresse 42 lorsque la partition utilitaire 32 est visible pour le DOS et lorsque la partition primaire 34 est invisible pour le DOS. Tableau 1 Entrée Code Valeur 1 Type DEh Indicateur inactif Emplacement/taille partition utilitaire 32 2 Type 06h Indicateur actif Emplacement/taille partition primaire 34 3 Type aucun Indicateur Emplacement/taille - 4 Type aucun Indicateur Emplacement/taille Tableau 2 Entrée Code Valeur 1 Type 06h Indicateur actif Emplacement/taille partition utilitaire 32 2 Type DEh Indicateur inactif Emplacement/taille partition primaire 34 3 Type aucun Indicateur _ Emplacement/taille 4 Type aucun Indicateur Emplacement/taille _ En se reportant à la figure 3, une routine 100 intitulée "Waffle" permet au système d'exploitation de passer de la partition 32 à la partition 34 et vice ver- sa. A titre d'exemple, la partition utilitaire 32 est initialement inactive et la partition primaire 34 est ac- tive. Par ailleurs, le code de type de partition associé à la partition utilitaire 32 est établi de manière à cor- respondre à un type invalide et le code de type de parti- tion associé à la partition primaire 34 est établi de ma- nière à correspondre à un type valide. En poursuivant avec l'exemple mentionné ci-dessus, le système d'exploi- tation est le DOS, le type 06h est un code de type de partition valide, le type DEh est un code de type de par- tition invalide, et à la partition primaire est assignée une lettre identificatrice de lecteur C:. Par consé- quent, le DOS reconnaît initialement, ou "voit", la par- tition primaire 34, mais non la partition utilitaire 32. Par ailleurs, certaines tables, pour référencer l'implan- tation et les mappages organisationnels de chacune des unités actives, parmi lesquelles une unité (ou lecteur) logique C:, sont utilisées par le DOS pour "mapper" l'unité logique C: vers la partition primaire 34. Par conséquent, toutes les opérations de lecture et d'écri- ture relatives à l'unité C: sont effectuées sur la par- tition primaire 34. Il va de soi que les codes de réfé- rence et les lettres identificatrices de lecteurs décrits ci-dessus sont définis par le DOS, ou par le système d'exploitation utilisé, quel qu'il soit, et sont bien connus de l'homme du métier. La routine "Waffle" est lancée par le proces- seur 12, qui la charge dans la RAM 14a. La routine "Waf- fle" est une routine de changement de référence logique et, dans le présent mode de réalisation, celle-ci est chargée à partir d'un réseau connecté via l'inter- face-réseau 18. De plus, le réseau comporte une sorte de code de système d'exploitation de sorte que l'ordinateur puisse, à cette étape, se réamorcer à partir du ré- seau, c'est-à-dire que l'ordinateur se réamorce en utili- sant le code de système d'exploitation récupéré à partir de l'interfaceréseau 18. En variante, le processeur 12 peut charger la routine "Waffle" à partir de l'une ou l'autre des partitions 32 et 34, à partir des deux, à partir d'une disquette (non-représentée) ou à partir d'une autre source. A l'étape 112, une pseudo-instruction, indi- quant un accès à une partition particulière, est regue. Dans le présent mode de réalisation, la pseu- do-instruction est délivrée par un processus de fabrica- tion qui essaie de charger un logiciel sur l'une ou l'au- tre des partitions 32 et 34, ou sur les deux. Une pseu- do-instruction "utilitaire" indique un désir d'accéder à la partition utilitaire 32, tandis qu'une pseu- do-instruction "primaire" indique un désir d'accéder à la partition primaire 34. Les pseudo-instructions peuvent être entrées à partir d'une interface-utilisateur (non-représentée), à partir de l'interface-réseau 18 ou de tout autre dispositif d'entrée. En outre, il est prévu que des partitions additionnelles puissent aussi être utilisées, mais seules deux partitions seront décrites ici pour des raisons de simplicité. A l'étape 114, il est déterminé si oui ou non l'utilisateur souhaite permuter les partitions. Si la pseudo-instruction reçue est "utilitaire", alors, à l'étape 120, la routine "Waffle" vérifie les tables de référence DOS afin de s'assurer que l'unité logique C: renvoie à la partition primaire 34. A l'étape 122, si l'unité logique C: ne renvoie pas à la partition pri- maire 34, alors l'étape exécutée ensuite est l'étape 124 au niveau de laquelle un message d'erreur est affiché, indiquant que la partition utilitaire est déjà active. Une fois l'affichage effectué, l'étape exécutée ensuite est l'étape 114. Si, cependant, l'unité logique C: ren- voie à la partition primaire 34, l'étape exécutée ensuite est l'étape 125. A l'étape 125, la routine "Waffle" purge les tampons utilisés par le système d'exploitation (par exem- ple, un tampon DOS) et, si l'ordinateur 10 contient une antémémoire, la routine "Waffle" purge l'antémémoire de manière à ce qu'aucune discordance ne puisse exister. A l'étape 126, la routine "Waffle" charge dans la RAM 14a le secteur d'amorçage de partition 50 de la partition utilitaire 32. A l'étape 128, la routine "Waffle" inter- vertit les codes de type et les indicateurs d'activité des deux partitions 32 et 34. Dans le présent exemple, la partition utilitaire 32 aura maintenant un code de type égal à 06h et un indicateur d'activité désigné comme ac- tif, et la partition primaire 34 maintenant un code de type égal à DEh et aura un indicateur d'activité désigné comme inactif. De cette manière, la table de partition maîtresse 42 est conforme au nouveau mappage et, si l'or- dinateur 10 est réamorcé, celui-ci retournera dans l'état décrit cidessus dans lequel la partition utilitaire 32 est la partition active et visible. A l'étape 130, la routine "Waffle" localise les structures de données ou les tables utilisées par le sys- tème d'exploitation pour référencer l'unité logique C:. Dans le présent exemple, la routine "Waffle" localise la table DDT ("Drive Data Table"), le bloc DPB ("Drive Para- meter Block"), et la structure CDS ("Current Directory Structure") utilisés par le DOS. La routine "Waffle" ca- ractérise aussi les structures référencées ci-dessus con- formément au type de système d'exploitation (par exemple, DOS 6.x, DOS 7. x) et au type de système de fichiers (par exemple, FAT16 primaire, FAT32 primaire). Il va de soi que le type de système d'exploitation et le type de sys- tème de fichiers représentent des caractéristiques du système d'exploitation particulier, dans le présent exem- ple le DOS, et sont bien compris de l'homme du métier. A l'étape 132, la routine "Waffle" modifie cha- cune des structures référencées ci-dessus en extrayant des données spécifiques du secteur d'amorçage de parti- tion mémorisé dans la RAM 14a, et en écrivant les données dans les structures. Du fait que le DOS accède à l'unité C: en faisant référence aux structures de données réfé- rencées ci-dessus, toute tentative d'accéder à l'unité C:, via le DOS, sera maintenant orientée vers la parti- tion utilitaire 32. L'étape exécutée ensuite est alors l'étape 114. Si, à l'étape 114, la pseudo-instruction reçue est "primaire", alors l'étape exécutée ensuite est l'étape 140. Les étapes 140 à 152 sont identiques aux étapes 120 à 132, respectivement. A l'étape 140, la rou- tine "Waffle" vérifie les tables de référence DOS afin de s'assurer que l'unité logique C: renvoie à la partition utilitaire 32 (vérification du mappage). A l'étape 142, si l'unité logique C: ne renvoie pas à la partition uti- litaire 32, alors l'étape exécutée ensuite est l'étape 124 au niveau de laquelle le message d'erreur est affi- ché. Si, cependant, l'unité logique C: renvoie à la par- tition utilitaire 32, l'étape exécutée ensuite est l'étape 145. A l'étape 145, la routine "Waffle" purge tam- pons ou antémémoire. A l'étape 146, la routine "Waffle" charge dans la RAM 14a le secteur d'amorçage de partition de la partition primaire 34. A l'étape 148, la routine "Waffle" intervertit les codes de type et les indicateurs d'activité des deux partitions 32, 34. Dans le présent exemple, la partition primaire 34 aura maintenant un code de type égal à 06h et un indicateur d'activité désigné comme actif, et la partition utilitaire 32 aura mainte- nant un code de type égal à DEh et un indicateur d'acti- vité désigné comme inactif. A l'étape 150, la routine "Waffle" localise les structures de données ou les tables utilisées par le système d'exploitation pour référencer l'unité logique C:. Enfin, à l'étape 152, la routine "Waffle" modifie chacune de ces structures de données en extrayant des données spécifiques du secteur d'amorçage de partition mémorisé dans la RAM 14a et en écrivant les données dans les structures, et l'étape exécutée ensuite est l'étape 114. Bien que des modes de réalisation illustratifs aient été représentés et décrits, des modifications, des changements et des remplacements peuvent être apportés à la description qui précède et, dans certains cas, certai- nes caractéristiques seront utilisées sans l'utilisation correspondante d'autres caractéristiques. De plus, des caractéristiques additionnelles, telles que des routines de manipulation des erreurs, peuvent être ajoutées au mode de réalisation proposé sans modifier la portée du présent mode de réalisation. REVENDICATIONS 1. Ordinateur (10) comportant: au moins un processeur (12) pour exécuter un code d'exploitation, au moins une mémorisation (16) à laquelle peut accéder le processeur (12), la mémorisation (16) étant séparée en au moins deux partitions (32, 34), le code d'exploitation utilisant une référence logique désignant la mémorisation (16) et contenant une table destinée à "mapper" la référence logique vers la première partition (34), et une routine ("Waffle") pour permuter d'une ma- nière dynamique la référence logique vers la seconde par- tition (32), en modifiant la table, caractérisé en ce que après avoir modifié la table, le processeur (12) peut continuer d'exécuter le code d'exploitation sans avoir à réamorcer l'ordinateur (10) et, lorsque le code d'exploitation utilise la référence logique dési- gnant la mémorisation (16), le code d'exploitation est renvoyé vers la seconde partition (32). 2. Ordinateur (10) selon la revendication 1, caractérisé en ce que la première partition (34) et la seconde partition (32) possèdent chacune un type et en ce que la routine modifie le type de chaque partition, lors- qu'elle modifie la référence logique, de telle sorte que la partition que désigne la référence logique soit d'un type qui est visible pour le code d'exploitation et l'au- tre partition soit d'un type qui n'est pas visible pour le code d'exploitation. 3. Ordinateur (10) selon la revendication 1, caractérisé en ce que la première partition (34) et la seconde partition (32) possèdent chacune un état et en ce que la routine modifie l'état de chaque partition, lors- qu'elle modifie la référence logique, de telle sorte que la partition que désigne la référence logique possède un état actif et l'autre partition ne possède pas un état actif. 4. Ordinateur (10) selon la revendication 1, caractérisé en outre en ce qu'il comporte une seconde mé- morisation et en ce que la routine est mémorisée dans la seconde mémorisation. 5. Ordinateur (10) selon la revendication 4, caractérisé en ce que la seconde mémorisation est une disquette. 6. Ordinateur (10) selon la revendication 4, caractérisé en ce que la seconde mémorisation est reliée au processeur (12) via une interface-réseau (18). 7. Ordinateur (10) selon la revendication 4, caractérisé en ce que le code d'exploitation est mémorisé dans la seconde mémorisation. 8. Ordinateur (10) selon la revendication 1, caractérisé en ce que la routine permute la référence lo- gique en réponse à une pseudo-instruction. 9. Ordinateur (10) selon la revendication 1, caractérisé en outre en ce qu'il comporte: une antémémoire, et des moyens pour purger l'antémémoire après que la routine a modifié la table. 10. Procédé pour permettre à un système d'ex- ploitation d'accéder à deux partitions (32, 34) différen- tes d'un dispositif de mémorisation (16) unique en utili- sant une seule référence logique, caractérisé en ce que chaque partition (32, 34) possède son propre secteur d'amorçage (50, 60) et en ce que le système d'exploita- tion contient une table des lecteurs, le procédé compor- tant les étapes consistant à: (i) désigner la première partition (34) comme active et établir le type de la première partition (34) de manière à ce qu'il corresponde à un type de partition valide, (ii) charger le secteur d'amorçage (50) de la seconde partition (32), (iii) insérer les données du secteur d'amorçage (50) chargé dans la table des lecteurs, et (iv) désigner la seconde partition (32) comme active et établir le type de la seconde partition (32) de manière à ce qu'il corresponde à un type de partition va- lide. 11. Procédé selon la revendication 10, caracté- risé en ce que l'étape (i) consiste en outre à désigner la seconde partition (32) comme inactive et à établir le type de la seconde partition (32) de manière à ce qu'il corresponde à un type de partition invalide. 12. Procédé selon la revendication 11, caracté- risé en ce que l'étape (iv) consiste en outre à désigner la première partition (34) comme inactive et à établir le type de la première partition (34) de manière à ce qu'il corresponde à un type de partition invalide. 13. Procédé selon la revendication 10, caracté- risé en ce qu'il consiste en outre, avant l'étape (ii), à relancer le système d'exploitation. 14. Procédé selon la revendication 10, caracté- risé en ce qu'il consiste en outre, avant l'étape (ii), à vérifier que la seconde partition (32) n'est pas active. 15. Système pour permettre à un code d'exploi- tation d'accéder à deux partitions (32, 34) différentes d'un dispositif de mémorisation (16) en utilisant une seule référence logique, caractérisé en ce que chaque partition possède son propre secteur d'amorçage (50, 60) et en ce que le code d'exploitation utilise une table des lecteurs, le système comportant: des moyens pour désigner la première partition (34) comme active et établir le type de la première par- tition (34) de manière à ce qu'il corresponde à un type de partition valide, des moyens pour charger le secteur d'amorçage (50) de la seconde partition (32), des moyens pour insérer les données du secteur d'amorçage (50) chargé dans la table des lecteurs, et des moyens pour désigner la seconde partition (32) comme active et établir le type de la seconde parti- tion (32) de manière à ce qu'il corresponde à un type de partition valide. 16. Système selon la revendication 15, caracté- risé en ce qu'il comporte en outre des moyens pour dési- gner la seconde partition (32) comme inactive et établir le type de la seconde partition (32) de manière à ce qu'il corresponde à un type de partition invalide. 17. Système selon la revendication 16, caracté- risé en ce qu'il comporte en outre des moyens pour dési- gner la première partition (34) comme inactive et établir le type de la première partition (34) de manière à ce qu'il corresponde à un type de partition invalide. 18. Système selon la revendication 15, caracté- risé en ce qu'il comporte en outre des moyens pour relan- cer le code d'exploitation avant le chargement du secteur d'amorçage. 19. Système selon la revendication 15, caracté- risé en ce qu'il comporte en outre des moyens pour véri- fier que la seconde partition (32) n'est pas active avant le chargement du secteur d'amorçage.