FR 2601793 A1 19880122 FR 8704499 A 19870331 260 1793 DISPOSITIF ET PROCEDE DE COMMANDE D'ENTREE/SORTIE La présente invention concerne le domaine de la commande du transfert de données entre une source de données et des dispositifs périphériques. Plus particulièrement, la présente invention concerne une technique de protection de certains accès vers un dispositif d'entrée/sortie d'un ordinateurou calculateur. Dans un dispositf d'ordinateur typique à plusieurs utilisateurs, plusieurs utilisateurs ou bien un utilisateur unique exécutant plusieurs tâches en parallèle communiquent avec l'unité centrale d'un ordinateur (CPU). Ce CPU, en réalisant certaines 10 étapes d'instructions communiquera avec des dispositifs d'entrée/sortie (I/O), tels que des imprimantes, des disques et autres périphériques. Pour permettre le transfert de données vers et à partir de ces divers modules, le CPU doit formuler des instructions qui commandent l'accès de ces divers modules. Il est bien connu dans l'industrie des ordinateurs que de nombreux processus existent pour commander l'accès d'un dispositif d'entrée/sortie (I/O). Un tel dispositif de commande d'I/O est un synchronisateur de données décrit dans le brevet des Etats-Unis d'Amérique N 3 812 475 dans lequel des canaux de données dirigent le flux d'informations entre des dispositfs d'entrée/sortie et une mémoire principale de sorte que le CPU est libéré de la communication directe avec les dispositifs et permet au traitement de données d'avoir lieu simultanément avec les opérations d'entrée/sortie. En outre, dans un environnement 25 d'utilisateurs multiples, des systèmes de sécurité d'utilisateur ont été mis en oeuvre pour empêcher un utilisateur d'interférer avec d'autres utilisateurs ou de les interrompre. Par exemple, un dispositif de mémoire tel qu'un disque est séparé en plusieurs zones de travail et un utilisateur particulier peut accéder à 30 cette zone de travail d'utilisateur seulement et d'autre part est 260 1793 également protégé quant à une entrée en provenance d'autres utilisateurs. Toutefois, de tels systèmes de commande d'I/O et de protection multiple d'utilisateurs ont été prévus essentiellement avec de grands ordinateurs principaux de l'art antérieur et ne sont pas facilement applicables aux microprocesseurs dits "ordinateurs personnels" (PC) actuels dans lesquels la dimension limitée du PC requiert que le CPU dirige toutes les fonctions de commande. La première génération de PC consistait en un système 10 d'ordinateur à utilisateur unique, dans lequel un utilisateur unique a le contrôle opérationnel complet de tout le système, y compris de tous les I/O connectés au PC. De nombreux programmes, à la fois des systèmes de fonctionnement et des logiciels d'appliCation ont été décrits pour les PC, autorisant une commande et un 15 accès complet par un utilisateur unique. Toutefois, tandis que les PC se développaient, leur utilisation s'est récemment étendue à des domaines commerciaux qui vont plus loin qu'un environnement d'utilisateur unique. Bien que des PC à utilisateurs multiples existent aujourd'hui, aucun ne prévoit les dispositifs 20 sophistiqués de protection d'utilisateurs disponibles pour les grands ordinateurs. Les quelques PC à capacité d'utilisateurs multiples fonctionnent comme des machines à tecips partagé ayant un seul utilisateur complet et de nombreux utilisateurs limités. Les PC à utilisateurs multiples de l'art antérieur ne peuvent 25 fonctionner tandis que chaque utilisateur utilise les sous-programmes logiciels d'utilisateur unique à moins que des. moyens ne soient prévus pour contrôler les capacités complètes d'accès au système de ces sous-programmes logiciels populaires. On notera que ce dont on a alors besoin est un 30 ordinateur à base de microprocesseurs à utilisateurs multiples, compatible pour actionner beaucoup des sous-programmes logiciels de PC courants actuels. Un tel ordinateur devrait avoir une configuration propre à s'adapter dans l'environnement existant d'un PC. De façon idéale, ce dont on a besoin est un PC à 35 utilisateurs multiples qui fournisse pour chaque utilisateur l'impression que le PC est une machine à utilisateur unique capable de faire fonctionner la plupart des sous-programmes 2601 793 logiciels des utilisateurs un.ques. Le PC à utilisateurs multiples comprenant un processeur tel qu'une unité centrale (CPUi doit pouvoir commander le réacheminement de certains sous-programmes d'utilisateurs de sorte qu'un utilisateur donné n'interfère pas 5 avec les sous-programmes d'autres utilisateurs. Quand une pluralité de sous-programmes d'utilisateur unique fonctionnent simultanément, des moyens doivent être utilisés pour commander l'accès en entrée/sortie de ces sous-programmes. En raison de la capacité limitée du CPU, le processus de commande et de protection 10 des grands ordinateurs ne peut être adapté simplement à l'enrironnement d'un PC. Un moyen plus primitif mais efficace pour l'accès en entrée/sortie est alors nécessaire. La présente invention prévoit une telle protection en entrée/sortie. La présente invention décrit un appareil pour 15 commander sélectivement l'accès d'un dispositif d'entrée/sortie. Une instruction du CPU commande l'accès à une pluralité d'accès d'entrée/sortie pour transférer des données à partir et en direction des dispositifs d'entrée/sortie. Un premier moyen de mémoire mémorise des bits de validation d'accès I/O de sorte que 20 chaque accès est associé à un bit de validation d'accès correspondant. Quand une instruction d'accès en I/O est produite, le(s) bit(s) de validation pour la(s) accès auquel(s) on veut accéder est (sont) consulté(s). Si une valeur 0 est présente, un accès direct est autorisé mais si une valeur 1 est présente, un piège 25 apparaît empêchant un accès direct. Le piège empêchera tout accès ou bien modifiera l'instruction pour accéder à un autre accès I/O. Le piégeage et le réacheminement de l'accès permet au dispositif I/O d'avoir une apparence virtuelle. Ces objets, caractéristiques et avantages ainsi que 30 d'autres de la présente invention sont exposés plus en détails dans la description suivante de modes de réalisation particuliers faite en relation avec les figures jointes parmi lesquelles: la figure 1 est un schéma sous forme de blocs d'un système d'ordinateur typique à base de micropresseurs. La figure 2 est un schéma sous forme de blocs plus détaillé du système d'ordinateur de la figure 1 représentant une machine virtuelle et un accès d'entrée/sortie virtuel. 2 6 0 1 7 9 3 La figure 3 est un schéma sous forme de blocs d'un système d'ordinateur présentant la fonction de circuit de protection d'accès. La figure 4 est un diagramme représentant le segment d'état de tâche et le segment de carte de bits de la mémoire. La figure 5 est un diagramme de configuration de bits indiquant l'opération de comparaison du circuit de protection d'accès. La présente invention décrit un appareil pour protéger 10 l'accès d'un dispositif d'entrée/sortie couplé à un CPU basé sur un microprocesseur ayant une capacité de protection d'utilisateurs multiples. Bien que le terme utilisateurs multiples soit employé, il se réfère à une pluralité d'individus exécutant des tâches multiples ainsi qu'à un utilisateur unique exécutant plusieurs 15 tâches indépendantes en parallèle, ou bien à la combinaison des cas ci-dessus. Le terme utilisateurs multiples est employé car l'ordinateur voit toute entrée sensiblement parallèle et simultanée comme une pluralité de sous-programmes d'utilisateurs. Dans la description qui suit, de nombreux détails particuliers 20 sont présentés tels que l'utilisation d'une configuration de bits particulière pour fournir une compréhension approfondie de la présente invention. Toutefois, il sera clair pour l'homme de l'art que la présente invention peut être mise en oeuvre sans ces détails particuliers. Dans d'autres cas, des dispositifs bien 25 connus n'ont pas besoin d'être décrits en détail pour ne pas obscurcir de façon non nécessaire la présente invention. La figure 1 représente un schéma sous forme de blocs d'un système d'ordinateur typique à base de microprocesseurs, tel qu'un PC ou un ordinateur de bureau. Un ordinateur 10 comprenant 30 un CPU 15 basé sur des microprocesseurs est sous la direction d'un utilisateur 11. L'ordinateur 10 est également couplé à un dispositif d'entrée/sortie (I/O) 14 qui peut être tout dispositif I/O commercial disponible telle qu'une imprimante, une commande de disque, etc. Bien qu'un seul dispositif I/O soit représenté par 35 souci de simplicité, de nombreux dispositifs I/O pourraient être couplés à l'ordinateur 10. Dans un système à utilisateur unique, tel que représenté par le seul utilisateur 11, l'accès complet au dispositif I/O 14 par l'utilisateur 11 est équivalent à un système de l'art antérieur. En conséquence, avec un utilisateur unique 11, l'ordinateur 10 peut traiter des programmes en utilisant des procédés d'utilisateur unique de l'art antérieur. Toutefois, quand des utilisateurs supplémentaires, illustrés sous forme d'utilisateurs 12 et 13 sont couplés à l'ordinateur 10, certains moyens de protection des I/O 14 doivent être mis en oeuvre pour empêcher tous les utilisateurs 11 à 13 de pouvoir accéder à toute la gamme d'I/O 14. Les systèmes multiutili10 sateurs typiques des PC de l'art antérieur impliquaient un utilisateur prioritaire ayant une capacité d'accès complet en I/O et d'autres utilisateurs (subordonnés) ayant des capacités d'utilisation limitée dans lequel l'utilisateur prioritaire établissait les limitations des utilisateurs subordonnés. En aucune manière, 15 tous les utilisateurs ne pouvaient actionner l'un des programmes commercialement disponibles d'utilisateur unique sans interférer les uns avec les autres quant à l'accès d'un dispositif I/O. L'ordinateur 10 selon la présente invention permet à tous les utilisateurs 11 à 13 d'actionner un programme d'utilisateur unique 20 typique de l'art antérieur, en canalisant cependant les instructions du CPU 15 pour empêcher toute interférence d'accès en I/O par tous les utilisateurs. La figure 2 est un agrandissement du système représenté en figure 1 du point de vue de l'utilisateur. Les mêmes 25 utilisateurs 11 à 13 actionnent l'ordinateur 10 qui est couplé aux entrées/sorties 14. L'ordinateur 10 selon la présente invention fonctionne comme une machine virtuelle -de sorte que chaque utilisateur semble avoir le contrôle complet de l'ordinateur 10. En conséquence, les utilisateurs 11i à 13 sont rendus virtuels pour 30 des machines virtuelles 10a à 10c, respectivement, qui apparaissent comme l'ordinateur 10 pour chaque utilisateur 11 à 13. Le concept des machines virtuelles n'est pas nouveau et est bien connu dans l'industrie des ordinateurs; toutefois, le fait de rendre virtuel un fonctionnement en entrée/sortie d'un micropro35 cesseur basé sur un PC implique un ensemble de problèmes distincts. L'appareil selon la présente invention utilise égale- 260 1793 ment le concept de virtualisation des entrées/sorties. Les entrées/sorties virtuelles ne sont également pas nouvelles, toutefois, une telle virtualisation des entrées/sorties n'a jusqu'à présent pas été essayée dans une architecture simplifiée 5 telle que celle d'un PC. En figure 2, chaque utilisateur 11 à 13 apparaît non seulement comme ayant le contrôle complet d'un ordinateur, mais apparaît également comme commandant de façon complète l'I/O 14. Des I/O virtuelles 14a à 14c donnent l'apparence que chaque utilisateur 11 à 13 a le contrôle complet 10 de l'I/O 14. Toutefois, -ce contrôle complet d'I/O doit être seulement une apparence et des moyens doivent physiquement -empêcher une interaction d'accès en I/O par les utilisateurs 11 à 13. Bien que seulement trois utilisateurs 11 à 13 soient représentés par souci de simplicité, un nombre beaucoup plus élevé 15 peut accéder à un ordinateur 10. Comme le représente la figure 3, un ordinateur 20 comprenant l'appareil selon la présente invention est couplé à des utilisateurs 21 à 24. Bien que quatre utilisateurs seulement soient représentés, un nombre quelconque d'utilisateurs peut 20 utiliser la machine. L'ordinateur 20 comprend un CPU 25 basé sur un microprocesseur. Le CPU 25 fonctionne comme une machine virtuelle, présentant l'apparence que chaque utilisateur 21 à 24 a le contrôle complet de l'ordinateur 20. L'unité centrale (CPU 25) est couplée à un dispositif de mémoire 26 par une ligne 27. La 25 mémoire 26 est habituellement une mémoire interne, par exemple une ROM ou une RAM; toutefois la mémoire 26 n'est pas nécessairement une mémoire interne. Le CPU 25 est également couplé à un circuit de protection-d'I/O 30 par une ligne 31. Le circuit 30 est également 30 couplé à la mémoire 26 par une ligne 32 et à diverses entrées/sorties par une ligne 33. Un hyperviseur 34 qui contient un ensemble d'instructions programmées est également couplé au circuit 30 par des lignes 35 et 36. La ligne d'entrée/sortie 33 couple divers dispositifs d'entrée/sortie 37-40 d'un ordinateur 20. Un nombre 35 quelconque des dispositifs d'entrée/sortie peut être couplé à la ligne 33. En outre, d'autres lignes de commande qui ne sont pas nécessairesà la compréhension de la présente invention ne sont pas représentées. Structurellement, la mémoire 26 du mode de réalisation préféré alloue une certaine région de mémoire 29 à chaque utilisateur particulier. Un programme de système de fonctionnement 5- de l'ordinateur 20 commande cette partition de la mémoire 26 et toute organisation de mémoire de l'art antérieur peut être utilisée y compris des mémoires virtuelles. Chaque région 29 est en outre divisée en deux ou plusieurs zones 41 et 42. La zone 41, qui comprend d'autres instructions de programmation pour le CPU 25 10 est couplée au CPU 25 par une ligne 27. La zone de carte de bits (BMA) 42 contient un groupement de bits pour déterminer l'accès en entrée/sortie et contient le codage destiné à mettre en oeuvre le schéma de protection d'entrée/sortie selon la présente invention. Le BMA 42 est couplé au circuit 30 par une ligne 32. Fonctionnellement, tandis que le CPU 25 exécute chaque étape d'instruction d'un utilisateur particulier, le CPU 25 effectue des transitions par l'intermédiaire d'instructions mémorisées dans le segment 41. Chaque fois qu'une instruction dans la zone 41 demande un accès à un dispositif d'entrée/sortie, le BMA 20 42 est consulté. Le BMA 42 contient une carte de bits dans laquelle chaque bit est alloué à chaque accès d'entrée/sortie. Ainsi, un dispositif d'entrée/sortie comprenant une pluralité d'accès aura plusieurs bits associés à ce dispositif d'entrée/sortie. Tandis qu'une instruction d'accès en entrée/sortie est transmise à partir du CPU 25 sur la ligne 31 au circuit 30, le circuit 30 considère également l'état du bit de l'accès d'entrée/sortie auquel on accède par le CPU 25. Chaque fois qu'un bit a une valeur "0" le CPU 25 est autorisé à accéder directement à la 30 ligne 33 vers l'accès correspondant représenté par le bit. Par exemple, en figure 3, le bit 43 du BMA 42 autorisera le CPU 25 à accéder à l'accès 43A du dispositif 37, parce que la valeur du bit 43 est "0". Chaque fois qu'un bit dans le BMA 42 présente une 35 valeur "1", un accès direct à un accès d'entrée/sortie par le CPU est empêché par le circuit 30. En ce cas, le circuit 30 sert de piège à deux options. Une première option est destinée à 260 1793 ce que le circuit 30 empêche tout accès à cet accès d'entrée/sortie. L'autre option permet au circuit 30 de rendre virtuel l'accès d'entrée/sortie. Si une virtualisation d'entrée/sortie est souhaitée, 5 le circuit 30 piège et réachemine l'instruction du CPU 25 sur la ligne 35 vers l'hyperviseur 34. L'hyperviseur 34 contient un ensemble programmable d'instructions pour virtualiser un accès d'entrée/sortie et l'instruction révisée est émise sur la ligne 36. L'hyperviseur 34 peut être tout dispositif de mémorisation à 10 mémoire interne ou externe mémorisant un ensemble d'instructions qui peuvent être programmées par le concepteur du système. L'hyperviseur 34, représenté en tant que partie de l'ordinateur 20, peut être également un dispositif à mémoire externe. L'aspect crucial de l'hyperviseur 34 réside dans sa capacité à virtualiser 15 des accès d'entrée/sortie chaque fois qu'un bit permettant un accès a une valeur 1. En outre, bien que le mode de réalisation préféré décrive une valeur 0 ou 1 pour commander un accès en entrée/sortie, on notera que toute valeur peut correspondre à ce contrôle d'accès. En supposant que les utilisateurs 21 à 24 exécutent tous des programmes similaires d'utilisateur unique en ce qu'ils essaient tous d'accéder au même dispositif 38 (un entraînement de disque dans cet exemple) ayant un accès unique 44a commandé par le bit 44, le concepteur du système aura programmé le bit 44 pour 25 qu'il présente une valeur 1 pour trois des utilisateurs, 22 à 24, (une carte de bits pour un seul utilisateur est représentée dans la figure) et une valeur 0 pour l'utilisateur 21. (La carte de bits pour l'utilisateur 21 n'est pas représentée). Tandis que les instructions du segment 41 sont exécutées pour chaque utilisateur, 30 l'accès 44a est tenté par les quatre utilisateurs 21 à 24. Toutefois, comme seul l'utilisateur 21 a une valeur de bit de validation de 0 pour le bit 44, seul l'utilisateur 21 sera autorisé à accéder directement à l'accès 44a. Les utilisateurs 22 à 24, ayant une valeur de bit de validation égale à 1 pour leur 35 bit 44 respectif, auront leur instruction de CPU 25 réacheminée vers l'hyperviseur 34. L'hyperviseur 34 redirigera alors les instructions vers un autre dispositif, par exemple le dispositif 260 1 793 de mémoire 39, dans lequel on allouera aux utilisateurs 22 à 24 des zones 51, 52 et 53 respectivement. Ainsi, en rendant virtuelle l'entrée/sortie, les utilisateurs 22 à 24 apparaîtront comme contrôlant le dispositif 38 mais en fait seront relégués à des 5 zones dans un dispositif plus important 39. En outre, si l'utilisateur ou l'utilisatrice 21 doit également voir son accès virtualisé, par exemple vers la zone 54, alors le bit 44 de l'utilisateur 21 sera mis à 1 et réacheminé vers l'hyperviseur 34. Le circuit 30 peut contrôler un dispositif à accès 10 multiple tel que le dispositif 40. L'instruction du segment 41 essaiera de réaliser une instruction d'accès multiple et le circuit 30 considérera une pluralité de bits de validation dans le BMA 42 de façon correspondante à l'accès. A nouveau, toute valeur "1" provoquera un piégeage de l'instruction et son réacheminement 15 vers l'hyperviseur 34. L'hyperviseur 34 réacheminera alors l'accès vers un autre dispositif à accès multiple ou éventuellement même vers un dispositif à accès unique, par des procédés bien connus dans la technique. La figure 4 montre mieux la configuration de la 20 mémoire 26 de la figure 3 telle qu'elle est utilisée dans le mode de réalisation particulier décrit. Une mémoire 60 comprend une zone 61 pour mémoriser des instructions de CPU et une zone de cartographie de bits (BMA) 62. Chaque mot dans la mémoire 60 est un mot de 16 bits, bien qu'une autre longueur de mot puisse être 25 utilisée. Chaque mot dans le BMA 62 est en outre partagé en deux octets 67, chaque octet ayant une longueur de 8 bits. Comme chaque bit représente une commande d'accès d'un accès d'entrée/sortie, chaque octet 67 commandera un accès vers huit accès d'entrée/sortie différents. Le mode de réalisation préféré alloue jusqu'à 64 30 Kbits (ou 8K octets) de mémoire à chaque BMA 62 autorisant un accès possible à 65.535 accès. Comme 64K accès d'entrée/sortie est une situation fort peu probable, l'espace mémoire sera conservé en ayant un état pardéfaut implicite égal à 1pour les accès non spécifiés. Ainsi, par exemple, le BMA 62 aura un espace mémoire pour 96 bits 35 (0)95 pour des accès 0 à 95 et tout accès ayant une adresse supérieure à 95 se verra attribuer une valeur par défaut de 1 et toute instruction cherchant un tel accès est réacheminée par l'intermédiaire de l'hyperviseur sans consulter la carte de bits dans le BMA 62. Pour accéder aux bits convenables de commande d'accès, le mot d'accès en entrée/sortie 63 comprend un pointeur (PTR) 64. 5 Le pointeur 64 contient l'adresse de l'adresse de carte de bits 66 correspondant au(x) bit(s) représentant le(s) accès d'I/O auxquels on accède par le mot 63 pour une tâche spécifiée par le CPU. Ainsi, 1, 2 ou 4 bits du mot 66 peuvent être comparés permettant un contrôle d'accès pour 1, 2 ou 4 accès d'entrée/sortie contigus 10 pour chaque instruction d'entrée/sortie. Comme le représente la figure 3, dans la pratique réelle, le circuit 30 est un réseau logique programmable (PLA) comprenant un logiciel de commande qui fait partie du CPU 25. Dans une variante de réalisation, le circuit 30 a été mis en oeuvre sur 15 une puce semiconductrice, la puce comprenant également un dispositif de mémoire telle qu'une RAM ou une ROM pour mémoriser un logiciel de contrôle. En outre, on notera que le BMA 42 (ou 62 en figure 4) peut également être inclus dans le circuit 30. On notera également que le circuit 30 et l'hyperviseur 34 peuvent être mis 20 en oeuvre également sous forme de microcode. Les lignes 27 et 32 sont en réalité les mêmes lignes constituant un bus de données. Les lignes 35 et 36 sont également les mêmes lignes et transfèrent des données entre le CPU 25 et l'hyperviseur 34. En fait, les lignes 27, 32, 33, 35 et 36 peuvent même être les mêmes lignes 25 représentant les lignes de données en direction et en provenance du CPU 25. Comme le représentent les figures 4 et 5, l'avantage de l'utilisation d'un pointeur 64 tel que celui de la figure 4 est illustré en figure 5. En figure 5, on a choisi un cas particulier 30 à titre d'exemple dans lequel une configuration de bits 70 pour les bits 0 à 7 est représentée. Le pointeur 64 du mot 63 choisit les deux premiers bits (bits 0 et 1) du mot 66. Dans cet exemple, seulement deux bits sont choisis bien que 1, 2 ou 4 bits du mot 66 puissent être choisis. En outre, le pointeur 64 peut avoir une 35 longueur quelconque selon l'architecture du système. Dans l'exemple de la figure 5, les bits 0 et 1 commandent l'accès aux entrées/sorties 0 et 1 du dispositif 71. Les bits 2 et 3 ne sont 1 1 pas liés à un dispositif quelconque et les bits 4 à 7 commandent un accès aux entrées/sorties 0 à 3 du dispositif 72 (les dispositifs 71 et 72 ne sont pas représentés physiquement). Chaque fois qu'un motif de bit est choisi par le pointeur 63, la 5 configuration de bits d'ensemble 70 (1, 2 ou 4 bits) est comparée à un accès d'entrée/sortie. Les bits sont combinés selon une fonction OU pour déterminer l'accès au dispositif. Dans la tâche A, la configuration de bits 74 est choisie par un dispositif à double accès 71. Les bits de la configuration de bits 74 sont 10 soumis à une fonction OU pour déterminer si des valeurs "1" sont présentes. Tous les bits ont une valeur 0 dans ce cas, permettant un accès aux entrées/sorties 0 et 1 du dispositif 71 par cet utilisateur particulier. Dans la tâche B, l'utilisateur essaie d'accéder aux accès 0 à 4 du dispositif 72. Les bits de la 15 configuration de bits 75 sont soumis à une fonction OU pour déterminer si une valeur "1" est présente. La présence d'une quelconque valeur "1" (tous les bits dans cet exemple) provoque un piègeage et empêche un accès direct à l'entrée/sortie. On notera qu'une valeur "1" serait apparue si l'un quelconque des quatre 20 bits du motif 75 était "1". Comme chaque accès doit être protégé de transferts multiples vers les accès, le bit de validation de chaque accès utilisé dans une transaction doit être valide pour n'importe quelle partie de la transaction à autoriser. Ainsi, en figure 5, 25 la vérification des valeurs de bits du résultat soumis à une fonction OU assure cette protection. En conséquence, en comparant plusieurs bits, une protection d'accès multiple est réalisée pour un dispositif. On notera également que les bits 2 et 3 de la configuration 70 ont une valeur de défaut égale à "1" car aucun 30 dispositif n'est couplé aux bits 2 et 3 pour une commande d'accès. Le codage du pointeur 64 peut être réalisé selon un format de bits unique ou multiple. En choisissant une configuration de bits appropriée pour chaque carte de bits, certaines entrée/sortie sont autorisées à un accès rapide direct par un utilisateur particulier 35 alors que d'autres entrées/sorties sont piégées et rendues virtuelles. Bien que le mode de réalisation particulier décrit 260 1 793 concerne un appareil de protection d'accès d'entrée/sortie en relation avec un utilisateur accédant à une entrée/sortie particulière, il faut noter que tout dispositif, y compris une autre entrée/sortie, peut remplacer l'utilisateur. Le point essentiel de l'invention réside dans la possibilité pour l'appareil de permettre sélectivement à certaines instructions d'accéder directement à l'entrée/sortie alors que d'autres instructions sont piégées. En outre, bien que le mode de réalisation particulier décrit choisisse 1, 2 ou 4 bits pour la protection de l'accès 10 d'entrée/sortie, un nombre quelconque peut être utilisé sans sortir du domaine de l'invention. On a donc décrit ci-dessus un appareil assurant une protection d'entrée/sortie et pour rendre virtuelle l'entrée/sortie protégée. REVENDICATIONS 1. Appareil de contrôle d'accès pour un dispositif d'entrée/sortie dansun calculateur numérique, comprenant une unité centrale de traitement (25) et une pluralité d'accès d'entrée/sortie (14; 37-40) qui transfèrent des données en direction et à partir du dispositif d'entrée/sortie; caractérisé en ce qu'il comprend en outre: un premier moyen de mémoire (26) pour mémoriser une pluralité de bits de validation d'accès d'entrée/sortie, dans lequel chacun des accès d'entrée/sortie comprend un bit de 10 validation d'accès correspondant; un moyen de comparaison (30) couplé à l'unité centrale et au premier moyen de mémoire pour comparer une instruction en provenance de l'unité centrale choisissant un accès spécifié pour y accéder et son bit de validation d'accès correspondant pour 15 l'accès spécifié; un moyen de commande (30, 34) couplé au moyen de comparaison et aux accès d'entrée/sortie pour permettre à l'unité centrale d'accéder à l'accès spécifié quand son bit de validation correspondant est à une première valeur et prohiber son accès 20 quand le bit de validation d'accès correspondant est à sa seconde valeur; d'o il résulte que chacun des dispositifs d'entrée/sortie est sélectivement protégé par rapport à un nombre quelconque d'accès indésirable. 2. Appareil selon la revendication 1, caractérisé en ce que l'unité centrale (25) reçoit des accès d'une pluralité d'utilisateurs (21-24). 3. Appareil selon la revendication 2, caractérisé en ce que le moyen de commande (34) comprend en outre des moyens pour 30 modifier l'instruction de l'unité centrale quand son bit de validation d'accès correspondant est à la seconde valeur. 4. Appareil selon la revendication 3, caractérisé en ce qu'il comprend en outre un second moyen de mémoire couplé au 260 1793 moyen de commande, ce second moyen de mémoire servant à mémoriser un ensemble d'instructions de modification et produisant ces instructions de modification quand la valeur de validation d'accès correspondante est à sa seconde valeur. 5. Appareil selon la revendication 4, caractérisé en ce que le premier moyen de mémoire comprend en outre une carte de bit (42) pour mémoriser les bits de validation d'accès. 6. Appareil selon la revendication 5, caractérisé en ce que la carte de bits est programmable. 7. Appareil selon la revendication 6, caractérisé en ce que l'ensemble d'instructions de modification dans le second moyen de mémoire est programmable. 8. Appareil selon la revendication 7, caractérisé en ce que le bit de validation d'accès pour chaque accès est 15 constitué d'un bit unique de sorte que la première valeur est 0 et la seconde valeur est 1. 9. Appareil selon la revendication 8, caractérisé en ce que l'unité centrale et les instructions de modification accèdent à une pluralité d'accès contigus. 10. Appareil selon la revendication 9, caractérisé en ce que l'unité centrale est basée sur un microprocesseur. 11. Appareil selon l'une des revendications 2 ou 10, dans lequel le moyen de commande et le moyen de comparaison comprennent en outre un microcode. 12. Appareil pour commander sélectivement un couplage à des accès, dans un calculateur numérique comprenant une unité centrale CPU (25) capable d'être utilisée par une pluralité d'utilisateurs (21 - 24) et une pluralité d'accès d'entrée/sortie (37 - 40) couplés à l'unité centrale pour transférer des données, 30 caractérisé en ce qu'il comprend: une première mémoire (26) mémorisant une pluralité de bits de validation d'accès d'entrée/sortie, chacun des accès d'entrées/sorties ayant son bit de validation d'accès correspondant; une seconde mémoire (34) mémorisant un ensemble d'instructions de modification; un moyen de comparaison (30) couplé à l'unité centrale 260 1 793 (25) et à la première mémoire (26) pour comparer une instruction en provenance de l'unité centrale choisissant un couplage à un accès spécifié et son bit de validation d'accès correspondant de l'accès spécifié; un moyen de commande couplé au moyen de comparaison (30), au second moyen de mémoire (34) et aux accès d'entrées/sorties (37 - 40) pour permettre à l'unité centrale d'accéder à l'accès spécifié quand son bit de validation d'accès correspondant est à une première valeur et fournissant l'une des instructions de 10 modification quand son bit de validation d'accès correspondant est à une seconde valeur; d'o il résulte que chacun des accès d'entrée/sortie a son accès commandé de façon sélective. 13. Appareil selon la revendication 12, caractérisé en 15 ce que le moyen de comparaison et le moyen de commande comprennent en outre un réseau logique programmable comprenant un ensemble d'instructions de commande. 14. Appareil selon la revendication 13, caractérisé en ce que la première mémoire (26) comprend une carte de bits (42) 20 pour mémoriser les bits de validation. 15. Appareil selon la revendication 14, caractérisé en ce que l'ensemble d'instructions de modification dans la seconde mémoire est programmable. 16. Appareil selon la revendication 15, caractérisé en 25 ce que l'unité centrale et les instructions de modification accèdent à une pluralité d'accès contigus. 17. Appareil selon la revendication 12, caractérisé en ce que le moyen de comparaison et le moyen de commande comprennent en outre une mémoire programmable sur une puce semiconductrice. 18. Procédé pour préparer un programme d'ordinateur pour commander un accès vers des dispositifs d'entrée/sortie qui sont rendus virtuels à partir d'une unité centrale basée sur un microprocesseur, caractérisé en ce qu'il comprend les étapes suivantes: déterminer une instruction de requête d'entrée/sortie pour accéder à l'un des dispositifs d'entrée/sortie; vérifier une valeur de contrôle d'accès prédéterminée 260 1 793 mémorisée dans une mémoire, chaque dispositif d'entrée/sortie ayant une valeur de contrôle d'accès correspondante; autoriser l'accès à l'entrée/sortie si la valeur de contrôle d'accès est une première valeur et empêcher l'accès si le bit de commande d'accès est à une seconde valeur; d'o il résulte que chacun des dispositifs d'entrée/sortie a son accès contrôlé de façon sélective. 19. Procédé selon la revendication 18, comprenant en outre l'étape consistant à modifier l'instruction de requête 10 d'entrée/sortie quand la valeur de contrôle d'accès est à une seconde valeur, de sorte qu'une instruction de requête d'entrée/sortie différente est produite. 20. Procédé selon la revendication 19, caractérisé en ce que la valeur de contrôle prédéterminée est mémorisée dans une 15 carte de bits dans la mémoire. 21. Procédé selon la revendication 20, caractérisé en ce que la première valeur est 0 et la seconde valeur est 1. 22. Procédé selon la revendication 20, caractérisé en ce que la carte de bits est prévue pour chaque utilisateur.