FR 2772159 A1 19990611 FR 9812776 A 19981013 À La présente description concerne d'une manière générale les ordinateurs et un code de logiciel pour gé- rer l'accès à un dispositif de mémorisation d'ordinateur et, d'une manière plus spécifique, un système et un pro- cédé pour déterminer un déterminateur d'unité utilisé par un dispositif de mémorisation volatile et communiquer ce désignateur à d'autres programmes. D'une manière typique, un ordinateur comporte plusieurs dispositifs de mémorisation différents, tels qu'un ensemble de mémoires à accès aléatoire (RAM), une unité à disque dur (disque dur) et/ou une unité à disque souple (lecteur de disquette). Les dispositifs de mémori- sation mentionnés ci-dessus se comportent différemment et, par conséquent, sont utilisés différemment. La RAM permet une mémorisation très rapide des données, mais qui est volatile, tandis que l'unité à disque dur et l'unité à disque souple (collectivement, unités à disque) permet- tent une mémorisation qui est quelque peu plus lente, mais qui est nonvolatile. Du fait de leurs comportements différents et de leurs utilisations différentes, d'une manière typique, les unités à disque sont utilisées pour la mémorisation à long terme, tandis que la RAM est uti- lisée pour la mémorisation à court terme. Cependant, il existe des programmes, tels que le programme RAMDRIVE produit par Microsoft Corp., Redmond, WA, qui permettent à un ordinateur d'utiliser la RAM comme s'il s'agissait d'une unité à disque, c'est-à-dire comme s'il s'agissait d'un disque RAM. Le disque RAM peut être utilisé dans di- verses applications, même s'il s'agit d'un dispositif de mémorisation volatile. Par exemple, une application qui aurait avan- tage à utiliser un disque RAM est le processus de charge- ment qu'utilisent les fabricants d'ordinateurs pour l'installation de logiciels sur de nouveaux ordinateurs. En utilisant un disque RAM, le processus de chargement peut s'effectuer plus rapidement, les dispositifs de mé- morisation non-volatile peuvent rester inutilisés et, par conséquent, non-fragmentés, et tous les fichiers tempo- raires créés sur le disque RAM seront détruits du fait de la nature volatile du disque RAM. Plusieurs difficultés sont cependant associées à l'utilisation d'un disque RAM lors d'un processus de chargement. Dans les systèmes d'exploitation, tels que DOS, Windows ou Windows 95 produits par Microsoft Corp., représentés par la suite par le DOS, les déterminateurs d'unités logiques, ou lettres assignées aux unités, pour les divers dispositifs de mémorisation logiques présents sur l'ordinateur, sont assignés séquentiellement, la let- tre assignée au disque RAM étant déterminée après l'assi- gnation d'une lettre respective à toutes les unités logi- ques présentes sur les dispositifs de mémorisation non-volatile. Par conséquent, la lettre à assigner au disque RAM est inconnue et risque d'être différente d'un ordinateur à l'autre. Une fois une lettre assignée à chaque lecteur logique, y compris au disque RAM, la lettre assignée au disque RAM doit être transmise au processus de charge- ment. Cependant, le DOS ne supporte pas de communication inter-processus, c'est-à-dire que la lettre assignée ne peut être transmise au processus de chargement via un en- vironnement DOS. Un environnement DOS est une instantia- tion d'un environnement maître DOS qui contient une série d'assignations de variables à utiliser par le DOS et au- tres programmes exécutés sur l'ordinateur. Il va de soi que l'environnement maître DOS et les instantiations qui lui sont associées sont bien connus de l'homme du métier et, pour des raisons de clarté et de concision, ceux-ci ne seront par conséquent pas plus amplement décrits ici. Par conséquent, ce dont on a besoin, c'est d'un système et d'un procédé qui permettent à un processus, tel qu'un processus de chargement de logiciel, de se voir communiquer le déterminateur d'unité d'un disque RAM en vue d'une utilisation ultérieure par le processus. En réponse, on fournit un système et un procédé pour déterminer un déterminateur d'unité utilisé par un dispositif de mémorisation volatile et communiquer ce dé- signateur à d'autres programmes. Dans un premier mode de réalisation, un ordinateur comporte un processeur pour exécuter un code de système d'exploitation, une RAM, et un dispositif de mémorisation à disque dur. La RAM inclut un disque RAM qui est configuré dans celle-ci et le dis- positif de mémorisation à disque dur inclut au moins une partition. Le code du système d'exploitation reconnaît le disque RAM et la partition du disque dur comme des unités logiques et contient par conséquent une série d'au moins deux blocs de paramètres de lecteur ("Drive Parameter Block" ou "DPB"), un DPB étant associé à chaque unité lo- gique. L'ordinateur comporte aussi une routine de logi- ciel pour déterminer la lettre assignée au disque RAM et communiquer cette lettre à un autre programme. Tout d'abord, la routine doit vérifier la let- tre assignée au disque RAM en exécutant séquentiellement les étapes consistant à: accéder à un DPB de la série, examiner l'unité logique désignée par le DPB, et détermi- ner si l'unité logique est le disque RAM. Certaines ca- ractéristiques prédéfinies des unités logiques permettent à la routine de déterminer si oui ou non il s'agit d'un disque RAM. Par exemple, une partition d'un disque dur comporte habituellement deux copies de sa table d'alloca- tion de fichiers, tandis qu'un disque RAM n'en contient habituellement qu'une seule. Une fois que la routine a vérifié quel DPB est associé au disque RAM, celle-ci récupère la lettre assi- gnée à ce DPB. La routine mémorise alors la lettre au ni- veau d'un emplacement prédéterminé, tel que dans un envi- ronnement maître du système d'exploitation. Ainsi, un programme peut accéder au disque RAM en référençant l'em- placement prédéterminé. Le résumé ci-dessus n'illustre que quelques uns des nombreux modes de réalisation potentiels différents. Des modes de réalisation supplémentaires seront décrits par la suite. 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 incluant un processeur, un disque dur et une RAM pour implémenter un mode de réalisation, - la figure 2a une représentation structurelle du disque dur de l'ordinateur de la figure 1, - la figure 2b est une représentation structu- relle de la RAM de l'ordinateur de la figure 1 après que l'ordinateur a été amorcé, et - la figure 3 est un ordinogramme d'une routine à exécuter par l'ordinateur de la figure 1. En se reportant à la figure 1, la référence nu- mérique 10 indique un ordinateur comportant plusieurs composants, parmi lesquels au moins un processeur 12, une RAM 14, un disque dur 16, et un lecteur de disquette 18. Chaque composant est capable de communiquer avec le pro- cesseur 12, comme indiqué graphiquement par un bus uni- versel 20. Dans le présent exemple, le processeur 12 exé- cute un code de système d'exploitation DOS. Il va de soi, cependant, que l'ordinateur 10 et les composants illus- très qui lui sont associés ne sont que représentatifs de nombreux types différents d'ordinateurs et de composants et que le DOS n'est que représentatif de nombreux types différents de systèmes d'exploitation bien connus et com- pris de l'homme du métier. En se reportant à la figure 2a, l'ordinateur 10 subdivise le disque dur 16 en trois partitions différen- tes: un secteur d'amorçage maître 30, une première par- tition 32 et une seconde partition 34. Sur le secteur d'amorçage maître 30 se trouvent un code d'amorçage 40 et une table de partition maîtresse 42. Les partitions 32, 34 sont des partitions logiques, comportant chacune un secteur d'amorçage 52, 62 respectivement, une table d'al- location de fichiers ("FAT" ou "File Allocation Table") 54, 64, respectivement, et une zone de mémorisation 56, 66, respectivement. Bien que cela ne soit pas spécifique- ment illustré, l'unité à disque souple 18 est aussi con- figurée d'une manière appropriée pour fournir une autre partition logique. La configuration et la manipulation des dispositifs de mémorisation, tels que le disque dur 16 et l'unité à disque souple 18, sont décrites plus en détail dans le livre intitulé "THE HARD DISK SURVIVAL GUIDE" par Mark Minasi, SYBEX, Inc., 1991, incorporé ici à titre de référence. En se reportant à la figure 2b, la RAM 14 mémo- rise une pluralité de structures de données, certaines pouvant être définies d'une manière générique comme code système basique 80, code d'exploitation DOS 82 et disque RAM 84. Le code système basique 80 inclut, entre autres choses, un environnement maître 86 qui contient une série d'assignations de variables. Bien que non-représenté, il va de soi que d'autres instantiations de l'environnement maître 86 peuvent exister dans la RAM 14, comme habituel- lement nécessaire. Le DOS 82 contient de nombreuses structures, parmi lesquelles une pluralité de blocs de paramètres de lecteur (DPB) 88. Un DPB est associé à cha- cune des unités logiques, lesquelles, dans le présent exemple, sont au nombre de quatre: l'unité à disque sou- ple 18, la partition 32, la partition 34 et le disque RAM 84. Le formatage du disque RAM 84 est similaire à celui des partitions 32, 34, comportant un secteur d'amorçage , une FAT 92 et une zone de mémorisation 94. Cependant, comme cela est classique avec la plupart des procédures de formatage des unités, le disque RAM ne comporte qu'une seule copie de la FAT 96, tandis que l'unité à disque souple 18 et les deux partitions 32, 34 contiennent cha- cune deux copies de leur FAT 52, 62 respective. Par ailleurs, dans la RAM 14 est mémorisé un programme 96. Par exemple, le programme 96 est un processus de charge- ment de logiciels qui bénéficierait de l'utilisation du disque RAM 84. En se reportant à la figure 3, une routine 100 détermine une lettre utilisée par le disque RAM 84 et communique cette lettre au programme 96. Avant que la routine ne commence, l'ordinateur 10 est amorcé et la RAM 14 est configurée comme décrit ci-dessus. Durant la pro- cédure d'amorçage, le DOS assigne des lettres spécifiques à chaque unité logique. Dans le présent mode de réalisa- tion, ces désignateurs sont tels que décrits dans la Ta- ble 1 ci-dessous. Par ailleurs, la routine 100 a été in- voquée par le programme 96 et s'est vue communiquer une variable prédéterminée, comme décrit avec plus de détails ci-dessous. Table 1 Unité Logique Lettre unité à disque souple 18 A: partition 32 du disque dur 16 B: partition 34 du disque dur 16 C: disque RAM 84 D: A l'étape 102, la routine 100 extrait un pre- mier DPB du groupe de DPB 88 contenus dans la RAM 14. Dans le présent mode de réalisation, les DPB sont ex- traits séquentiellement de la RAM 14. A l'étape 104, la routine 100 dénombre les copies de la FAT associée à l'unité logique désignée par le DPB extrait. Si le nombre de copies de la FAT dépasse un, l'unité logique est une partie d'un dispositif de mémorisation non-volatile, tel que le disque dur 16 ou le disque souple 18. L'étape exé- cutée ensuite est alors l'étape 102 au cours de laquelle la routine 100 extrait le DPB suivant. Si, cependant, à l'étape 104, une seule copie de la FAT est dénombrée, l'unité logique est le disque RAM 84 et l'étape exécutée ensuite est l'étape 106. Bien que cela ne soit pas repré- senté, des mécanismes de gestion des erreurs peuvent aus- si être incorporés afin de gérer d'une manière appropriée les cas d'erreurs, tel que lorsqu'il n'existe pas de dis- que RAM. A l'étape 106, la routine 100 extrait la lettre correspondant au dernier DPB extrait. Dans l'exemple dé- crit ci-dessus, la lettre est D:. A l'étape 108, la routine 100 extrait la varia- ble prédéterminée du programme 96, qui a été fournie lorsque le programme a invoqué la routine, comme décrit précédemment. Par exemple, le programme 96 a été configu- ré pour utiliser une unité logique à laquelle il fait ré- férence en utilisant le nom de variable "TEMP". Par con- séquent, lorsque le programme 96 a invoqué la routine , le programme 96 a fourni le nom TEMP à la routine. A l'étape 110, la routine 100 actualise l'environnement maître 86 en assignant la lettre extraite à la variable prédéterminée, par exemple: TEMP = D:\. Puis, le programme 96 est à nouveau exécuté. En résultat, les références faites par le pro- gramme 96 à la variable TEMP seront orientées vers le disque RAM 84. En outre, la routine 100 ci-dessus fonc- tionne avec n'importe quelle configuration d'unités logi- ques, même avec de multiples disques RAM. Bien que des modes de réalisation illustratifs aient été représentés et décrits, des modifications, des changements et des substitutions peuvent être apportés dans la description qui précède, et, dans certains cas, certaines caractéristiques seront utilisées sans l'utili- sation correspondante d'autres caractéristiques. Par exemple, d'autres particularités entre dispositifs de mé- morisation volatile et non-volatile peuvent être utili- sées pour les distinguer et obtenir les résultats men- tionnés précédemment. En outre, des caractéristiques ad- ditionnelles, telles que des routines de gestion des er- reurs, peuvent être ajoutées au mode de réalisation il- lustratif sans modifier la portée de la présente inven- tion. REVENDICATIONS 1. Ordinateur (10) caractérisé en ce qu'il com- porte: au moins un processeur (12) pour exécuter un code d'exploitation, au moins une mémorisation volatile accessible au processeur (12), des moyens pour allouer au moins une partie de la mémorisation volatile à une unité logique, l'unité lo- gique ayant un indicateur spécifique à des mémorisations volatiles, un emplacement de mémorisation accessible au processeur (12), le code d'exploitation, incluant un désignateur de l'unité logique, et une routine (100) pour assigner le désignateur à une variable prédéterminée mémorisée dans l'emplacement de mémorisation, et en ce que, après que la routine (100) a assigné le dési- gnateur à la variable prédéterminée, un programme peut accéder à l'unité logique en désignant la variable prédé- terminée. 2. Ordinateur (10) selon la revendication 1, caractérisé en ce que la mémorisation volatile est une mémoire à accès aléatoire (RAM) 14 et en ce que la partie soumise à un accès du dispositif de mémorisation volatile a été préconfigurée comme un disque RAM. 3. Ordinateur (10) selon la revendication 1, caractérisé en ce qu'il comporte en outre: une mémorisation non-volatile accessible au processeur, et en ce que les moyens d'allocation allouent aussi au moins une partie de la mémorisation non-volatile à une autre unité logique. 4. Ordinateur (10) selon la revendication 3, caractérisé en ce que la routine détermine laquelle des unités logiques représente une mémorisation volatile en examinant l'indicateur. 5. Ordinateur (10) selon la revendication 4, caractérisé en ce que l'indicateur est un nombre de ta- bles d'allocation de fichiers (FAT). 6. Ordinateur (10) selon la revendication 5, caractérisé en ce que la mémorisation volatile est une mémoire à accès aléatoire (14) et la mémorisation non-volatile est un disque dur (16). 7. Ordinateur (10) selon la revendication 5, caractérisé en ce que la mémorisation volatile est une mémoire à accès aléatoire (14) et la mémorisation non-volatile est un disque souple (18). 8. Dans un ordinateur (10) comportant une unité logique volatile, une unité logique non-volatile, et un système d'exploitation, procédé pour déterminer un dési- gnateur assigné à l'unité logique volatile par le système d'exploitation et pour communiquer ce désignateur à un programme, dans lequel le système d'exploitation inclut une série d'au moins deux blocs de données, un bloc de données étant associé à chaque unité logique, le procédé étant caractérisé en ce qu'il comporte les étapes consis- tant à: a) jusqu'à ce que le désignateur assigné à l'unité logique volatile ait été déterminé, exécuter les étapes consistant à: i) extraire un bloc de données de la sé- rie, ii) examiner l'unité logique désignée par le bloc de données extrait, iii) déterminer si l'unité logique est l'unité logique volatile, iv) si l'unité logique est l'unité logique volatile, extraire le désignateur assi- gné au bloc de données extrait b) assigner le désignateur à une variable pré- déterminée, et en ce que le programme peut faire référence à l'unité logique volatile en faisant référence à la va- riable prédéterminée. 9. Procédé selon la revendication 8, caractéri- sé en ce que l'ordinateur (10) comporte en outre un envi- ronnement maître (86) et en ce que l'étape d'assignation comporte en outre la mémorisation de la variable prédé- terminée et du désignateur dans l'environnement maître. 10. Procédé selon la revendication 9, caracté- risé en ce que l'unité logique volatile représente un disque de mémorisation à accès aléatoire. 11. Procédé selon la revendication 9, caracté- risé en ce que l'unité logique non-volatile représente une partition d'un disque dur (16). 12. Procédé selon la revendication 9, caracté- risé en ce que l'unité logique non-volatile représente un disque souple. 13. Procédé selon la revendication 9, caracté- risé en ce que l'unité logique volatile comporte une seule table d'allocation de fichiers et en ce que l'unité non-volatile comporte deux tables d'allocation de fi- chiers. 14. Procédé selon la revendication 13, caracté- risé en ce que l'étape de détermination dénombre les ta- bles d'allocation de fichiers dans l'unité logique. 15. Dispositif logiciel pour permettre à un processus de connaître et d'utiliser une unité logique créée dans une partition prédéterminée d'une mémoire vo- latile d'ordinateur, l'ordinateur (10) comportant en ou- tre une ou plusieurs unités logiques additionnelles et un processeur pour exécuter un code d'exploitation ayant une série de blocs de paramètres pour chaque unité logique, le dispositif logiciel étant caractérisé en ce qu'il com- porte: un support de mémorisation pour mémoriser le dispositif logiciel, des moyens pour extraire un bloc de paramètres de la série, des moyens pour déterminer si le bloc de para- mètres extrait désigne l'unité logique de la mémoire vo- latile, des moyens pour extraire, lorsqu'il est déter- miné que le bloc de paramètres extrait ne désigne pas l'unité logique de la mémoire volatile, un autre bloc de paramètres de la série, des moyens pour apprendre, lorsqu'il est déter- miné que le bloc de paramètres extrait désigne l'unité logique de la mémoire volatile, un désignateur assigné par le code d'exploitation au bloc de paramètres extrait, des moyens pour mémoriser le désignateur au ni- veau d'un emplacement prédéterminé en vue d'une utilisa- tion par le processus. 16. Dispositif logiciel selon la revendication 1, caractérisé en ce que l'emplacement prédéterminé est un emplacement d'assignation de variable dans un environ- nement maître utilisé par le code d'exploitation et en ce que le processus utilise le désignateur en référence à l'emplacement d'assignation de variable. 17. Dispositif logiciel selon la revendication 16, caractérisé en ce que l'unité logique de la mémoire volatile représente un disque de mémorisation à accès aléatoire (RAM). 18. Dispositif logiciel selon la revendication 16, caractérisé en ce que l'une des unité logiques addi- tionnelles représente une partition d'un disque dur (16). 19. Dispositif logiciel selon la revendication 16, caractérisé en ce que l'une des unités logiques addi- tionnelles représente un disque souple (18). 20. Dispositif logiciel selon la revendication 16, caractérisé en ce que l'unité logique de la mémoire volatile comporte une seule table d'allocation de fi- chiers. 21. Dispositif logiciel selon la revendication , caractérisé en ce que les moyens de détermination dé- nombrent les tables d'allocation de fichiers dans chaque unité logique.