Brevet FR2266221A1 — publié le 19751024

Cette invention concerne, dans son ensemble, les systèmes d'ordre nateurs et plus particulièrement un système et un procédé de communication entre le matériel (appelé communément hardware) et le logiciel (appelé commu nément software) dans un cadre de multiprogrammation/multitraitement. Les systèmes d'ordinateurs à multipr.ogrammation/multitraitement nécessitent l'utilisation diurne d####zone de communication dans la mémoire princi- pale pour les communications entre le matériel et le logiciel (cf demande de brevet français n0 73 42698 du 30 Novembre 1973 ayant pour titre "Base du système" au nom de la demanderesse. La base du système est, en général, située à un emplacement fixe de la mémoire principale bien que cet emplace ment puisse être modifié ou translaté au moyen d'un dispositif tel qu'un regis tre d'adresse limite (BAR) (cf demande de brevet français n0 73 42703 du 30 Novembre 1973 ayant pour titre "Système d'adressage de mémoire" au nom de la demanderesse). Dans les systèmes d'ordinateurs à hautes performances il est nécessaire de stocker des parties de la base du système dans des registres bloc-notes, plutôt que dans la mémoire principale, et en conséquence, ces registres bloc note étant inaccessibles et invisibles au logiciel en exécution dans le système. En conséquence, il se pose un problème lorsque le logiciel (ctest-à-dire pratiquement le programmeur) désire changer des positions ou changer des informations de la base du système qui se trouvent dans ces registres, bloc-notes internes du processeur central auquel le logiciel ne peut avoir accès. TECHNIQUE ANTéRIEURE Le problème a été résolu de llune des deux manières ci-après. Le premier procédé consiste simplement à réinitialiser l'ensemble du système, en changeant ainsi là base du système avec un contenu différent, par suite diun nouveau processus dwinitialisation. Cette technique entraide une perte -de temps extrêmement importante et est tout à fait indésirable. Selon une seconde technique utilisée pour résoudre le problème, le logiciel utilise des propriétés spéciales, qui sont fonction du modèle, de la machine particulière sur laquelle il est en exploitation, pour changer la base du système.Ceci entraide la propriété très indésirable que le logiciel est complètement fonction du modèle diordinateur caractéristique qui certainement ne sert pas à attirer les faveurs de la clientèle à un fabricant d'ordinateur. Le besoin existe, en conséquence, de disposer d'une technique pe#rmettant de changer les informations de la base du système, à la fois dans la mémoire principale et dans les registres bloc-notes internes, en rendant la base du système contenue dans la mémoire bloc-notes accessible au logiciel mais non visible au logiciel clest-à-dire qu'elle ne peut être lue par le logiciel. L'un des buts principaux de l'invention est de réaliser un système et un procédé perfectionnés pour modifier les informations contenues dans la base du système diun système d'or dinateur. Un autre but de l'invention est de réaliser une instruction de commutation du système dans la microprogrammerie (appelée communément firmware) qui change, lors de son exécution, les informations contenues dans la base du système. Encore un autre but de l'invention est de réaliser un système et un procédé pour modifier les informations contenues dans la base du système qui est située dans la mémoire principale et dans les registres bloc-notes. Encore un autre but de l'invention est de raliser un mécanisme perfectionné de commutation de la base du système. ainsi Ces buts que autres buts de l'invention ressortiron de la description du mode de réalisation préférentiel de l'invention considérée en combinaison avec les dessins annexés. Conformément à iiinvention, il est prévu une instruction, indépendante du modèle, contenue dans la microprogrammerie pour modifier, lors de son exécution, les informations contenues dans la base du système qui est située à la fois dans la mémoire principale et dans les registres bloc-notes internes. La base du système située à un emplacement, spécifié par le registre d'adresse limite BAR, de la mémoire principale, est copiée dans un nouvel emplacement de la mémoire principale avec des parties prédéterminées de ses informations modifiées. Ceci est facilement accompli par le système d'exploitation (cf demande de brevet précitée). L'instruction de commutation de la base du système transfère alors les informations contenues dans la base du système située au nouvel emplacement, à la base du système située à l'emplacement spécifié par le registre BAR, ainsi également qu'à la partie de la base du système qui se trouve dans la mémoire bloc-notes. Les éléments nouveaux qui sont caractéristiques de l'invention sont énoncés plus particulièrement dans les revendications annexées. L'invention elle-meme, tant en ce qui concerne son organisation et son fonctionnement que d'autres buts et avantages quelle présente sera plus facilement comprise en se référant à la description ci-après considérée en combinaison avec les dessins annexés dans lesquels La Figure 1 est un schéma bloc d'un système de multiprogrammation utilisant l'invention La Figure 2 est une représentation schématique de diverses structures du matériel utilisées par l'invention La Figure 3 est une légende des termes utilisés pour les zones de stockage réservées dans les registres représentés sur la figure 2 La Figure 4 est une représentation schématique diun bloc de commande de processus La Figure 5 est une représentation schématique dsun système utilisé pour adresser un bloc de commande de processus La Figure 6 est une représentation schématique de la base du système de l'invention Les Figures 7A et 7B représentent schématiquement respectivement un seg ment de pile et un élément de pife La Figure 8 est une représentation schématique diun système utilisé pour adresser les segments G et en particulier la file d'attente des processus contenue dans te segment GO La Figure 9 est une représentation schématique éclatée d'un segment GO montrant la file d'attente des processus et les liaisons de pro cessus Les Figures I 0a à i 0e sont des schémas-blocs des structures du bloc de commande de processus (PCB}; Les Figures I la à 11r sont des schémas-blocs des structures de la base du système La Figure 1Z est une représentation schématique des moyens utilisés pour lladressage des segments des utilisateurs et du système, en utilisant les structures de la base du système et des blocs de commande de processus (PCB) Les Figures 13at - a2, 13b7 - b2 et 13c constituent une représentation schématique de l'unité de commande Les Figures 14al à 14i sont des organigrammes de l'unité distributeur en microprogrammerie La Figure 15a représente la structure de llinstruction de commutation de la base du système Les Figures 15a à 15c sont les organigrammes de ltinstruction de commuta tion de la base du système en microprogrammerie. L'invention est utilisée typiquement dans le cadre du système matériel décrit ci-après coordonné par un système diexploitation matériel/microprogrammerie/logiciel. Sur la Figure 1 à laquelle on se référera, les soussystèmes de l'ordinateur comprennent le sous-système processeur 101, le sous-système de stockage 102 ou mémoire centrale, et un ou plusieurs jusqulà 32 - sous-systèmes périphériques 103. Le sous-système de traitement comprend une unité centrale (CPU} 104 et jusqu'à quatre unitésde contrôle Entrée/Sortie (tOC) 105. Chaque sous-système périphérique est constitué par une unité de contrôle de périphériques (PCU) 106, un certain nom bre d'adaptateurs de dispositifs (DA) 107 et jusqu'à 256 périphériques E/S 108. Le sous-système de stockage 102 comprend de un à quatre modules de mémoire à semi-conducteur contenant chacun de 32 000 à 512 000 octets. i - SOUS-SYSTEME PROCESSEUR Dans le sous-système processeur 101, l'unité centrale 104 exécute les opérations de traitement fondamentales pour le système et établit la jonction avec la mémoire 102. Le contrôleur E/S 105 commande tous les échanges d'informations entre le sous-système du stockage 102 et les dispositifs périphériques 103. A - UNITE CENTRALE (CPU) L'unité centrale comporte un synchroniseur de mémoire principale 109, une mémoire tampon 110, divers éléments qui comprennent l'unité de calcul 111, et en option, les moyens d'émulation 112. Le synchroniseur de mémoire principale 109 résoud les conflits pour l'utilisation de la mémoire principale entre l'unité de calcul 111, la mémoire tampon 110 et le contrôleur E/S 105. Les conflits sont résolus sur la base de la priorité ci-après: le contrôleur E/S a la plus forte priorité suivi des opérations d'écriture en mémoire (de l'unité de calcul) et des opérations de lecture en mémoire (avec transfert dans la mémoire tampon).L'unité centrale comporte également l'unité de contrôle d'adresse 131, qui commande l'adressage de la mémoire principale, et la mémoire associative 132, utilisée pour stocker les adresses de la mémoire principale les plus récemment utilisées. La mémoire tampon 110 est une mémoire tampon rapide de petite capacité qui reproduit une région sélectée de la mémoire principale et fait la jonction avec l'unité de calcul pour réduire le temps d'accès moyen à la mémoire. Au cours de chaque cycle -de lecture en mémoire, la mémoire tampon et la mémoire principale sont toutes deux accédées. Si l'information à extraire est déjà dans la mémoire tampon, la lecture en mémoire principale est interrompue et les informations sont extrait es de la mémoire tampon. Autrement, la mémoire principale 102 est lue. Chaque fois qu'une telle lecture est effectuée, L'unité centrale 104 extrait 32 octets qui contiennent l'information désirée. Cette information reste dans la mémoire tampon en vue de références futures à la mémoire. Etant donné que la mémoire tampon est transparente au logiciel, le programme contrôlant l'ordinateur à un moment donné quelconque ne peut pas déterminer si llinfor- mation qu'il traite a été extraite de la mémoire tampon ou de la mémoire principale. L'unité de calcul 111 exécute toutes les opérations de traitement de données et de génération d'adresse à l'intérieur de l'unité centrale. Une mémoire morte de commande 130 prévue dans l'unité de calcul (cf le livre Microprogramming: Principles and Practices. Samir S. Husson Prentice Hall, Zinc.) contient la microprogrammerie qui initialise le système, commande l'unité centrale 104 et le contrôleur E/S 105 et décode un jeu d'instructions (non représenté).Facultativement, la mémoire morte peut fournir des instruc tions scientifiques, des routines d'essai, des ensembles de programmes dlémuiation ou des caractéristiques spécialisées qui étendent les capacités du sous-système processeur, Facultativement, unité centrale permet l'émulation des systèmes autres que le présent système. Les émulateurs 112 sont constitués par des éléments de microprogrammerie, de logiciel et, dans certains cas, de matériel B - CONTROLEUR ENTREE-SORTIE La partie du sous-système processeur constituée par le contrôleur E/S 105 établit une voie de données entre un sous-système périphérique 103 quelconque et le sous-système de stockage 102.Cette voie de données permet la mise en route des commandes périphériques et commande les transferts de données résultants. Un contrôleur E/S peut contrôler jusqu'à 32 unités de contrôle de canal (non représentés). C - SOUS-SYSTEMES PERIPHERIQUES Dans un sous-système périphérique 103 (Fig. 1), l'unité de contrôle de périphérique (PCU) 106 est un processeur microprogrammé indépendant qui soulage la charge de llunité centrale 104 en commandant les dispositifs E/S 108 au cours des opérations d'Entrée/Sortie. L'unité de contrôle de périphérique 106 remplit cette fonction en exécutant des instructions contenues dans un programme de canal. Ce programme a pour résultat l'exécution d'opérations arithmétiques, logiques, de transfert, de décalage et de branchement dans l'unité de contrôle de périphériques.Il existe plusieurs types d'unités de contrôle de périphériques, en fonction du type de dispositif que chacune com mande, à savoir les unités d'enregistrement classiques, les mémoires de masse (à disques), les unités à bande magnétique, les système de communica tion, etc. . Les adaptateurs de dispositifs 107 servent d'intermédiaires entre chacune des unités de contrôle de périphériques et les dispositifs qu'elle commande. Chaque adaptateur contient la microprogrammerie et la logique nécessai-~s ~jour réaliser les communications avec un type particulier de dispositif. Selon le type, un adaptateur 107 commande un ou plusieurs dispo sitifs. Les principales fonctions remplies par un sous-système périphéri que 103 sont les suivantes 1/ transformer les instructions do l'unité centrale en une série de commandes acceptables par le dispositif périphérique approprié. 2/ condenser et décondenser les données sous la forme requise par l'unité centrale ou par le dispositif périphérique approprié. 3/ maintenir l'unité centrale informée de l'état du sous-système et des dispositifs sous son contrôle. 4/ lancer et traiter indépendamment les procédures d'erreur et de rétablissement à la suite dierreurs. 5/ permettre le diagnostic direct diun dispositif sans perturber les capacités de partage entre les dispositifs du processeur périphérique associé. Une unité de contrôle de périphérique résoud les conflits pour l'accès à la mémoire principale entre les dispositifs qui lui sont raccordés, pendant que le contrôleur E/S résoud les conflits entre les unités de contrôle de périphériques. D - SOUS-SYSTEMES DE STOCKAGE Chaque module de mémoire 1 à 4 a une largeur de 4 ou 8 octets. Le nombre de modules, leurs dimensions, et la largeur de la voie de données peuvent varier selon les dimensions de l'ordinateur. Les modules de mémoire sont imbriqués à quatre voies d'une manière telle que les quatre modules sont accédés séquentiellement (le module 1 contient les 8 premiers octets, le module 2, les 8 octets suivants, etc..). L'imbrication ou entrelaçage réduit le nombre de conflits pour liaccès à la mémoire et réduit ainsi le temps d'accès moyen à la mémoire. La mémoire peut être remaniée en cas de défaillance, c'est-à-dire que des blocs de mémoire contenus dans un module peuvent être retirés sans destruction de l'adressage continu. La mémoire principale 102 est constituée par un milieu de stockage capacitif sous forme de microplaquettes MOS (métal-oxyde-semi -conducteur). Ce milieu fonctionne sur le principe de la régénération pour conserver les informations. Chaque emplacement de mémoire est régénéré au moins une fois toutes les 2 millisecondes. La conception du système assure que peut de conflits se produisent entre les temps de régénération et les accès à la mémoire (en cas de conflit, la régénération a priorité). Une zone située au début de la mémoire principale est réservée au matériel et à la microprogrammerie. La limite supérieure de cette zone est définie par le contenu d'un registre d'adresse limite BAR (qui sera décrit ci-après) qui est visible par le logiciel. Le contenu du registre BAR est fixé au moment de l'initialisation du système. La zone de mémoire au-dessous de l'adresse spécifiée dans le registre BAR peut contenir des tables de commande Entrée/Sortie (IOC) qui définissent la configuration des sous-systèmes périphériques, la microprogrammerie de commande de l'unité centrale (CPU) ou des microprogrammes et des tables pour llémulation. LaLataille de la zone située au-dessous de l'adresse spécifiée dans le registre BAR dépend de la configuration du système.Le fait que les microprogrammes soient dans la mémoire principale ou dans la mémoire morte (mémoire de commande) dépend de la configuration du système et des applications exécutées par le système. Il - STRUCTURE DE BASE DE LA MACHINE Il existe typiquement trois structures de données de base utilisées dans ce matériel les formats de données, les registres visibles au logiciel et les formats d'instructions. A - FORMATS DE DONNEES Les informations sont transférées entre la mémoire et l'unité cen trale par multiplets de 8 bits en parallèle. Chaque unité d'information de 8 bits est appelée un octet Des données de parité ou de correction d'erreur sont également transférées avec les données mais elles ne peuvent être modifiées par le logiciel. En conséquence, dans cette description, le terme données exclu les données de parité ou de correction dierreursassociées. B - OCTETS Les bits à l'intérieur diun octet sont numérotés de O à 7 de gauche à droite. Les octets sont traités séparément ou en groupes. Deux octets cons tituent un demi mot, 4 octets un mot, 8 octets un mot double, 16 octets un mot quadruple. Ce sont les formats de base utilisés pour toutes les données, y compris les instructions. C - REPRESENTATION DES DONNEES Toutes les données sont sous forme binaire mais peuvent etre inter prêtées comme données binaires, décimales ou alphanumériques. Les bits de données sont interprêtés par groupes de quatre en tant que données en décimal codé-binaire, par groupes de huit en tant que données alphanumériques ou par groupes de 16 à 64 en tant que chiffres binaires. Ces derniers sont interpre- tés en tant que nombre signés, à virgule fixe ou flottante, en notation binaire. Tout nombre de bits contigüs jusqu'à la valeur d'un double mot peut être manipulé comme une chaine. Le jeu des caractères alphanumériques est re présenté en code EBCDIC. Le code ASCII est utilisable comme autre code d' échange. D - ADRESSE D'OCTETS Les emplacements d'octets dans la mémoire principale sont numéro~ tés à la suite en partant de zéro. Chaque numéro est l'adresse d'un octet. Un groupe d'octets consécutifs est dit aligné sur un demi-mot, un mot, un mot double ou un mot quadruple; si adresse de l'octet de gauche du groupe est respectivement un multiple de 2, de 4, de 8 ou de 16. Chaque fois qu'un demi mot, un mot, un mot double ou un mot quadruple est ainsi aligné, cette unité peut être extraite à cette adresse.L'emplacement des données dans la mémoi re principale est spécifié par un descripteur de données qui est accédé indi rectement au cours du développement d'adresse (cf demande de brevet fran çais NO 73 17765 du 16 Mai 1973 ayant pour titre "Dispositif de développement et de calcul d'adresse dans une mémoire segmentée" au nom de la demanderesse). E - REGISTRES VISIBLES Il y a 33 registres visibles aux utilisateurs dans l'unité centrale 104 (Fig. 13 dont les contenus définissent collectivement l'état de l'unité centrale. Ces registres sont de quatre types (cf Fig. 2) 1 - Registres généraux 2~Registres de base 3 - Registres scientifiques (facultatifs) 4 - Registres divers F - REGISTRES GENERAUX Les registres généraux (GR) 201 s#ont utilisés pour manipuler les nombres binaires en virgule fixe et les chaines de bits. Il existe typiquement seize registres généraux de 32 bits dans l'unité centrale 104, désignés respectivement GRO à GR15. Les registres généraux GR8 à GR15 sont également utilisables comme registres d'index. Lorsqu'ils sont utilisés comme registres d'index, ils sont appelés ici registres XO à X7.L'indexation est effectuée en utilisant le nombre entier en complément à deux de 32 bits contenu dans un registre G ~REGISTRES DE BASE Les registres de base ont le même format 202-203 que les compteurs d'instructions IC et les registres de pile. Les registres de base sont utilisés au cours du calcul d'adresse pour définir une partie de mémoire. Il y a typiquement huit registres de base de 32 bits respectivement désignés BRO à BR7. H - REGISTRES SCIENTIFIQUES Les registres scientifiques (SR) facultatifs sont utilisés pour le calcul sur des nombres binaires en virgule flottante. Il y a typiquement quatre registres scientifiques de 8 octets qui sont désignés SRO-SR3. Les registres scientifiques ont le format 204-205 représenté sur la figure 2. 1 ~ REGISTRES DIVERS Il y a cinq autres registres - le compteur d'instructions qui a le format 202-203 - le registre d'état qui a le format 207; - le registre de pile (appelé registre T-); - le registre d'adresse limite (BAR) qui a le format 206; et - le registre de masque de contrôle du matériel qui a le format 208. Le compteur d'instructions (IC) est un registre de 32 bits qui contient l'adresse de l'instruction en cours d'exécution. Le registre d'état (STR) 207 est un registre de 8 bits qui enregistre des faits concernant la procédure en cours diexécution, par exemple si un dépassement de capacité inférieur a été provoque par 'opération la plus récente. Le registre de pile, appelé également registre T, est un registre de 32 bits qui contient un pointeur désignant le sommet d'une pile associée à la procédure en cours d'activité. Les piles, qui seront décrites ci-après, fournissent un espace de travail et un mécanisme pour sauvegarder les variables locales et préserver l'entrée de la procédure et llinformation de retour Le registre d'adresse limite (BAR) 206 est un registre de 28 bits qui spécifie la plus faible adresse absolue de la mémoire qui est accessible au logiciel. Ce registre est chargé lors de l'ini- tialisation du système et peut seulement être lu par le logiciel. Le registre de masque de contrôle du matériel 208 est un registre de 9 bits qui enregistre des informations sur l'état de la machine. J - FORMATS D'INSTRUCTIONS Il y a approximativement 200 instructions, bien qutun nombre supérieur ou inférieur puisse être utilisé. Chaque instruction a l'une de quatre longueurs différentes mais elle est toujours constituée par un nombre pair d'octets. Les instructions sont stockées dans des emplacements de mémoire consécutifs. L'adresse de l'octet d'extrême gauche est un multiple de 2 et est l'adresse de l'instruction. Les huit bits les plus significatifs (et dans certains cas les bits 8-11 ou 12-15) d'une instruction représentent le code opératoire, tandis que les bits restants représentent un ou plusieurs facteurs. Un facteur peut être un pointeur de registre, un pointeur de déplacement, une syllabe-adresse (adresse logique) une valeur littérale, une valeur littérale immédiate. Le type et le nombre des facteurs sont déterminés par le format d'instruction. 111 - ORGANISATEUR DU SYSTEME A - ETAPE DE TRAVAIL ET TACHE Le travail qui doit être exécuté par le système d'ordinateur est défini extérieurement par une série d'étapes de travail, par l'intermédiaire d'un langage de commande de travail. Une étape de travail est une unité de travail à laquelle des ressources du matériel sont attribuées. Typiquement, une étape de travail est constituée de plusieurs taches. Une tache est la plus petite unité d'un travail défini par l'utilisateur qui est constituée par un courant d'instructions exécutées sans para lèl isme B - PROCESSUS Les concepts visibles à l'utilisateur de tache et d'étape de travail sont respectivement représentés dans le matériel par un processus et un groupe de processus. Un processus est défini comme étant une séquence ordonnée diinstructions qui peut être exécutée de façon asynchrone par l'unité centrale et les moyens matériels nécessaires à leur exécution (c'est-à-dire que plusieurs processus peuvent être actifs et partager les ressources mais seul un processus est effectivement en cours d'exécution à un instant donné quelconque. Un groupe de processus est un ensemble associé de processus nécessaires pour llexécution d'une étape de travail. C - BLOC DE COMMANDE DE PROCESSUS ET BASE DU SYSTE ME Du fait que les processus peuvent abandonner la commande de l'unité centrale en divers points au cours de leur exécution, une zone de stockage de la mémoire principale est mise à la disposition d'un processus pour sauvegarder llétat de l'unité centrale. Cette information d'état est utilisée pour préconditionner l'unité centrale avant qu'un processus reprenne la commande de l'unité centrale. La zone de stockage attribuée à un processus est appelée un bloc de commande de processus (PCB) 400 (Fig.4). Les données contenues dans un bloc de commande de processus comportent les adresses des zones de mémoire (espaces d'adresses) attribuées au processus, le contenu de tous les registres pertinents et llétat du processus. Ainsi, un bloc PCB sert la zone de stockage temporaire des informations necnssaires pour mettre en route ou relancer un processus sans perte d'informations. Chaque bloc PCB est acces- sible par le matériel et peut être adressé par le système d'exploitation au moyen d'un ensemble de tables matériel microprogrammes établies au cours de l'initialisation du système et modifiées au cours du fonctionnement du système (Fig. 5). Il existe une zone absolue de la mémoire principale qui est appelée la base du système 302 (Fig. 5 et Fig. 6). Cette zone est établie par la microprogrammerie et est accessible par l'intermédiaire du registre d'adresse limite (BAR) 501 qui peut être lu mais non modifié. La base du système 502 contient un certain nombre d'attributs du système parmi lesquels un nom logique (J, P) pour le processus en cours d'exécution. Un autre attribut de la base du système est un pointeur désignant une structure de données définie par le matériel appelée table J 503. Cette table contient une entrée pour chacune des étapes de travail qui se trouvent dans le système. Chaque entrée de la table J désigne une table P correspondante qui est également une structure de données définie par le matériel.Cette table définit un groupe de processus et contient une entrée pour chaque processus du groupe de processus. Chaque entrée de table P désigne un bloc PCB 400. Sur la figure 5 à laquelle on se référera, le pointeur de la table J 505 indexé par le numéro J, par l'intermédiaire de l'unité de calcul 506, donne accès à une entrée de la table J 503. Cette entrée contient un pointeur de table P qui lorsqu'il est indexé par le numéro P par l'intermédiaire de l'unité de calcul 506, donne accès à une entrée de la table P 504. L'entrée de la table P contient un pointeur 507 désignant le bloc PCB du processus en cours d'exécution. Ainsi, le système dièxploitation peut accéder au bloc PCB actif en utilisant le contenu du registre BAR 501 et peut accéder à tout autre bloc PCB dont le nom logique (J, P) lui est donné. D-- SEGMENTATION DE LA MOIRE Dans un cadre de multitraitement, tel que décrit ici, il y a, à tout moment, de nombreux processus contenus dans la mémoire. Ces processus peuvent varier en ce qui concerne leur taille et leurs besoins de mémoire ce qui entraîne des problèmes d'attribution de ta mémoire. Le matériel décrit ici, en coopération avec un système d'exploitation (qui nta pas été représenté ici) résoud ce problème par l#attr#bution dynamique de l'espace de mémoire. Du fait de la matière aléatoire des besoins de mémoire, la mémoire est attribuée en segments de taille variable et l'attribution de la mémoire peut être restructurée au cours du temps de passage machine du processus. Ainsi, il peut être attribué à un processus un certain nombre de segments de mémoire non contig s Ce procédé d'attribution de la mémoire est appelée segmentation. La segmentation présente un problème supplémentaire en ce sens que les adresses en mémoire doivent être modifiées chaque fois qu'une partie ou la totalité d'un processus est translatée. Pour résoudre ce problème, le système décrit ici utilise une technique grâce à laquelle les adresses utilisées par un processus sont des adresses logiques et non les adresses absolues en mémoire principale. Les adresses logiques sont utilisées pour développer les adresses absolues La segmentation permet également a chaque processus d'avoir acc ès à ses propres segments de mémoire ou à des segments connexes au moyen d'un système de descripteurs de segments. En accèdant à un descripteur de segment, un processus peut obtenir l'adresse d'un segment. Les descripteurs de segments sont contenus dans la mémoire principale et sont entretenus par le système d'exploitation. Chaque processus peut avoir accès jusqu'à 2068 segments de mémoire. Normalement, ceci devrait nécessiter un même nombre de descripteurs de segments par processus Cependant, étant donné que les segments peuvent être partagés, le système diexploitation groupe les descripteurs de segments en tables de segments Ce regroupement est basé sur l'accessibilité par un processus (tache), par un groupe de processus (étape de travail) ou une accessibilité globale (ensemble du système) Chaque processus peut avoir jusqu'a 15 tables de segments coopérant avec lui. Cette technique ne néces site qu'un descripteur de segment pour chaque segment qui peut être accédé par un processus par l'intermédiaire d'une table de segments.Ainsi, llespa- ce de mémoire nécessaire pour les descripteurs ae segments est diminué, la mise à jour de la mémoire au cours de la translation est réduite et une certaine protection du programme est fournie. (Le système de protection principale du programme est le système d'anneaux (cf la demande de brevet français n0 73 42706 du 30 Novembre 1973 ayant pour titre "Protection de l'information dans un système de multitraitement de l'information mettant en oeuvre un concept dianneaux pour représenter les différents niveaux de pri vilèges entre processus" au nom de la demanderesse). Un processus doit être capable de déterminer quels sont les segments auxquels il a le droit d'accéder. En conséquence, le système donne au processus deux tableaux de mots de tables de segments (STWA). Ces tableaux contiennent les adresses de toutes les tables de segments accessibles à un processus. Il y a deux tableaux de tables de segments par processus, du fait qu'il existe deux tailles de segments, les grands segments et les petits. Les grands segments ont une taille maximale de 222 octets tandis que les petits segments ont une taille maximale de 216 octets. Tous les segments varient de taille par incrément de 16 octets jusqu'au maximum. Un système peut typique- ment contenir jusqu'à 28 grands segments et 2040 petits segments. Les tableaux de mots de tables de segments STWA peuvent être translatés par le système d'exploitation ; en conséquence, un processus doit connaître ll'adresse absolue de ses tableaux STWA. Le bloc PCB de tout processus contient deux mots qui comportent cette information et qui sont appelés mots d'espaces d'adresses Asw 1 et ASWA 2 sur la figure 4. Chaque mot désigne un tableau de mots de tables de segments STWA. Le système d'exploitation met à jour le contenu des mots ASW chaque fois que les tableaux STWA correspondants sont translatés. L'opération consistant à suivre la chai ne de pointeurs et à décoder le descripteur de segment est une fonction de la microprogrammerie et ainsi, une fois entreprise, ntest pas visible même au système d'exploitation. La segmentation définit plus de 200 millions d'octets d'espaces d'adresses comme étant disponibles pour les processus. Ce-nombre dépasse la capacité de la mémoire principale ; en conséquence, une mémoire auxiliaire (à disques ou à tambour magnétiques) est utilisée en combinaison avec la mémoire principale. Le système d'exploitation crée l'illusion que le système a une mémoire principale beaucoup plus grande que celle qui est réellement disponible. Ce concept est appelé "mémoire virtuelle". A un instant donné quelconque, un segment défini peut être ou ne pas être matériellement dans la mémoire principale. Le contenu diun descripteur de segment indique si le segment correspondant se trouve ou non dans la mémoire principale. Le matériel détecte toute tentative effectuée par un processus d'accéder à un segment qui ne se trouve pas dans la mémoire princi pale et le notifie au système d'exploitation. Le système d'exploitation provoque le chargement, à partir de la mémoire auxiliaire, dans la mémoire principale, du segment désiré. Ensuite; le système d'exploitation place l'adresse en mémoire du segment dans le descripteur de segment qui est le seul endroit où liadresse absolue d'un segment peut être trouvée.Cette opération est invisible au processus et ainsi il ntest pas averti que le segment ne se trouvait pas dans la mémoire principale ou qutil peut avoir été translaté dans la mémoire principale (Pour plus de détails sur la segmentation de la mémoire on se référera à la demande de brevet n0 73 17765 du 16 Mai 1973 ayant pour titre 'Dispositif de développement et de calcul d'adresse dans une mémoire segmentée" au nom de la demanderesse. Le système d'ordinateur décrit ici fournit une protection des données et procédures en empêchant les processus dlinterférer entre eux ou de par tager leurs espaces d'adresses d'une manière non autorisée. Cette protection est réalisée en restreignant l'adressabilité au moyen de la segmentation de la mémoire et par un système d'anneaux. Les tables des segments isolent ltespace d'adresses des divers processus contenus dans le système. Les processus utilisent toujours une adresse segmentée au cours de l'exécution Une adresse segmentée est constituée par un numéro de segment et une adresse relative à llintérieur du segment. Le matériel vérifie que l'adresse utilisée par un processus fait partie de espace d'adresses attribuée au processus. Si l adresse est en dehors de l'espace d'adresses prescrit, une exception se produit. Un processus ne peut pas faire référence à des données contenues à l'intérieur de l'espace d'adresses d'un autre processus du fait que le matériel utilise les tables de segments du processus qui a émis la référence.Ainsi, il n'y a aucune possibilité qu'un processus ou qu'un groupe de processus puisse référencer une entité appartenant à un autre groupe de processus. Généralement, un chevauchement d'espace d'adresses dans le système se produit pour ceux des segments qui sont partagés par tous les processus Ces segments "publics" sont créés par les programmes du système qui effectuent une vérification pour donner une garantie vis à vis des risques de conflits d'adresse. Ainsi, la segmentation protège les programmes d'utiliser teurs les uns vis à vis des autres et protège le système dtexploitation vis à vis des programmes d'utilisateurs. Les segments partagés par plusieurs processus ne sont pas protégés vis à vis des utilisations erronéespar l'un de ces processus. Pour résoudre ce problème, un système d'anneaux est utilisé suivant lequel les segments de procédures et de données sont groupées en une hiérarchie à quatre classes. Les quatre classes anneaux sont numérotées de 0 à 3. Chaque anneau représente un niveau de privilège du système, le niveau 0 (anneau le plus intérieur) étant le plus privilégié et le niveau 3 (anneau le plus extérieur) le moins privilégié. A chaque procédure du système sont associés des numéros d'anneau d'exécution minimal et maximal qui spécifient qui peut appeler la procédure. Une procédure est un sous-programme qui est capable d'appeler d'autres procédures et de leur transmettre des paramètres. Les règles générales du système d'anneaux sont les suivantes 1/ Une procédure dans un anneau intérieur a libre accès aux données dans un anneau extérieur. Inversement, une procédure dans un anneau extérieur ne peut pas avoir accès aux données qui sont dans un anneau intérieur. 2/ Une procédure dans un anneau extérieur peut effectuer un branchement sur une procédure dans un anneau intérieur mais l'inverse n'est pas permis. 3/ A chaque segment contenant des données, sont attribuées deux valeurs d1anneau, une pour la lecture (RD) et une pour l'écriture (WR). Ces valeurs d'anneau spécifient la valeur dtannf48 maximale dans laquelle une soit procédure peut exécuter lorsqu'elle accède cux données/dans le mode décri ture soit dans le mode de lecture. Chaque fois aucune instruction de procédure est exécutée, le numéro d'anneau de la procédure (anneau d'adresse effective EAR) est vérifié par rapport aux numéros d'anneau attribués au segment contenant les données référencées. L'anneau d'adresse effective EAR est le numéro maximal des numéros dianneaux contenus dans les registres de base et les descripteurs de données trouvés sur le trajet d'adressage. L'accès aux données est accordé ou refusé sur la base d'une comparaison des numéros d'anneau. Par exemple, si une table du système existe dans un segment ayant une valeur d'anneau de lecture maximale de 3 et une valeur d'anneau d'écriture maximale de 1, une procédure d'utilisateur exécutant dans Iianneau 3 peut lire la table mais ne peut pas la mettre à jour. Par construction, les anneaux 0 et 1 sont réservés au système d'exploitation et les anneaux 2 et 3 sont réservés à l'utilisateur. L'anneau 0 contient ceux des segments qui sont critiques par le fonctionnement diensemble du système. L'anneau 1 contient la masse des segments du système dont la défaillance ne serait pas catastrophique et permettrait un rétablissement. L'utilisateur peut utiliser l'anneau 2 pour les programmes mis au point et l'anneau 3 pour les programmes en cours de mise au point. F - APPELS DE PROCEDURE L'appel de procédure est une fonction importante dans le système décrit ici. Les appels de procédure sont utilisés pour passer d'une procédure à une autre, pour permettre aux procédures d'utilisateur diuti-liser les ser vices du système drexpioitation et pour permettre de réaliser une structure modulaire à l'intérieur du système d'exploitation Un appel de procédure est effectué par des instructions et une entité reconnue par le matériel appelée pile (Fig. 7A). Une pile est un mécanisme qui accepte, met en mémoire et permet l'extraction de données sur la base-dernier-entré-premier-sorti. Les piles résident dans des segments spéciaux appelés segments de pile. Un segment de un pile est constitué par/certain nombre de parties contigües appelées éléments de pile 702(Fig. 7A et 7B qui sont attribuées dynamiquement à chaque procé dure. Le premier élément de pile est chargé au sommet du segment et les éléments suivants sont chargés après lui. Le dernier élément de pile chargé est considéré comme le sommet de la pile. Le registre T 702 repère le sommet de la pile pour le processus en cours diactivité. Un registre T virtuel existe dans le bloc PCB de tous les autres procéssus contenus dans le systè me. Un élément de pile 70t, représenté sur la figure 7B, est composé de trois zones : une zone de travail 702 servant au stockage des variables, une zone de mémorisation 703 servant à sauvegarder le contenu des registres et une zone de communication 704 servant à la transmission des paramètres entre les procédures. Avant un appel de procédure, l'utilisateur doit spéci fier ceux des registres qu'il désire sauvegarder et il doit charger dans la zone de communication les paramètres à transmettre à la procédure appelée. Lorsqu'un appel est effectué, le matériel sauvegarde le contenu du compteur d'instructions 1C et des registres de base spécifiés pour faciliter un retour à partir de la procédure appelée. Chaque appel de procédure crée un élément de pile à llintérieur d'un segment de pile 701 et les appels imbriqués suivants créent des éléments de pile supplémentaires. Chaque sortie à partir de l'une de ces procédures appelées provoque la suppression d'un élément de pile . Ainsi, un historique des appels est conservé qui facilite un retour ordonné. Pour assurer une protection entre les procédures exécutant dans les anneaux différents, différents segments de pile sont utilisés Il y a un segment de pile correspondant à chaque anneau de protection, par processus. Un bloc PCB contient trois mots de base de pile qui désignent le début du segment de pile pour les anneaux 0, 1 et 2 associés au processus. Le segment de pile d'anneau 3 ne peut jamais être entré à partir d'un appel de 1 Iintérieu r; en conséquence, son adresse de départ de pile n'est pas requise dans le bloc PCB. IV - GESTION ET SYNCHRONISATION DES PROCESSUS Le système décrit ici assure des opérations en - ,ultitraitement qui# sont commandées par un système d'exploitation utilisant une combinaison de logiciel (ou software), matériel iou hardware) et microprogrammerie (pu firmware). Le logiciel crée et supprime les processus à I 'intérieur du système tandis que le matériel et la microprogrammerie assurent la transmission en multiplex des processus à l'unité centrale. En addition, une combinaison de logiciel, matériel et microprogrammerie assure la synchronisation entre processus. Les processus sont normalement, mais pas toujours, mis en route et arrêtés au commencement et à la fin d'opérations E/S, au cours du-traitement de travaux connexes et, à d'autres moments, à des fins considérées nécessaires par le système d'exploitation. En conséquence, un système de communication est nécessaire pour mettre en route et arrêter efficacement des processus associés et transmettre les informations entre des processus. Le système ae matériel de l'invention comporte des strurtures de données apoelés sémaphores pour établir une voie de communication entre les processus. A - ETAT DU PROCESSUS Un processus peut être dans l'un de quatre états possibles à tout moment : en cours, prêt, en attente ou suspendu. Le matériel reconnait ces quatre états de processus possibles et exécute diverses procédures de micr o programmêrie pour réaliser la distribution des processus, les changements d'état et pour entretenir les structures de données sur la base d'un état du processus. Le bloc PCB contient une zone d'état qui définit l'état actuel de son processus associé. Un processus est à l'état en cours lorsqu'il a la commande de l'unité centrale. Cet état implique que soit fourni à l'unité centrale un espace diadr esses (tables de segments) et une adresse de départ. L'unité centrale exécute alors les instructions contenues dans les segments de procédures du processus. Le mot de table J du nom du processus (adresse logique) du bloc PCB pour le processus en cours d'exécution est contenu dans le mot de processus en cours (PRW) à l'adresse BAR + 56 de la base du système (Fig. 6). L'état prêt est équivalent à l'état en cours, à cette exception près que le processus n'a pas la commande de l'unité centrale (CPU) du fait qu'il n'a pas été connu par l'unité centrale. Un processus à l'état prêt est en concurrence pour l'accès à l'unité centrale avec les autres processus prêts et avec le processus en cours. Un processus est dans llétat d'attente lorsquiil ne peut se poursuivre jusqulà ce qu'un évènement spécifique se produise, tel que la transmission d'un message par un sémaphore. Un processus en attente n'est pas en concurrence pour l laccès à l lunité centrale mais il peut être en concurrence avec diautres processus en attente de l'évènement requis. Un processus suspendu est un processus qui a été arrêté pour un certain temps par le logiciel et peut être repris ultérieurement. La décision d'arrêter et de reprendre le processus est extérieur au processus. Ainsi, un processus suspendu n'est pas actif et ne peut pas en conséquence recevoir la notification de la réalisation diun évènement et ne peut pas utiliser J'unité centrale. Un p rocessus est suspendu dans les conditions ci-après (1) par l'exécution d'une instruction de 'fin" (par suite du fait qu'il a achevé toutes ses fonctions ); (2) par l'exécution d'une instruction de "suspension" par le système d'exploitation (3) par la réalisation d'une condition d'exception par laquelle la commande est transférée au système d'exploitation. B - COMMUTATION DES PROCESSUS Les processus passent d'un état à un autre, soit volontairement par l'action du processus au cours de son exécution, soit involontairement par l'action d'autres processus. Une microprogrammerie de unité centrale appelée le Distributeur ou Dispatcher commande le mouvement des processus entre leurs états. Le distributeur utilise une série de fils d'attente (qui seront décrites ultérieurement) pour manipuler les processus qui sont dans les états prêts ou en attente. Les processus suspendus sont commandés par le logiciel. Sur les figures 8 et 9 auxquelles on se référera, on voit aucun processus en attente est représenté par un bloc PCB et une entrée de file attente spéciale appelée une liaison de processus. La figure 9 représente une vue éclatée du contenu du segment GO 802 et contient les liaisons de processus 803a - 803b et 803c - 803d des processus actifs et des liaisons du processus libres 805a - 805c de processus suspendus. Chaque liaison de processus spécifie le nom (J, P) du processus, la priorité du processus, et contient un pointeur désignant la liaison de processus suivante dans la file. Il y a divers types de files d'attente, telles que la file d'attente des processus en attente 803a - 803b et la file d'attente des processus prêts 803c - 803 g. Un dispositif du matériel similaire à la table J, appelé table G (Figs. 8 et 9) contient des pointeurs désignant tous les segments généraux (connus par l'ensemble des systèmes) 802 à 802n. Le premier élément GO de la table G désigne le segment 802 qui contient les files d'attente du distributeur. Un pointeur de table G 801 se trouve dans la base du système 502 (Fig. 5). De même, dans la base du système se trouve une entrée appelée mot de file d'attente interne du processeur (Mot IP;W) qui identifie le sommet 803 de la file d'attente des processus prêts 803c-803g dans le segment GO 802. Ainsi, le distributeur peut examiner tous les processus prêts en consultant la file attente des processus prêts 803c-803g. Lorsque le processus en cours d'exécution change d'état, le distributeur enlève la liaison du processus à la tête de la file diattente des processus prêts et utilise son nom J, P pour accéder à son bloc PCB. Le processus défini par le bloc PCB devient alors le nouveau processus en cours. Etant donné que plusieurs processus peuvent être en attente du même évènement, une file d'attente de processus en attente 803a - 803b existe pour chaque évènement. Les processus en attente sont également couplés par l'intermédiaire de liaisons de processus 805 qui résident dans le segment GO. Un pointeur désignant le sommet d'une file d'attente de processus en attente existe dans un sémaphore 903 (qui sera décrit ultérieurement). Il existe un certain nombre d'évènements pour lesquels un processus peut être en attente, en conséquence, il y a un certain nombre de files attente de processus en attente, a' chacune desquelles est associé un sémaphore 903, 904. Le nombre des processus prêts ou e.-i attente varie de façon dynamique. Ainsi le nombre des liaisons de processus nécessaires pour les files d'attente des processus prêts et en attente varie également. Ce fait introduit un problème de gestion de mémoire pour le distributeur. Le problème est résolu par une autre file d'attente appelée file d'attente des liaisons de processus libres 805a - 805c. Cette file d'attente lie entre elles toutes les liaisons de processus contenues dans le segment GO qui ne sont pas utilisées par les files d'attente des processus prêts ou en attente et peuvent être utilisées pour allonger une file d'attente particulière du processus prêt ou en attente. Un pointeur 901 désignant le sommet 902 de la file d'attente des liaisons de processus libres 805 réside au voisinage du début du segment GO 802. C - SYNCHRONISATION DES PROCESSUS La synchronisation des processus est nécessaire pour coordonner les activités de deux processus travaillant sur la même tache. La synchronisation est obtenue en utilisant les sémaphores 903-904 qui sont des structures de données résidant dans l'espace d'adresse des processus en communication. Un sémaphore est utilisé pour signaler la réalisation d'évènement et pour traiter des files d'attente de messages. Un évènement, dans ce contexte, est un fait observé par un processus qui peut intéresser un autre processus. Cet évènement peut être par exemple l'achèvement diune opération asynchrone ou la disponibilité d'une ressource. Un processus utilise deux opérations de sémaphore pour signaler la réalisation d'un évènement. Ureopération transmet un signal à un sémaphore, l'autre recueille un signal provenant diun sémaphore (l'opération d'émission est fréquemment appelée opération - V; l'opération de réception est appelée une opération - P). L'opération diémission permet à un processusde transmettre des données ou un signal indiquant que des données sont prêts Le sémaphore met le signal en mémoire jusqu'à ce qu'un autre processus soit prêt à le recueillir. Ainsi, le processus émetteur peut librement se poursuivre puisqu'il a transmis les données. L'opération de réception examine un sémaphore spécifié et recueille le signal.Si un signal est présent, le processus récepteur continue son exécution. Cependant, stil nly a pas de signal au sémaphore, le processus récepteur entre dans l'état d'attente, Le sémaphore sert alors de pointeur désignant le sommet diune file d'attente de processus en attente. Le processus reste dans ltétat d'attente dans la file drat- tente du sémap hore jusqu'à ce qu'un autre processus transmette un signal à ce sémaphore particulier. Ainsi, un sémaphore peut conserver un signal jusqu'à ce aucun processus le recueille ou un sémaphore peut retenir un processus jusqu'à ce qu'un signal lui soit transmis. Des messages peuvent également être transmis de processus à processus. Un message a la même qualité de présence ou d'absence qu'un signal plus une information supplémentaire. Une partie de l'information est fournie par le matériel et une partie est fournie par la procédure du processus qui transmet le message. Un message porte le nom de processus du processus émetteur. Ainsi, de nombreux processus peuvent transmettre des informations par l'intermédiaire d'un unique sémaphore, les informations étant marquées au nom de llémetteur. Un sémaphore à messages peut avoir une file d'attente de message s en attente d'être recueillis par des processus. De même que pour les sémaphores de signaux, les besoins en espace de mémoire slaccroissent et diminuent présentant ainsi un problème de gestion de mémoire. Dans ce cas également, le problème est résolu au moyen d'une file d'attente des liaisons de messages libres Ces liaisons résident dans un emplacement connu dans un segment qui peut être facilement trouvé lorsqu'il est nécessaire pour fournir ou absorber des liaisons de messages. Du fait que les sémaphores et les files d'attente établies sur ceux-ci sont partagés par différents processus, l'ensemble de la structure des sémaphores est protégée. Ceci est réalisé par des conventions du matériel et du logiciel qui limitent 'accès à tout segment contenant des sémaphores. Ainsi, les sémaphores doivent se trouver dans des segments de descripteurs de sémaphores, dont certains peuvent être des segments G (si les communications du système sont nécessaires). Cependant, tous les segments G (sauf le segment GO) sont des segments de descripteurs de sémaphores. Chaque descripteur de sémaphore contient un pointeur désignant un sémaphore. Les adresses de sémaphores sont développées par l'intermédiaire du descripteur de sémaphore ce qui fournit ainsi une protection supplémentai~ re au sémaphore.Un segment de sémaphore peut être adressé logiquement en utilisant un numéro de segment et un déplacement relatif à l'intérieur du segment ou directement en utilisant les numéros G, D. STRUCTURES DU BLOC DE COMMANDE DE PROCESSUS Sur la figure 4 à laquelle on se référera, on a représenté la disposition du bloc de commande de processus (PCB). Le bloc de commande de processus 400 est une zone de stockage dans la mémoire principale mise à la disposition d'un processus pour sauvegarder l'état de l'unité centrale. Lla- dressage d'un bloc PCB est effectué comme décrit ci-dessus en se référant à la figure 5. Le pointeur de bloc PCB 507 (Fig. 5) désigne le bloc de commande de processus PCB à la position d'octet zéro de la figure 4.On notera que lorsqu'on progresse vers le bas à partir de l'emplacement O, les emplacements de mémoire s'accroissent 4 octets par 4 octets tandis que lorsqulon progresse vers le haut à partir de ilemplacement 0 du PCB, ils s'accroissent 8 octets par 8 octets. Les emplacements de mémoire, dans le sens de la progression de haut en bas, sont considérés comme positifs à partir de 0, (à l'intérieur du PCB) tandis que les emplacements de mémoire situés au-dessus de 0 sont considérés comme progressant dans le sens négatif.Certains emplacements situés au-dessus de zéro sont facultatifs et peuvent être ou non inclus dans le bloc de commande de processus (PCB) ; de même les emplacements 148 à 176 sont également facultatifs. (On notera que les chiffres placés à côté des emplacements de mémoire spécifient le déplacément en octets à partir de l'emplacement de référence 0 du bloc de commande de processus PCB et ne doivent pas être confondus avec les chiffres de référence couramment utilisés pour identifier des éléments dans un dessin de brevet). En progressant positivement vers le bas, à partir de l'octet 0 jusqu'à l'octet 16 non compris, il y a, stockés en mémoire quatre mots principaux du processus PMW0 à PMW3, chaque mot principal de processus PMW ayant une longueur de quatre octets.Le mot principal de processus PMWO occupe les octets 0 à 3 et est composé de quatre parties un octet de fonction, un octet de priorité, un octet d'état et un octet de décor étendu qui sont représentés sur les figures 10a à 10d auxquelles on se référera. On a représenté en 10a, les détails du mot principal de processus PMWO, des détails supplémentaires de l'octet de fonction : 1001 étant représentés sur la figure lob. Sur la figure lOb, le premier bit 1005 est le bit de mode de comptage servant à indiquer si des fonctions de comptage de temps sont ou non remplies pour le processus. Lorsque le bit de mode de comptage 1005 est mis à la valeur binaire 0, aucune fonction de comptage n'est remplie pour le processus, tandis que lorsque le bit de mode de comptage est mis au : binaire, le comptage du temps est exécuté, Le bit de mode scientifique 1006, lorsqu'il est mis à zéro, indique que la sauvegarde des registres scientifiques de la machine n'est pas effectuée et que la zone de mémorisation des registres scientifiques située aux octets 148 à 176 sur la figure 4 n'existe pas dans le bloc de commande de processus PCB.Lorsque le bit de mode scientifique 1006 est mis au 1 binaire, l'option scientifique facultative existe et est utilisée dans le processus et la zone de mémorisation des registres scientifiques est utilisée pour sauvegarder le contenu des registres scientifiques lorsque cela est nécessaire. Le bit de mode d'essai a nouveau 1007 indique lorsqulil est à 1 aucun nouvel essai de l'instruction est automatiquement effectué et lorsqu'vil est à 0 que ce nouvel essai n'est pas effectué. Les détails de l'octet de priorité 1002 sont représentés sur la figure vioc. Sur la figure 10c, les quatre premiers bits 1008 de l'octet de priorité sont utilisés pour établi le niveau de priorité du processus correspondant à ce bloc de commande de processus donné PCB. A chaque processus est attribué llun des 16 niveaux de priorité qui sont utilisés pour ordonner les processus concurrents, c'est-à-dire : (a) pour choisir le processus qui doit être passé en machine parmi les processus prêts, (b) pour mettre les processus dans les files d'attente. Les priorités diminuent de 0 à 15 et, pour un niveau donné de priorité, la règle FIFO (premier-entré-premier-sorti) est appliquée.Le bit 4 est le bit d'alarme, le bit 5 n'a pas d'état fonctionnel et les bits 6 et 7 forment le numéro dialarme d'anneau. Sur la figure 10d à laquelle on se référera, les détails de l'octet d'état 1003 ont été représentés. Un octet d'état est utilisé pour fournir des informations concernant le processus correspondant au bloc de commande de processus PCB 400. Le bit d'activité 1010 est mis à l'état binaire 2 lorsque le processus est ren#du actif. Le bit de suspension 1011 est mis à l'état binaire 1 lorsque le processus est suspendu.Le champ de sous-état 1012 est un champ de 2 bits et il définit les sous états ci-après du processus : (a) lorsque il est mis à l'état binaire 00, le processus est inactif; (b) lorsqu'il est mis à ltétat binaire 01, le processus est en attente dans la file d'attente des pro cessus prêts (Q/PR/RDY) ; (c) lorsqu'il est mis à J'état 10, le processus est en attente sur un sémaphore dans une file d'attente de sémaphores (Q/PR/S,; (d) lorsqulil est mis à I tlétat binaire 11, le processus est en cours d'exécution par le processeur.Le champ de mi-opération MOI 1013 est mis à l'état binai re 1 lorsqutune interruption se produit et est traitée au cours de ltexécution d'une instruction, ciest-àvdire avant l'achèvement du processus. Le bit de mode de décor étendu EXTD 1014 est mis à l'état 1 lorsque le processus fonc tionne dans un mode de décor étendu qui peit être un mode d'emuiation de ta machine. Les bits 1015 et 1016 sont mis à O.Le quatrième octet du mot princi-# pal de processus PMW0 contient le numéro de décor étendu DEXT et est utilisé lorsque le système est dans un mode diémulation, Le mot principal de processus PMW1 est stocké dans les octets 4 à 7 du bloc de commande de processus PCB. Les détails du mot PMW1 sont représentés sur la figure 10e. L'octet d'état 1016 est le premier octet du mot PMW1 et met en mémoire le contenu du registre d'état. L'octet multiprocesseur MP 1018 est significatif d'une architecture à processeurs multiples ; autrement, ce champ est égal à zéro. Les second et quatrième octets de mot principal de processus PMW1 sont respectivement les champs MBZ 1017 et 1019 qui doivent être zéro, pour le fonctionnement normal. Le mot principal de processus PMW2 occupe les octets 8 à 11 du bloc de commande de processus et est représenté en plus de détails sur la figure 10f. Sur la figure 10f, le champ comprenant les bits 4 à 31 contient le nom local SEG, SRA 1021 du sémaphore auquel le bloc PCB est couplé lorsque le processus est soit à l'état d'attente, soit à l'état suspendu. Le champ de classe et de type d'exception 1023 contient la classe et le type de ltexcep- tion du genre interruption qui provoque l'entt ze du processus dans l'état suspendu après une exception. Le champ 1022 des bits 4 à 15 est sans utilité lorsque le processus est dans un état différent de ceux mentionnés ci-dessus. Le mot principal de processus PMW3 occupe les octets 12 à 15 du bloc PCB 400 et désigne une table d'extension de décor. Sur la figure 10g, à laquelle on se référera, les détails du mot PMW3 ont été représentés ; le champ DETSZ (taille de la table de décor étendu) 1024 définit le nombre dien- trées de la table et si ce champ est égal à 0, aucune extension de décor niest permise au processus. Le champ DETA (adresse absolue de la table de décor étendu) 1025 est l'adresse absolue de la table de décor étendu en unités de 16 octets et n'est significatif que si le champ DETSZ n'est pas nul. La table de décor étendu est formée par les entrées de table DETSZ. Chaque entrée a une longueur d'un octet.La DEXTème entrée de la table définit la capacité du processus à fonctionner dans le mode de décor étendu DEXT. Lorsque la DEXTème octet est à 0 le numéro de décor étendu DEXT n'est pas accordé tandis que si la DEXTème octet est 1 le numéro de décor étendu est accordé. Des valeurs du numéro DEXT autres que 0 et 1 sont incorrectes (cf figure 10a numéro DEXT 1004). Les octets 16 à 23 du bloc PCB 400 contiennent deux mots d'espace d'adresses, respectivement appelés ASWO et ASW1, et chaque mot ASW contient un pointeur désignant un tableau de mots de tables de segments. Les mots ASWO et AsW1 ont tous deux le même format représenté sur la figure 10h. La taille du tableau de mots de tables de segments est définie par le nombre de mots de tables de segments contenu dans un tableau et comprend typiquement six mots pour le mot ASWO et huit pour le mot ASWI, Le champ STWSZ 1026 indique la taille du tableau de mots de tables de segments, Le champ de tableau de mots de tables de segments STWA 1027 contient l'adresse absolue STWA du tableau en unités de 16 octets.. c'est-à-dire que adresse absolue du tableau est égal à 16 fois la valeur STWA en octets. Les octets 24 à 27--du bloc PCB contiennent un mot d'exception EXW représenté sur la figure 10i en plus de détail, Le mot d'exception contient un pointeur (SEG, SRA) 1029 désignant une table de classes d'exceptions qui définit i faction qui doit être entreprise à la suite dtune exception du processus selon sa classe telle qu'elle est mise en mémoire dans le mot principal de processus PMW2 (cf figure 1 ouf). Le champ MBZ 1028 du mot EXW doit être zéro. Le mot de pile SKW qui occupe les octets 28 à 31 du bloc PCB contient la valeur du sommet du registre T de la pile du processus lorsque le processus n'est pas en cours d'exécution et est représenté avec plus de dé~ tails sur la figure 10J. Sur la figure 10j, les bits 0 et 1 définissent le champ TAG 1030. Le champ TAG 1030 indique le type de descripteur par son contenu et doit être zéro pour le mot de pile SKW.Les bits 2 et 3 du mot SKW contiennent le champ RING 1031 qui contient le numéro d'anneau associé à liadres- se segmentée de la pile aux fins de protection et dans ce cas, ils doivent être zéro, Les bits 4 à 31 contiennent le numéro de segment SEG et l'adresse relative dans le segment SRA et constituent un champ qui identifie le segment décrit dans une table de segments et l'adresse relative SRA à l'intérieur du segment. Le mot de pile SKW est mis à jour chaque fois que le processus quitte l'état 'en cours" ou courant, Il est utilisé pour restaurer le contenu du registre T chaque fois que le processus passe en exécution. Dans ce dernier cas, les champs TAG 1030 et RING 1031 sont vérifiés pour contrôler qu'ils sont des zéros ; autrement, une exception de bloc PCB incorrecte se produit. Les octets 32 à 35 du bloc PCB 400 contiennent le mot contenu dans le compteur d'instruction ICW qui peut être appelé également ICC Sur la figure 10k à laquelle on se référera, on a représenté ies détails du mot du compteur d'instruction ICW dans lequel le champ TAG 1033 doit contenir la valeur binaire 00 (c'est-à-dire des valeurs autres que zéro sont incorrectes dans le compteur d#instructions), Le champ d'anneau courant RING COURANT 1034 qui occupe les positions de bits 2 et 3 définit le numéro courant du processus qui doit être utilisé par la détermination des droits d'accès à la mémoire principale, Les bits 4 à 31 contiennent le numéro de segment et liadres- se relative dans le segment (SEG, SRA) 1035 qui définissent l'adresse de l'instruction suivante à exécuter. Le champ MBZ des octets 36 à 39 doit êtr zéro, (On notera que le champ MBZ désigne toujours un champ qui doit être à zéro). Le mot MBZ est vérifié chaque fois que le bloc PCB est appelé à partir du nom J, P, siil n'est pas égal à zéro, une exception de "PCB incor rectil se produit. Les mots de base de pile SBW0 à SBW2 occupent les octets 40 à 51 du bloc de commande de processus 400. Ces mots ont tous le même format qui est représenté en plus de détails sur la figure 101. Ils sont utilisés au cours d'opérations de pile et chaque fois qu'ils sont utilisés, leur champ TAG 1036 et leur champ RING 1037 doivent être zéro ; autrement, une exception de PCB incorrect se produit. Les bits 4 à 31 contiennent l'adresse segmentée (SEG, SRA) 1038 des premiers octets des segments de pile respectifs des anneaux 0, 1 et 2 Les octets 52 à 83 du bloc de commande des processus 400 sont un espace réservé à la zone de mémorisation des registres de base (8 mots). Les octets 84 à 147 constituent une zone de mémorisation qui est utilisée pour sauvegarder les valeurs de tous les registres généraux (16 mots).Les octets 148 176 constituent une zone de mémorisation qui est utilisée pour sauvegarder les registres scientifiques (8 mots) ; cette zone étant optionnelle. Cinq mots doubles sont prévus dans le bloc PCB 400 au-dessus de Itadresse zéro du bloc PCB, aux fins de comptage du temps lorsque le bit de mode de comptage du mot PMWO est mis à l'état 1. Ces mots sont situés de ladresse PCB-8 à I liadresse PCB -40. Chaque mot contient un temps ou un intervalle de temps exprimé en microsecondes dans ses 52 premiers bits, les bits 52 à 63 étant remplis de zéro.Le mot double du temps d'exécution partiel RTO (les 8 premi ers octets négatifs au-dessus de zéro dans le bloc PCB) con tient la durée qui sera effectivement dépensée par le processeur pour le comp te du processus avant aucune exception de "temps expiré se produise. Le mot RT0 est mis à jour de la façon suivante : chaque fois que le processus sort de l'état en cours, la valeur du compteur de temps du processus est stockée dans le mot RT0. Chaque fois que le processeur entre dans llétat en cours, la valeur du compteur de temps du processus est chargée à partir du mot RTO. Le mot double de comptage d'exécution totale RUA occupant les octets -9 à -16 est un compteur de temps qui spécifie la durée totale du temps du processeur pendant lequel un processus a été dans l'état en cours. Le temps compté est le temps effectivement dépensé par le processeur exclusive ment pour le compte du processus. Le mot RUA est mis à jour de la manière suivante chaque fois que le processus sort de l'état en cours, la valeur du compteur de temps du processus PT est lue. La différence entre le contenu du mot RT0 et celui du compteur PT est ajoutée au mot RUA (la valeur PT est ajoutée, consécutivement, au mot RT0). On notera que le temps pendant lequel le processus est suspendu niest pas calculé. Les mots RT0 et RUA sont mis à jour même si le bit de mode de comptage est mis à 0.Cependant les mots CET, RTA et WTA (qui seront décrits ci-après) ne sont prévus dans le bloc de commande de processus que si le bit de mode de comptage du mot principal -de processus PMW0 est mis à llétat 1. Ils ne sont mis à jour que dans ce cas. Le mot de comptage de temps d'attente (WTA), aux octets -17 à -24, est un compteur de temps réel qui spécifie la durée de temps réel totale pen dant laquelle le processus a été à l'état d'attente. Le mot WTA est mis à jour de la manière suivante ; chaque fois que le processus sort de l'état attente, la valeur de l'horloge donnant l'heure du jour (non représentée) TOD est lue et la valeur de l'heure du jour TOD, moins la valeur du mot CET, est ajoutée au mot WTA. Le mot de comptage du temps prêt RTA, qui occupe les octets -25 à -32 est un mot double qui est un compteur de temps réel qui spécifie la durée totale du temps réel pendant laquelle le processus a été à l'état prêt. Le mot RTA est mis à jour de la manière suivante : chaque fois que le processus quitte l'état prêt, la valeur de l'heure du jour TOD est lue et le contenu TOD moins le contenu du mot CET est ajouté au mot RTA. Le mot double de l'heure de début courante CET qui occupe les octets -33 à -40 contient l'heure du jour à laquelle le processus est entré dans ilun des états ci-après . pr8t,prêt, en attente, en cours, suspendu. STRUCTURES DE LA BASE DU SYSTEME Sur la figure 6 à laquelle on se référera, la configuration de la base du système 600 a été représentée. La base du système résidant dans la# mémoire principale, est engendrée par la microprogrammerie et est accessible par l'intermédiaire du registre d'adresse limite (BAR) qui peut être lu mais non modifié . Le registre d'adresse limite BAR est situé au-dessous d'une zone de la mémoire principale réservée au matériel et sépare cette zone de la mémoire réservée au matériel de la base du système 600. Sur la figure 6 à laquelle on se référera maintenant, la base du système 600 contient un certain nombre d'attributs du système parmi lesquels un numéro d'étape de travail et un numéro de groupe de processus (J, P) pour le processus en cour s d'exécution.A partir du nom logique J, P du Jrocessus, l'adresse absolue du bloc de commande de processus PCB correspondant est obtenue. La taille et l'adresse de la table J sont définies par le contenu du mot de table J (JTW). Ce mot est situé à l'adresse définie par le registre BAR. Le format du mot JTW est représenté sur la figure lia. La taille JTSZ 1101 de la table J 1204 (Fig. 12) définit le nombre d'entrées (ou éléments) de la table J 1204 qui peut contenir jusqu'à 256 entrées. Le champ JTSZ 1101 est un nombre entier positif de 8 bits ou une exception "hors de la table J'l se produit si le numéro J est supérieur à la valeur JTSZ. L'adresse absolue de table J 1204 est obtenue en multipliant par 16 le pointeur de table J 1102. La table J 1204 contient des entrées de table J dont le format est représenté de façon plus détaillée sur la figure 1 lob. Chaque entrée de table J définit l'adresse absolue d'une table P 1205 qui est obtenue en multipliant par 16 le pointeur de table P 1104. La taille (PTSZ) 1103 d'une table P définit le nombre d'entrées de la table P. Le champ PTSZ est un nombre positif de 8 bits qui peut typiquement être compris entre 0 et 255 pour indiquer le nombre d'entrées de la table P. Une exception "hors de table P" se produit si le numéro P est supérieur à PTSZ. Chaque entrée de la table P 1205 définit l'adresse absolue d'un bloc de commande de processus (PCB) 1206 qui est obtenue en multipliant par 16 le poin teur de bloc PCB Un indicateur de présence P 1105 indique l'absence d'un bloc PCB/lorsqu'il est à l'état binaire 0 et indique la présence du bloc PCB lorsqu'il est mis à l'état binaire 1. (Lorsque l'indicateur de présence P 1105 est trouvé à l'état 0, une exception d'entrée de table P vacante se produit). Les bits 1 à 7 de l'indicateur de table P (Fig. 11) 1106 doivent être O (MBZ), autrement Il se produit une exception d'entrée de table P incorrecte. A l'adresse BAR + 4 de la base du système 600 se trouve l'octet d e taille diun mot de table G (GTW) représenté en plus de détails sur la figure lid. La taille et l'adresse d'une table de segments G 1212 (Fig. 12) sont définies par le contenu d'un mot de table G (GTW), La taille (GTSZ) 1108 de la table G 1212 définit le nombre d'entrées de la table G qui peut typiquement s'élever jusqu'à 256 entrées. Le champ GTSZ est un nombre entier positif de^8 bits. Une exception "hors de la table G" se produit si le numéro G est supérieur à la taille GTSZ. L'adresse absolue d'une table G 1212 est obtenue en multi pliant par 16 le pointeur de table G 1109. Le format de llentrée de table de segments G a ùne longueur de deux mots (8 octets) et est appelé descripteur de segment G. Le format de descripteur de segment G est représenté en détail sur les figures lle et i If. Tous les descripteurs de segments G sont directs et en conséquence le bit "indirect" 1,1111, doit être 0; autrement il se pro duit une exception de descripteur de segment incorrect.L'indicateur de pré sence 1110 est un champ diun bit qui, lorsqu'il est mis à l'état binaire 1, in dique qu'un segment est défini dans la mémoire principale pour le numéro de segment auquel le descripteur correspond, tandis que s'il est remis à zéro, aucun segment ntest défini et une référence au descripteur de segment provo que une exception de segment manquant. Le bit de disponibilité A 1112 est un champ d'un bit qui indique Si le segment est ou non disponible ; il n'est vérifié que si ce segment est défini (c'est-à-dire si P est égale à 1 binaire), autre ment, il est ignoré.Le champ indicateur d'utilisation U 1113 indique si le seg ment a ou non été accédé, Si le bit U est mis à la valeur binaire 0, le segment n'a pas été accédé tandis que si le bit U est mis à la valeur binaire 1, le seg ment a été accédé. Le bit indicateur d'écriture W1114 indique Si une opération d'écriture a été effectuée dans le segment.Si ce bit W est mis à l'état binaire 0, aucune écriture nra été effectuée dans le segment tandis que si le bit W est à ltétat l une opération d'écriture a été effectuée dans le segment. Llindica- teur de commutation GS 1115 d'un descripteur de segment G doit être mis à la valeur binaire Ol : autrement, il se produit une exception de descripteur de segment incorrect. La raison de ce fait est qu'un segment G contient toujours des sémaphores (bien que l'inverse ne soit pas nécessairement vérifié ; c'est à-dire que tous les sém#aphores ne doivent pas se trouver nécessairement dans un segment G) et les instructions sur sémaphores exigent que le code GS soit à la valeur binaire 01. L'adresse absolue de la base d'un segment 1214 est définie dans le descripteur de segment G de la figure île par le champ de base de 24 bits 1116 ; le contenu de ce champ est multiplié par 16 pour obtenir adresse absolue. Le second mot du descripteur de segment G représenté sur la figure 1 lof occupe les positions binaires 32 à 63 dans la table G 1212.Le champ RSU 1117, qui occupe les bits 32 à 39, est réservé pour l'utilisation du logiciel et est généralement ignoré lorsqu'utilisé comme descripteur de segment G, comme il l'est dans le présent cas. Le champ MBZ 1118 doit êtreO; autrement il se produit une exception de segment incorrecte. Etant donné que le champ MBZ 1118 occupe les bits 40 à 51 il détermine la longueur du champ TAILLE 1119 qui est le champ pour un petit segment. En conséquence, tous les segments G doivent être des segments du type petit segment. La taille 1119 du segment est un nombre entier positif de 12 bits définissant le nombre octets du segment et la taille du segment est interprêtée comme un multiple de 16.En conséquence, la taille de segment diun segment G 1214 ne peut dépasser 216 octets (petits segments) On se référera à nouveau à la base du système 600 représentée sur la figure 6. Il y a 9 mots de cellule d'exception du système situés entre les adresses BAR + 8 et BAR + 44. Le format des mots de cellule d'exception du système (EXC) est représenté sur la figure îîg. Etant donné que des sémaphores sont utilisés pour transmettre des messages aux processus consacrés lorsqu'uneexception du système se produit, les pointeurs désignant ces sémaphores sont trouvés dans 9 emplacements de mémoire, chaque emplacement étant appelé une cellule d'exception du système, une par classe d'exception du système. Le champ MBZ 1120 doit être mis à la valeur binaire 0, autrement un contrôle du système se produit.Chaque cellule d'exception contient le nom de système G 1121, D 1122 du sémaphore. La cellule d'exception du canal située à l'adresse BAR + 44 de la base du système 600 a un format qui est similaire à celui de la cellule d#excep tion du système précédemment décrit et contient le nom de système GD d'un sémaphore qui est utilisé pour transmettre des messages à des processus déterminés 1Orsqugureexception de canal se produit. Un mot de file d'attente interne du processeur IPQW est situé à l'adresse commençant à BAR + 48 et les détails de son format sont représentés sur la figure 11h. Le mot IPQW désigne le sommet d'une file d'attente de processus prêts (Q/PR/RDY) telle que celles représentées sur la figure 9 et désignées par les références 905 et 805. La file d'attente des processus prêts (Q/PR/RDY) lie tous les processus qui sont à l'état prêt. Elle est référencée par le champ de tête de file Q/pR/RDY 1124 (Fig. 11h) du mot IPQW qui indique le sommet de la file d'attente des processus prêts. Le champ de tête de file Q/PR/RDY 1124 contient un nombre entier de 16 bits qui est le déplacement par rapport à la base du segment G n0 O, appelé segment GO, du premier octet de la file d'attente Q/PR/RDY.Si ce champ Q/PR/RDY est zéro, la file d'attente des processus prêts est considérée comme étant vide. Le champ MBZ 1123 doit être égal à zéro ; s'il en est autrement un contrôle du système se produit. A I 'adresse BAR + 52 de la base du système 600, on a représenté les positions de stockage pour le comptage de relancesinitial et pour le comptage de relances courant dont le format est représenté en détail sur la figure 11 i. Le champ NFS 1125 est un champ de stockage non fonctionnel et n'est pas utilisé par la base du système. Le champ de comptage de relances initial 11126 et le champ de comptage de relances courant sont utilisés pour déterminer le nombre de fois où une relance d'instruction automatique est exécutée avant qu'une erreur machine soit produite,- pour créer une condition d'exception de défaillance machine. Ils sont chargés avec le même nombre par une instruction de restauration de comptage de relances (non représentée ici). Le mot de processus en cours (RPW) représenté sur la figure 1 îj est mis en mémoire à l'adresse BAR + 56 de la base du système 600 et est utilisé pour garder# en mémoire le nom du processus en cours avec sa priorité dans le cas d'une architecture comportant un processeur unique. Les champs NFS 1128 et 11131, respectivement, sont des champs de mémoire non fonctionnels et peuvent être utilisés à des fins quelconques par des moyens quelconques de système, mais ils ne sont en général pas utilisés par la base du système. Le niveau de priorité d'un processus en cours est stocké dans le champ PRI 1129.Un bit de déroutement asynchrone ou bit d'alarme est mis en mémoire dans le champ AB 1130 tandis qu'un anneau de déroutement asynchrone est mis en mémoire dans le champ ARN 1132. Le nom logique J, P du processus en cours dans le cas dtune architecture à un seul processeur est mis en mémoire dans le champ J, P 1133. Un mot pointeur de table diabsolutisation représenté sur la figure 17k est situé à l'adresse BAR + 60 de la base du système et est utilisé lors du chargement initial du système pour initialiser les adresses absolues dans le programme de chargement initial du système (ISL) en ajoutant le contenu du registre BAR à toutes les adresses absolues du programme ISL Le pointeur de table dlabsolutisation 1135 définit l'emplacement d'une table d'absolutisation (non représentée). La taille de la table diabsolutisation est indiquée par le champ ATSZ 1134. Le mot de numéro de série du processeur représenté sur la figure 111 est un mot de quatre octets situé à l'adresse BAR + 64 et contient le numéro de série du processeur dans le champ de numéro de série du processeur 1136. Un mot de limite supérieure de la mémoire principale représenté sur la figure 11m est situé à l'adresse BAR + 68 et indique dansle champ 1139 la limite supérieure de la mémoire principale en donnant l'adresse absolue du dernier mot disponible dans la mémoire principale: A l'adresse BAR + 72 se trouve un mot, représenté sur la figure 11n pour indiquer le numéro de canal (CN) de l'unité de chargement initial du système ISL (champ 1140) et le numéro de canal (CN) du dispositif matériel (champ 1141). Le type et le sous-type d'un dispositif utilisé dans le système diordinateur sont représentés, dans un mot de type de dispositif matériel (Fig.110), respectivement par les champs 1143 et 1144, le champ RSU 1142 de ce mot étant réservé au logiciel; Ce mot se trouve dans la base du système à l'adres- se BAR + 76. Un mot similaire ayant un format type similaire représenté sur la figure 1 1p contient le type et le sous-type du dispositif utilisé pour le chargement initial. Ce mot se trouve à l'adresse BAR + 80. Lorsqu'on appuie sur le bouton de "reprise" diun ordinateur une opération -V simulée est exécutée sur un sémaphore et l'état "prêt" est entré. Un pointeur indiquant ce sémaphore se trouve à l'adresse BAR + 84 de la base du système 600 et est appelé mot de cellule de relance. Ce mot a le format représenté sur la figure Ilq, Le format est similaire à celui du mot de cellule d'exception du système décrit ci-c+ us et contient le nom de système G, D d'un sémaphore respectivement dans le champ G 1149 et le champ D 1150. Le champ MBZ 1148 doit avoir la valeur 0. Dans le cas où il y a plusieurs processeurs raccordés au système d'ordinateur, un mot est prévu dans la base du système à l'adresse BAR + 88 pour llextension multiprocesseur, les détails de ce mot sont représentés sur la figure loir. EXEMPLE D'UTILiSATIONS DE LA BASE DU SYSTEME ET DU BLOC DE COMMANDE DE PROCESSUS Sur la figure 12 à laquelle on se référera, on a représenté un exemple de la manière suivant laquelle la base du système peut être utilisée en combinaison avec le bloc de commande de processus PCB afin d'adresser et d'accéder à un segment diutilisateur, à un segment du système ou à un segment de file d'attente de processus prêts (Q/PR/RDY). La mémoire principale 1200 comporte une partie 1203 dont l'utilisation est réservée au matériel. Un registre d'adresse limite BAR 1202 sépare la base du système 1215 de la partie de la mémoire 1203 réservée au matériel. Le registre d'adresse limite BAR 1202 est utilisé pour adresser des éléments de la base du système ajoutant le contenu du registre BAR au déplacement, en unités de 4 octets, de l'élément désiré de la base du système.Cette adresse indique alors le premier octet de~llélément désiré de la base du système. Sur la figure 12, le registre BAR 1202 désigne le mot de table J (JTW) Le mot de table J, comme précédemment indiqué, comporte un pointeur qui désigne une table J 1204. En indexant le pointeur avec le numéro J représenté sur la figure 5, une entrée de table J 1216 est obtenue. Dans entrée de table J se trouve un pointeur de table P qui indique l'adresse absolue de la table P 1205. En indexant cette adresse avec le numéro P (cf Fig. 5) dans la table P 1205, l'adresse absolue du bloc de commande de processus 1206 est obtenue. Comme précédemment décrit, il existe dans le bloc de commande de processus PCB 1206, deux mots d'espaces d'adresses ASWO et ASW1.Les bits de gauche du champ de numéro de table des segments STN du registre de base 1201 sont utilisés pour accéder à l'un de ces deux mots diespace d'adresses, dans llexemple représenté le mot ASWZ, qui comporte un pointeur de tableau de mots de tables de segments STWA qui désigne le tableau des mots de tables de segments STWA 1208. En combinaison avec le numéro de table des segments STN du registre de base 1201, l'un des huit mots de table de segments est accédé dans le tableau STWA 1208 qui désigne lune des 8 tables de segments 121 O L'entrée de table de segments STE du registre de base 1201 est alors utilisée pour sélecter l'une des 256 entrées de la table de segments 1210 où se trouve un descripteur de segment.Le descripteur de segment est alors utilisé pour accéder à un segment d'utilisateur 1211. (Pour plus de détails on renverra à la demande de brevet NO 73 17765 du 16. 5.73 ayant pour titre "Dispositif de développement et de calcul adresse dans une mémoire segmentée" au nom de la Demanderesse). Afin d'accéder à un segment du système 1214 qui est utilisé pour stocker les sémaphores, un mot de table G est utilisé dans la base du système 1215. Ltadresse du mot de table G est obtenue en ajoutant le déplacement du mot de table G dans la base du système au registre d'adresse limite BAR 1202 (cf Fig. 6). Le mot de table G, GTW comporte un pointeur de table G qui désigne une table G 1212. En utilisant un numéro G que le système peut obtenir et en indexant la table G à l'aide de ce numéro, un descripteur de segment G est accédé qui est utilisé pour adresser un segment du système 1214. D'une manière similaire, la base du système 1215 est utilisée pour accéder à la file d'attente des processus prêts (Q/PR/RDY) 1213 en recherchant un mot de file d'attente interne du processeur IPQW qui désigne le segment Q/PR/RDY 1213. UNITE DE COMMANDE Sur les figures 13a à 13c auxquelles on se référera on a représenté les détails de l'unité de commande. L'unité de commande, bien que représentée séparée de l'unité centrale (CPU), est en fait une partie de l'unité centrale et est constituée d'une unité de mémoire de commande (CSU) 1301, d'un adaptateur d'interface de la mémoire de commande CIA 1302 et des sous-unités coopérantes, à savoir le chargeur de mémoire de commande CSL 1303 et l'unité de chargement et de contrôle CLU 1304. Liunité de mémoire de commande CSU 1301 reçoit des micro-instructions du chargeur de mémoire de commande CSL 1303 par I'intermédiairede l'unité de chargement et de contrôle CLU 1304 et de l'adaptateur d'interface CIA 1302. Dans les conditions de fonctionnement normales, des microprogrammes sont chargés à partir d'une source externe au cours de lXinitialisa- tion du système et deviennent une fonction de commande permanente de la machine. Cependant, l'unité de mémoire de commande CSU 1301 a la capacité d'être rechargée et initialisée d'une manière qui permet une diversité de modes opérationnels de l'unité centrale CPU 1306.Les modes de fonctionnement suivants de l'unité centrale sont disponibles, sous la commande de l'unité de mémoire de commande CSU 1301 : (a) le mode natif ; (b) le mode d'émulation; (c) le mode natif et d'émulation simultanés ; (d) le mode de diagnostic. Cette capacité est rendue possible du fait que les micro-instructions résidant dans la mémoire de commande CSU sont la source de micro-opérations utilisées pour commander le fonctionnement de toutes les autres unités fonctionnelles de l'unité centrale CPU, telles que l'unité d'émulation 1316, l'unité arithmétique et logique ALU 1317, l'unité de pointage d'instruction 1318 IFU, l'unité de contrôle d'adresse ACU 1319, et l'unité de gestion des données DMU 1321. On a également représenté, comme étant contenus dans l'unité centrale CPU 1306, les registres généraux 1307, les registres de base 1308, les registres scientifiques 1309, le registre T 1310, le registre d'état 1311, le compteur d'instruction IC 1312 et le registre de masque de contrôle du matériel 1313, précédemment décrits. Typiquement, l'unité de mémoire de commande CSU 1301 est une mémoire morte programmable à circuits intégrés bipolaires de 9 K (9216 octets) (PROM) mélangée à une mémoire à accès sélectif à écriture/lecture (RAM). Cette unité CSU a typiquement un cycle de lecture de 150 nanosecondes et un cycle d'écriture de 450 nanosecondes. Chaque emplacement de la mémoire de commande met en mémoire un mot de microinstructions de 84 bits (qui sera décrit plus en détail ci-après), et chaque mot de microinstruction com mande un cycle de Igunite centrale CPU. Lorsque chaque emplace - ment de mémoire de commande de l'unité de mémoire de commande CSU 1301 est lu, son contenu est décodé par des décodeurs de microopérations qui fournissent des signaux de commande de microopérations, chacun de ces signaux provoquant l'exécution d'une opération spécifique (qui sera décrite ultérieurement en détail) à l'intérieur de l'unité centrale CPU. En groupant des positions à l'intérieur de chaque mot de microinstruction (qui sera décrit en détail ultérieurement) des séquences de mémoire de commande sont obtenues qui peuvent exécuter une opération ou instruction spécifique de unité centrale. Lorsque chaque instruction est déclenchée par l'unité centrale, certains bits contenus dans le code opération sont utilisés pour déterminer séquence de départ de la mémoire de commande, Le contrôle de certaines bascules (non représentées) qui sont enclenchées et restaurées par les fonctions de décodage d'instructions permet à la mémoire de commande d'effectuer un branchement sur une séquence plus spécifique lorsque cela est nécessaire. L'adaptateur d'interface de la mémoire de commande CIA 1302 com munique avec ltunité unité de mémoire de commande 1301, unité de gestion des données DMU 1321, l'unité de contrôle d'adresse ACU 1319 et l'unité arithmétique et logique ALU 1317 pour diriger le fonctionnement de la mémoire de commande 1333, représentée sur la figure 13b2. Lladaptateur d'interface CIA 1302 comporte des circuits logiques pour la modification, la vérification, le contrôle dierreur, des adresses de la mémoire de commande et pour la génération d'adresses du matériel. La génération d'adresse du matériel est utilisée, en général, pour le développement de l'adresse de départ des séquences dierreur ou pour la séquence d'initialisation. L'unité de gestion des données DMU 1321 constitue l'interface entre l'unité centrale 1306 et la mémoire principale et/ou la mémoire tampon représentée sur la figure 1. C'est la responsabilité de l'unité de gestion des données de reconnaltre quelle est l'unité qui contient les informations requises par d'autres unités et de permettre le transfert de ces informations aux registres appropriés de l'unité centrale, au temps approprié. L'unité de gestion des données DMU effectue également le masquage au cours des opérations d'écriture partiel le. L'unité de pointage IFU 1318 communique avec l'unité de gestion des données DMU 1321, l'unité de contrôle d'adresse ACU 1319, l'unité arithmétique et logique ALU 1317 et l'unité de mémoire de commande CSU 1301 et elle a la responsabilité de mettre en temps utile des instructions à la disposition de l'unité centrale. L'unité de pointage d'instruction IFU 1318 comporte l'instruction suivante disponible dans ses registres avant lwachè~ vement d'instruction en cours.Pour obtenir cette capacité, I 'unité de poin- tage d'instruction IFU 1318 contient un registre d'instruction de 12 octets (non représenté) qui contient normalement plusieurs instructions, En addition, l'unité IFU 1318, sous la commande de l'unité de mémoire de commande CSU 1301, requiert les informations (instructions) de la mémoire principale avant que l'instruction soit effectivement devenue nécessaire, maintenant ainsi son registre d'instruction de 12 octets constamment à jour. Les instructions sont ainsi préalablement extraites au moyen de cycles mémoire normalement inutilisés. L'unité de pointage dinstruction décode également chaque instruction et informe les autres unités de la longùeur et du format de I tins- truction. L'unité de contrôle d'adresse ACU 1319 communique avec l'unité de pointage d'instruction IFU 1318, l'unité arithmerique et logique ALU 1377, l'unité de gestion des données DMU 1321 et l'unité de mémoire de commande CSU 1301 par l'intermédiaire de l'adaptateur d'interface CIA 1302. L'unité de contrôle d'adresse ACU 1319 est responsable de tous les développements d'adresse dans l'unité centrale. Toutes les opérations de unité de contrôle d'adresse, y compris les transferts à l'unité, à partir de l'unité et à llinté- rieur de l'unité, sont dirigés par les microopérations de l'unité de mémoire de commande et par les circuits logiques de l'unité ACU.Le cycle normal de l'unité de contrôle d'adresse ACU dépend des types d'adresses contenus dans l'instruction plutôt que du type de l'instruction. Selon les types d'adresse, l'unité de contrôle d'adresse ACU peut effectuer différentes opérations pour chaque adresse contenue dans une instruction. L'unité de contrôle d'adresse ACU contient également une mémoire associative 1319a qui, typiquement, met en mémoire l'adresse de base des 8 segments de mémoire les plus récemment utilisés avec leurs numéros de segment; Chaque fois qu'une demande d'accès à la mémoire est effectuée, le numéro de set,1vent est comparé au contenu de la mémoire associative pour déterminer si l'adresse de base du segment a déjà été développée et mise en mémoire.Si liadresse de base est contenue dans la mémoire associative 1319a, cette adresse est utilisée dans le développement de l'adresse absolue et un temps considérable est économisé. Si l'adresse de base n'est pas contenue dans la mémoire associative 1319-a, elle est développée en accédant aux tables de mémoire principale. Cependant, après que l'adresse de base du segment a été développée, elle est stockée dans la mémoire associative avec le numéro de segment, en vue de futures références. L'unité arithméti que et logique ALU 1317 comporte une interface avec l'unité de contrôle d'adresse ACU 1319, l'unité de pointage d'instruction IFU 1318, l'unité de gestion des données DMU 1321 et l'unité de mémoire de commande CSU 1301. L'unité ALU 1317 a pour fonction premiers diexécu- ter les opérations arithmétiques et les manipulations des données requises de l'unité centrale. Les opérations de l'unité arithmétique et logique sont complètement dépendantes de signaux de commande de microopérations provenant de mémoire de commande CSU 1301. Une mémoire de travail et mémoire bloc-notes LSU 1315 (appelée quelquefois également mémoire locale) coopère avec l'unité arithmétique et logique ALU 1317 et la mémoire de commande CSU 1301. Cette mémoire de travail est typiquement constituée par une mémoire transistorisée à 256 emplacements (32 bits par emplacements) et par des circuits logiques de sélection et de lecture/écriture pour cette mémoire. La mémoire bloc-notes 1315 est utilisée pour stocker les informations de commande de l'unité centrale et les informations sur les facilités d'entretien. En outre, la mémoire bloc~ notes 1315 contient des emplacements de travail qui sont principalement utilisés pour la mise en mémoire temporaire des facteurs et des résultats partiels au cours de la manipulation des données.Est également associée à l'unité arithmétique et logique ALU 1317, une mémoire auxiliaire 7317a constituée typiquement de 64 bascules bistables servant à conserver en mémoire des états divers du système d'ordinateur. Unité centrale comporte également une unité de synchronisation t320 qui constitue essentiellement deux systèmes dthorloge en un. Le premier système dlhorloge engendre les impulsions de synchronisation pour Itadaptateur d'interface CIA 1302 et le second système d'horloge engendre les impulsions de synchronisation pour les opérations des unités fonctionnelles à l'intérieur de l'unité centrale. Sur la figure 13c à laquelle on se référera on a représenté le format du mot de mémoire de commande 1325. Le mot de mémoire de commande a typiquement 84 bits et est divisé en six zones ou "champs" principaux. a) type de séquence 1326 (3 bits) b) branchement et/ou microopérations 1327 (23 bits) c) génération et désignation des constantes 1328 (14 bits) d) données vers le bus 1329 (8 bits) e) microopérations 1330 (32 bits) f) contrôle 1331 (4 bits). Le champ E de 3 bits du mot de mémoire de commande 1325 est utilisé comme champ de commande de séquence. il y a typiquement 7 types de séquences différents et 1 type réservé pour le présent système diordinate ur. Comme indiqué dans le bloc 1335 de la figure 13bl, lorsque le champ E est égal à la valeur binaire 0, 1 ou 2, le champ de branchement A, B, C, D et L de la microinstruction 1325 est utilisé pour engendrer l'adresse suivante. Les six premiers bits du registre d'adresse KS 1337 sont utilisés en combinaison avec le champ B, les résultats de test C, les résultats de test D et le champ L pour fournir adresse suivante de la microinstruction suivante qui est alors placée dans le registre d'adresse KS 1337. Lorsque le champ E est mis à la valeur binaire 4 (cf bloc 1335 Fig.13bl), l'adresse suivante sélectée est extraite du registre de retour d'interruption KA 1339. L'adresse conservée dans le registre KA est celle engendrée par la logique de génération de l'adresse suivante lorsqu'une interruption du matériel se produit.Lorsque le champ E est mis à la valeur binaire 5, un branchement est utilisé pour dé- clencher un sous-retour à partir d'un sous programme du microprogramme. Lorsque ce champ est utilisé, le contenu du registre de retour KR 1346 est utilisé en tant qutadresse suivante de la mémoire de commande. Le registre de retour 1346 est chargé par rémission d'une commande de la mémoire de commande qui charge l'adresse présente de la mémoire de commande contenue dans le registre KS 1337, plus 1 de l'incrémenteur 1338 dans le registre KR 1336. Une capacité de sous-programme à imbrication deun niveau supplé mentaire est effectuée par l'intermédiaire du registre de braflec ement de est chargé retour KT 1347.Chaque fois que le registre KR 1346 l'ancien contenu du registre KR est transféré au registre KT 1347 ; chaque fois que le retour du microprogramme est appelé, le contenu du registre KT est transféré au registre KR. Une capacité de sous-programme avec une imbrication à trois niveaux est fournie par le registre KU 1348 et une capacité de sous-programme avec imbrication à quatre niveaux est offerte par le registre de branchement de retour KV 1349. Lorsque le champ E du mot de mémoire de commande est mis à a valeur binaire 6, ie mot suivant de la vateu est à ta binaire 6, le mot suivant de la mémoire de commande qui est adressé l'adresse présente du registre KS 1337 plus 1 ajouté par lincré- menteur 1338.Lorsque le champ E est mis à la valeur binaire 7, la mémoire de commande CSU entre dans le mode de diagnostic et l'adresse suivante est l'adresse présente plus 1. En plus de la commande de séquence de branchement à l'adresse suivante de la mémoire de commande décrite ci-dessus et représentée dans le bloc 1335, il existe une commande de séquence engendrée par le matériel représentée dans le bloc 1336 de la figure 13bl là noter : les blocs 1335 et 1336 sont en pratique des registres matériels qui ont été ainsi représentés pour montrer les différentes formes que les mots de microinstruction peuvent pren dre). Les branchements engendrés par le matériel sont des conditions prioritaires (telles qu'erreurs, initialisations, balayage de la mémoire de commande, etc. . . ) qui annulent le champ E et introduisent une adresse fixe dans le registre d'adresse KS 1337 de la mémoire de commande.Le branchement est effectué en portant une ligne d'interruption (non représentée) à un haut niveau pendant une période d'horloge et en stockant l'adresse qui aurait été engendrée sous la commande du champ E dans le registre de retour d'interruption KA 1339. Une adresse engendrée par le matériel est alors placée dans le registre d'adresse de la mémoire de commande. Certaines interruptions engendrées par le matériel/microprogram merie ont priorité lorsque est mise la bascule (non représentée) de blocage d'interruption qui empêche que des interruptions supplémentaires dans leur classe puissent être exécutées jusqu'à ce que la condition d'interruption en cours ait été satisfaite. Il existe une microopération de la microprogrammerie pour commander la restauration de la bascule de blocage d'interruption pour celles des séquences qui sont sous la commande de la microprogrammerie. Les séquences qui sont sous la commande du matériel engendrent automatiquement une restauration de la bascule de blocage à la fin de la séquence.Les condi tions ci-après énumérées par ordre de priorité, existent dans cette catégorie: a) chargement de la mémoire de commande ; b) balayage de la mémoire de commande ; c) erreur matériel ; dJ erreur logiciel. Les autres conditions du matériel n'enclenchent pas la bascule de blocage d'interruption mais provo quent llexécution d'une action immédiate lorsqulelles sont engendrées. Les conditions suivantes, énumérées par ordre de priorité existent dans cette catégorie a) i initialisation; b) effacement logiciel (Soft clear) c) entrée panneau maintenance d) entrée canal maintenance e) sortie matériel. Un signal d'initialisation amène la mémoire de commande CSU 1301 à se brancher à l'adresse binaire 0, à effacer les erreurs restaurables par le matériel et à exécuter une opération de chargement de la mémoire de com mande suivie de la séquence de balayage de la mémoire de commande sous la commande du matériel Ce signal provoque également ltinitialisation ciudusys- tème. Un signal d'effacement du logiciel amène la mémoire de commande CSU 1301 à se brancher à l'adresse binaire 0, à effacer les erreurs restau rables par le matériel et à restaurer la bascule de blocage d'interruption. Un signal d'entrée du panneau de maintenance amène la mémoire de commande CSU 1301 à se brancher à l'adresse préétablie dans les commutateurs dia- dresse de la mémoire de commande sur le panneau de maintenance (non repré senté). Un signal d'entrée de canal de maintenance amène la mémoire de commande CSU 1301 à se brancher à une adresse engendrée par lXintermé- -diaire du canal de maintenance (non représentée). Adresse chargée provient du bus de maintenance QMB 1344 qui fait partie du canal de maintenance et est justifiée à droite. Un signal de sortie du matériel provoque le branchement de la mémoire de commande CSU à l'adresse binaire 2. Cette séquence est utili sée comme moyen de maintenance. A la fin de la séquence, un retour est dé clenché en émettant un branchement par le champ E, avec le champ E mis à la valeur binaire 4. Un signal de chargement de la mémoire de commande amène la mé moire de commande à se brancher à l'adresse binaire 0. Ce signal ferme également la bascule, non représentée, du cycle de lecture de la mémoire de commande CSU, arrête l'horloge dusystème 1320 et met la mémoire de com mande CSU dans llétat de chargement. Dans llétat de chargement, la mémoire de commande peut être chargée à partir du chargeur de mémoire de commande CSL 1303, du contrôleur dientrée/sortie IOC 1305, de la mémoire principale 102 ou du panneau de maintenance 1355. Lorsqu'elle est chargée à partir du chargeur CSL 1303, un balayage automatique est engendré à la fin du chargement.Lorsqu'elle est chargée à partir d'un autre moyen quelqu'il soit, un balayage peut être commandé soit en engendrant un signal de microopération soit en enclenchant le commutateur de balayage sur le panneau de maintenance. Un signal de balayage de la mémoire de commande provoque le branchement de la mémoire CSU à l'adresse binaire 0. Un balayage de la mémoire de commande est sous la commande du matériel pendant toute la durée de la séquence. Au cours du balayage, l'horloge du système 1320 est arrêtée et en conséquence aucune commande ou test ntest exécuté. A la fin de la séquence de balayage le matériel transfère le contenu du registre de retour d'interruption KA 1339 au registre d'adresse KS 1337, Ithorloge du système est remise en route et la commande est rendue à la microprogrammerie. Un signal d'erreur du matériel provoque le branchement de la mémoire de commande CSU a' l'adresse binaire 4. 9t3ns le mode de traitement normal, une erreur du matériel détectée dans une quelconque unité fonctionnelle de Unité centrale CPU rend active une ligne d'erreur du matériel (non représentée). La séquence de mémoire de commande engendrée teste et vérifie les conditions du système pour déterminer l'action à entreprendre. Dan s le mode de diagnostic, les conditions d'erreur qui peuvent être détectées par le matériel sont visibles aux microdiagnostics. Les microdiagnostics commandent l'action à entreprendre. Un signaldierreur du logiciel d'autre part, provoque le branchement de la mémoire de commande à l'adresse binaire 1. Cette adresse est le départ de la séquence de compte-rendu derreurdu dulogi- ciel qui est sous la commande de microprogrammes. Sur la figure 13c à laquelle on se référera à nouveau, le champ E 1326 est un champ de 3 bits pour le code de branchement, comme précédemment décrit. Le champ de branchement et/ou de microopérations 1327 est composé des champs A, B, C, D et L (représentés également dans le bloc 1335 de la figure 13bl) dans lesquels le champ A représente les six bits de gauche de l'adresse suivante ; le champ B les 4 bits centraux de l'adresse suivante du champ de masque sur on branchement à 64 voies, le champ C est un champ de test de 6 bits pour lluh de 64 tests, le champ D un autre champ de test de 6 bits pour ltun de 64 tests et le champ L est le bit le moins significatif.Le champ K t328 est un champ de 14 bits dont six bits sont destinés au champ de constante, 4 bits sont destinés à un champ de constante ou un champ dBorienta^ttg et 4 bits constituent un champ d'orientation pour une constante. Le champ bidonnées vers bus" 1329 est composé du champ QA ayant 4 bits pour commander les informations transmises à la partie QA du bus QMB 1344 et le champ QB qui comporte 4 bits pour commander les informations transmises à la partie QB du bus QESM 1344. Le champ F 1330 est un champ de 32 bits qui est codé pour engendrer des sous-commandes de microopéra tions. Le champ P 1331 est composé de 4 bits réservés au contrôle. En fonctionnement, les mots de microinstructions sont stockés dans le tableau de la mémoire de commande 1333. Au cours dun cycle de fonc tionnement, la mémoire de commande est adressée par le contenu du registre d'adresse KS 1337. Ceci provoque la lecture du contenu de l'emplacement spécifié par itadresse dans le groupe de bascules de lecture 1357. Des par ties du contenu du mot qui se trouve dans les bascules de lecture sont répar ties ou transférées à des registres de stockage à l'intérieur de chacune des unités fonctionnelles de l'unité centrale. Chaque unité fonctionnelle comporte des circuits logiques de décodage pour engendrer les sous-commandes re quises spécifiées par le mot de mémoire de commande sous la commande de l'horloge du système.En genéral, le décodage est effectué à l'intérieur de chacune des unités fonctionnelles de ltunité centrale plutôt que d'être effectué centralement afin de réduire au minimum le temps de décodage et de réduire le nombre des câbles qui seraient normalement nécessaires pour transmettre les signaux de commande Si le décodage était effectué centralement. En outre, le décodage est effectué à l'intérieur de chaque unité pour éviter les problè mes de synchronisation provenant des différences des retards de transmission des câbles.Au surplus, en décodant les sous-commandes à l'intérieur de chaque unité, ceux des signaux qui sont représentatifs de certaines conditions existant à l'intérieur de l'unité fonctionnelle et nécessaires pour la génération de certains signaux de sous-commande n'ont pas été retournés à adaptateur CIA 1302. Un décodeur typique 1359 a été représenté sur la figure 13b2 comme recevant divers champs de mots de microinstructions et engendrant de s signaux de microopération A, B, C D Q, R Un décodeur de microopéra- tions typiques 1359 reçoit des commandes d'un mot de microinstruction. Le champ du mot de microinstruction est décodé et porte à un haut niveau llune diunepluralité de lignes s, t, u y, z. Une matrice est formée en ayant une impédance de ligne de commande prédéterminée couplée aux lignes s - z aux points -# - È7 . , w Typiquement, alors, lorsque le champ d'une mi croinstruction est décodée, l'une des lignes s - z passe à un haut niveau. Etant donné que les cercles désignés sur la matrice par les lettres grecques à w représentent le couplage inductif entre les deux séries de lignes, tout signal électrique se propageant sur un fil horizontal est couplé de façon à se propager sur un fil vertical, A à R, lorsqu'un couplage inductif (cercle) est indiqué. Chaque ligne verticale A - R peut alors être couplée pour former Alune des entrées d'une porte ET respective 1360 à 1365. D'autres signaux d'entrée peuvent être appliqués aux portes ET 1360 à 1365 et notamment un signal de synchronisation TS provenant de l'unité de synchronisation centrale. En conséquence, lorsque chaque signal TS passe à un haut niveau, celle des portes dont toutes les autres entrées sont à un haut niveau sont rendues passantes et fournissent des signaux de microinstruction à des unités fonctionnelles prédéterminées de l'unité centrale. Par exemple, si une commande 1341 des bascules de lecture 1357 est décodée et que la ligne horizontale s est portée à un haut niveau, les lignes de commande verticales A, B, C et Q sont portées à un haut niveau et les portes ET 1360, 1361, 1362 et 1364 sont rendues actives, lorsque le signal de synchronisation TS est appliqué à ces portes, séquentiellement.En conséquence, la combinaison suivant laquelle les lignes de commande verticales sont couplées à la ligne de commande horizontale à différents points représentés par les lettres grecques dX à W, représente une matrice de commutation permanente pour fournir des signaux de microopérations à l'unité centrale CPU afin de commander les unités fonctionnelles à l'intérieur de l'unité centrale par des microinstructions fournies par la mémoire de commande 1333. Ainsi une microprogrammerie permanente présentant la caractéristique de pouvoir être modifiée peut être incorporée dans la machine de cette invention simplement en spécifiant la séquence de microopérations qui est requise en tant que !'une des capacités du système d'ordinateur. Dans les conditions normales, les données sont écrites dans le tableau de mémoire de commande 1333 par l'intermédiaire du regist re des données d'écriture de l'unité centrale appelé également registre local YO 1343. Une bascule de commande (non représentée) définit si l'écriture doit être effectuée dans la moitié supérieure ou dans la moitié inférieure du tableau de mémoire, les données provenant de lgunité de chargement et de contrôle CLU 1304 arrivent dans l'adaptateur d'interface et dans l'unité de mémoire de commande CIA/CSU par l'intermédiaire du bus de maintenance QMB 1344 et sont mises en mémoire intermédiaire dans le registre local de stockage YO 1343 avant d'être écrites dans la mémoire de commande 1333. Le registre de stockage local YO 1343 est utilisé en temps partagé à la foi-s comme registre d'écriture et comme registre de lecture local. Le multiplexeur 1345 peut être commandé soit par le panneau de maintenance 1355 soit par des microdiagnostics et établit un trajet de lecture en sortie à partir des registres qui y sont connectés.Un registre de comparaison KP 1350 est prévu pour une utilisation non fonctionnelle et est utilisé essentiellement aux fins de la maintenance et est utilisé en combinaison avec la logique égalité KS = KL 1352 et la logique de décodage 1351. MICROPROGRAMMERIE DU DISTRIBUTEUR POUR LA COMMANDE DES PROCESSUS Le distributeur est'une unité microprogrammerie/matériel dont l'objet principal est de gérer les diverses files d'attente des processus et d'effectuer l'aiguillage entre les processus et il comporte les fonctions de mise à jour des files d'attente de processus, des blocs de commande de processus (PCB), du mot de processus en cours dans la base du système et des registres diun nouveau processus. Il délivre également un message à un processus qui est effectivement en attente d'un tel message sur un sémaphore (après une opération V, une opération Simulée pour le contrôleur d'entrée/ sortie IOC ou pour le manipulateur d'exceptions).Il met également un message dans la file d'attente diun sémaphore après une opération P qui libère une liaison de message lorsqu'un processus est en attente sur le sémaphore de liaisons libres pour délivrer son message. L'unité distributeur appelle en outre la microprogrammerie dwins- tructions, du mode natif après "rappel'l dtun processus exécuté dans le mode natif ou après un "conflit" si le processus courant reste en cours et est exécuté dans le mode natif. Elle appelle également la microprogrammerie d'extension de décor pour a) un appel temporaire au cours du "retrait"l d'un processus exécuté dans le décor étendu;; b) un appel temporaire au cours du llrappel dtun processus exécuté dans ce décor étendu c) un appel définitif à la fin du "rappel" diun processus exécuté dans ce décor étendu d) un appel définitif après un "conflit" si le processus courant reste en cours et est exécuté dans ce décor étendu, En outre, le distributeur place le système dans la boucle de marche à vide, lorsqu'il n'y a pas de processus en cours. Il existe plusieurs manières d'entrer ou de sortir du distributeur qui sont les suivantes: 1) La procédure dtinitisalisation SIP fournit une entrée à sa dernière étape (cf demande de brevet n0 73 42704 du 30 Novembre 1973 ayant pour titre "Mécanisme de comptage hardware/firmware pour un système informatique au nom de la demanderesse. 2) L'instruction de départ et de suspension assure une entrée dans le distributeur. L'instruction "Départ" démarre un processus, l'instruction "suspension" termine un processus (cf demande de brevet n0 73 42694 du 30 Novembre 1973 ayant pour titre IF Système de gestion de processus pour un processeur central " au nom de la demanderesse. 3) Les opérations P et V assurent une entrée dans le distributeur. Llopération P capte un message provenant d'un sémaphore et s'il nly a pas de message, le processus se met alors à llétat d'attente (cf demande de brevet n0 73 42691 du 30 Novembre 1973 ayant pour titre "Synchronisation de processus par utilisation de sémaphores" au nom de la demanderesse). En résumé, en conséquence, le distributeur est le principal méca- nisme qui gère les processus, et en conséquence les blocs de commande de processus PCB, en décidant quel est le processus qui doit être passé en machine puis en exécutant l'action appropriée, telle que le retrait du processus en cours d'exécution (à savoir : écrire dans le bloc PCB toutes les informations relatives au processus en cours d'exécution contenues dans les registres-du matériel, la mémoire de travail, etc. )eut le rappel du nouveau processus (écrire, en les extrayant du bloc PCB, dans les divers registres du- matériel, la mémoire de travail etc..., toutes les informations nécessaires pour le passage machine du nouveau processus). Les fonctions remplies par le distributeur sont représentées sur les organigrammes des figures 14a à 14i. Par exemple, le bloc 1402 de la figure 14al représente la fonction remplie par le distributeur suivant laquelle un mot de microprogramme est fourni par l'unité de mémoire de commande 1301, et, à la suite de son décodage par le décodeur 1359, ce mot commande aux parties intéressées de l'unité centrale par l'intermédiaire drune série appropriée de signaux de microopérations 1360, 1361, etc.. d'extraire le mot IPQW (mot de file d'attente interne du processeur) de le transférer à la mémoire de travail ou mémoire bloc-notes 1315. Simultanément, le distributeur extrait, à l'étape 1404 le descripteur de segment GO (cf Fig. 12) de la table G des descripteurs de segments désignée par le mot de table G GTW dans la base du système.Les bits 16-31 du mot IPQW contiennent un nombre entier-positif de 16 bits qui est le déplacement à partir de la base du segment G numéro 0, appelé segment GO, de la tete (premier octet) de la file d'attente des processus prêts (Q/PR/RDY). Si les bits 16-31 du mot IPQW sont à 0, comme déterminé à l'étape 1403, la filé d'attente des processus prêts est considéréecomme vide. Si la file d'attente des processus prêts est vide, cela indique qu'il nly a pas de processus actuellement en attente dans la file Q/PR/RDY et la file d'attente des processus prêts est vide. La question suivante qui doit être décidée (étape de décision 1405) est de déterminer s'il y a ou non un processus en cours d'exécution dans la machine, en déterminant si l'indicateur LIBRE est mis. L'indicateur LIBRE est une bascule située dans la mémoire auxiliaire 1317a, il est mis lorsqu'il nly a pas de processus courant CJP en cours d'exécution dans le processeur. Si l'indicateur LIBRE est mis (c'est-à-dire qu'il nly a pas de processus en cours d'exécution), et étant donné qu'il a été précédemment déterminé qu'il nly a pas de processus, dans la file diatt~nte des processus prêt à utiliser le processeur, la machine se met alors à l'état de repos ou à vide (à l'étape 1406).Cependant, slil y a un processus actuellement en cours d'exécution dans la machine, mais qu'il n'y a pas de processus en attente diutiliser la machine, le processus en cours diexécution accède à son instruction suivante, à l'étape 1407. En retournant maintenant à étape de décision 1403 de llorganigram~ me de la figure 14a1, si la zone de pointeur du mot IPQW (à savoir les bits 16 à 31) contient un nombre entier positif, la tête de la file d'attente des processus prêts, désignée par le mot IPQW dans le segment GO, est extraite et chargée dans la mémoire de travail (mémoire bloc-notes) (N.B.: pour éviter des répétitions et pour plus de clarté de la description, les fonctions intermédiaires exécutées par le distributeur, en combinaison avec l'unité de mémoire de commande et l'unité centrale ont été omises ci-après ;cependant, il est bien entendu que de telles fonctions intermédiaires, telles que celles précédemment décrites à titre d'exemple, sont typiquement présentes). A ce point, il a été déterminé qulil existe un processus en attente dans la file attente des processus prêts. Avant qu'une autre action puisse être entreprise, il est nécessaire de déterminer s'il y a un processus actuellement en cours d'exécution dans le processeur central.Ceci est déterminé à l'étape de décision 1410, de llorganigramme et s'il nty a pas de processus en cours d'exécution, le processus en tête de la file attente des processus prêts est mis en exécution, à l'étape 1412. Cependant, s'il y a un processus en cours d'exécution dans le processeur central, le distributeur doit déterminer celui des deux qui a priorité : le processus en cours drexécutionou celui en tête de la file d'attente des processus prêts. En conséquence, l'octet de priorité du processus courant (CJP) qui est situé dans le pot de processus en cours de la base du système 600, ou dans le mot principal de processus 0 PMWO du bloc PCB 400 est extrait à l'étape 1413.Une décision est alors prise à l'étape 1414 pour déterminer Si le processus en cours d'exécution CJP a une priorité inférieure à celle du nouveau processus NJP en attente en tête de la file d'attente des processus prêts (étape de décision 1414). Si le processus en cours CJP na pas une priorité inférieure à celle du nouveau processus NJP, le processus CJP conserve la commande du processeur central et l'indicateur de conflit est remis à 0 à l'étape 141 Sa. L'indicateur de conflit est toujours mis à zéro sauf lorsqu'un ou plusieurs nouveaux processus ont été placés dans la file d'attente des processus prêts depuis le début de la dernière instruction ainsi exécutée pour le compte du processus en cours CJP créanpossibilité d'un conflit, dans ces conditions l'indicateur de conflit est mis à la valeur binaire 1. Avant que le processus courant CJP ait I routorisation de se poursuivre et d'exécuter de nouvelles instructions, cependant, un contrôle est effectué pour déterminer si le processus courant CJP est exécuté dans un mode de décor étendu, à l'étape 1415 Si le processus CJP est exécuté dans le mode de décor étendu, l'instruction suivante est exécutée dans le mode d'émulation (c'est-à-dire dans le mode de décor étendu (étape 1419a) et si le processus n'est pas exécuté dans le mode de décor étendu, l'instruction suivante est exécutée dans le mode natif (étape 1419b).Revenant à nouveau à l'étape de décision 1414, si le nouveau processus NJP en tête de la file attente des processus prêts a une priorité supérieure à celle du processus courant CJP (c'est-à-dire que son numéro de priorité est inférieur au numéro de priorité du processus CJP), le processus actuellement en cours CJP est retiré de la machine et le nouveau processus NJP est rappelé dans la machine.En consé- quence, un sous-programme de priorité de la microprogrammerie PRIQ, à l'étape 1418, commande la mise en file attente du processus courant CJP dans la file d'attente des processus prêts, suivant ordre dernier-entrépremier-sorti et le numéro de priorité en réalisant tout d'abord le retrait du processus courant CJP sous la direction du sous-programme de retrait RLLO de la microprogrammerie (étape 1419), Le sous-programme de retrait RLLO dirige l'écriture des informations du processus CJP qui sont stockées dans les registres généraux, les registres de base, les registres scientifiques, le registre T, le registre d'état et le compteur d'instruction, en retour dans les zones de mémorisation appropriées du bloc de commande de processus PCB et il commande la mise à jour du mot de comptage d'exécution totale RUA. En outre, le numéro DEXT du mot principal de processus O PMWO du bloc PCB 400 est mis à jour, à l'étape 1420. Le nouveau processus NJP est alors prêt a être appelé. Le registre d'adresse limite BAR est extrait à l'étape 1422 et le mot de processus en cours RPW est extrait à l'adresse BAR + 56, à l'étape 1423. Le nom du nouveau processus NJP est ensuite écrit dans le mot de processus en cours RPW et étant donné que le nom du nouveau processus NJP était écrit dans la liaison de processus PL de la file diattente Q/PR/RDY, le nom contenu dans la liaison de processus PL est en conséquence placé maintenant dans le mot RPW, à étape 1424. En conséquence, le nouveau processus NJP extrait de la file d'attente des processus prêts devient maintenant le processus en cours CJP et a le droit de commander le processeur central et, en conséquence, il n'est plus en attente dans la file d'attente Q/PR/RDY et doit être retiré de la file par le retrait de son nom hors de la liaison de processus PL de la file Q/PR/RDY, à l'étape 1425.Lorsque ceci est effectué, la file d'attente des processus prêts Q/PR/RDY est mise à jour par le sous-programme de la microprogrammerie UQLK, à étape 1425a. En conséquence, le numéro JP du processus qui a juste été sorti de la machine est placé, à l'étape 1426, dans une liaison de processus dans la file d'attente B/PR/RDY étant donné qulil nia plus la commande de la machine et doit attendre pour obtenir. A ce point, la transformation consistant à donner la commande du processeur cen tral .u nouveau processus et à placer Iiancien processus dans une file d'at tente des processsus prêts est achevée, et du fait qu'il y a un processus (le nouveau processus en cours CJP) qui a la commande du processeur central, l'indicateur LIBRE est mis à zéro à l'étape 1427. Si par contre, aucun processus CJP n'avait la commande du processeur central l'inducteur libre serait mis à l'état 1. A ce point, l'attribution du processeur est terminée et un nouveau processus a acquis la commande du processeur central tandis que bien processus a été placé dans une file d'attente des processus prêts. Cependant, le nouveau processus n'est pas encore prêt à être exécuté car le matériel de l'unité centrale 1306 (Fig. 13al), tel que les registres généraux 1307, les registres de base 1308, les registres scientifiques 1309, le registre T 1310, le registre d'état 1311 et le compteur d'instruction 1312 doivent recevoir les informations de commande du bloc de commande de processus du nouveau processus. En conséquence, le sous-programme de microprogrammerie extrait tout d'abord le mot PMW3 du bloc PCB (Fig. 4) et le charge dans la mémoire de travail ou mémoire bloc-notes 1315(étape 1432), puis il extrait le mot PMWO (étape 1431). Le champ MBZ du mot PMWO est contrôlé, à l'étape 1433, et s'il n'est pas égal à 0, une exception de bloc PCB incorrect se produit. Cependant, si le champ MBZ du mot PMWO est 0, le mot PMW1 est extrait, à étape 1434. Egalement, le champ MBZ du mot PMW1 est contrôlé pour déterminer s'il a ou non la valeur binaire 0. Si ce champ n'est pas un O binaire, il se produit une exception de bloc PCB incorrect, tandis que s'il est égal à O le distributeur passe à l'étape C. En conséquence, le mot d'espace d'adresses ASWO est extrait de l'emplacement approprié du bloc PCB (étape 1436) et le champ de taille du mot de table des segments STWSZ est contrôlé, à l'étape 1437, pour déter- miner s'il est ou non supérieur à 7. Sxil est supérieur à 7, il en résulte une exception de bloc PCB incorrect, s'il est inférieur ou égal à 7, le mot ASWT est extrait, à l'étape 1438, et son champ STWSZ est contrôlé à l'étape 1439 pour déterminer stil est ou non inférieur ou égal à 8. Si ce champ est supé- rieur à 8, une exception de bloc PCB incorrect se produit.Cependant, si le champ STWSZ est égal ou inférieur à 8, le mot d'exception EXW est extrait, à l'étape 1440, et son champ MBZ est testé à étape 1441 pour déterminer s'il est ou non égal à zéro ; si son champ MBZ n'est pas égal à 0, une exception de bloc PCB incorrect se produit ; tandis que stii est égal à O, le mot de pile SKW est extrait, à l'étape 1442, et son champ MBZ est testé, à l'étape 1443, pour déterminer s'il est ou non égal à zéro.Si le champ MBZ n'est pas égal à 0, il se produit une exception de bloc PCB incorrect, tandis que s'il est égal à 0, le mot de compteur d'instruction ICW est extrait du bloc PCB et placé dans le compteur d'instruction 1C (à l'étape t444) et son champ TAG est testé pour déterminer s'il est ou non égal à 0, à l'étape 1445. Si le champ TAG du mot ICW niest pas égal à 0, il se produit une exception de bloc PCB incorrect.Cependant, si le champ TAG est égal à 0, le mot MBZ est extrait à l'étape 1446 et son champ MBZ (bits 0-31r est testé pour déterminer s'il est ou non égal à 0, à l'étape 1447. S'il n'est pas égal à 0, il en résulte une exception de bloc PCB incorrect, tandis que s'il est égal à 0, les mots de base de pile 0, 1 et 2, SBWO, 1 et 2 sont extraits, à l'étape 1448. Le contenu des 8 registres de base contenus dans la zone de mémorisation des registres de base du bloc PCB est alors extrait, à étape 1449, et mis en mémoire dans les registres de base 1308 de la machine.Ensuite, le contenu des 16 registres généraux de la zone de mémorisation des registres généraux du bloc PCB est extrait, à l'étape 1450, et stocké dans les registres généraux 1307 de la machine. Avant d'extraire le contenu des registres scientifiques cependant, un contrôle de Octet de fonction du mot principal de processus O PMWO est effectué pour déterminer si le mode scientifique est ou non utilisé, à l'étape 1451. Si le mode scientifique est utilisé, le contenu des registres scientifiques de la zone de mémorisation des registres scientifiques du bloc PCB est extrait et stocké, à l'étape 1452. La microprogrammerie entreprend alors l'exécution diune analyse de l'octet de fonction du mot PMWO pour déterminer si le mode de comptage est utilisé (étape 1453).Si le mode de comptage est utilisé (c'est-à-dire si le bit de comptage de l'octet de fonction est mis à la valeur binaire 1), les mots de comptage existent dans le bloc PCB et le mot de comptage de temps prêt RTA est mis à jour. Ensuite, la microprogrammerie entreprend de déterminer si le numéro DEXT est ou non mis à O (étape 1454).S'il n'est pas à 0, il indique que la machine peut être dans le mode émulé (c'est-à-dire que la capacité d'extension de décor est utilisée) et, en conséquence, le numéro DEXT du mot PMWO est vérifié, à l'étape 1455, pour déterminer s'il est supérieur ou inférieur au champ DETSZ du mot PMW3 et s'il est supérieur, une exception de bloc PCB incorrect se produit : si le numéro DEXT est inférieur au champ DETSZ mais niest pas égal à 0, la machine fonctionne dans un mode émulé autorisé et l'on passe à l'étape F. Retournant à l'étape de décision 1454, si le champ DEXT a la valeur binaire 0, le mode natif est exécuté par la machine et la machine extrait les mots de pile STW, à l'étape 1457. Le mot de temps d'exécution partiel RTO du bloc PCB est extrait à l'étape 1458 et le compteur de temps du processus est chargé avec la limite de temps que le processus CJP peut passer à Illétat en cours A ce point, soit (a) un nouveau processus NJP a été rappelé pour prendre la commande de unité centrale alors qu'il y avait un ancien processus CJP dans la machine et le nouveau processus avait une priorité supérieure à celle de l'ancien processus soit (b) il nly avait pas de processus CJP ayant la commande de l'unité centrale et la tête de la file diattente des processus prêts a été appelée.En résumé, dans la condition (a) le processus CJP a été retiré du mot de processus en cours RPW et placé dans une liaison de processus PL dans la file d'attente Q/PR/RDY et le nouveau processus NJP, qui se trouvait dans une liaison de processus PL dans la file d'attente Q/PR/RDY a été placé dans le mot RPW intervertissant ainsi les positions des deux processus, donnant la commande au nouveau processus NJP qui devient alors le processus CJP et retirant la commande à l'ancien processus, Ensuite, le bloc PCB du processus NJP a été accédé et les informations requises pour le passage en machine du processus NJP, maintenant le processus CJP ont été placés dans la mémoire bloc-notes ou dans le tableau des registres de l'unité centrale CPU. S'il n'y avait aucun processus CJP ayant la commande de l'unité centrale (condition b), la tête de la file d'attente des processus prêts a été appelée, le processus NJP est devenu le processus CJP du fait que le distributeur a pris le processus NJP de la liaison de processus PL à la tête de la file d'attente des processus prêts et Ira placé dans le mot RPW. Du fait de exécution de cette opération, une liaison de processus PL a été laissée vide dans la file Q/PR/RDY et il est nécessaire de la retirer de la file. En conséquence, et en commençant maintenant à étape de décision 1461 la microprogrammerie détermine s'il y avait ou non un processus CJP qui avait la commande de l'unité centrale et, dans l'affirmative, une liaison de processus libre (FPLS) a été accédée et mise dans la file d'attente et le processus CJP y a été écrit.Cependant, s'il nry avait pas de processus CJP ayant la commande de l'unité centrale, l'octet d'état du mot PMWO du nouveau processus est mis à jour, à étape 1460, et, à nouveau, une vérification est effectuée à l'étape 1463 pour déterminer s'il y avait ou non un processus CJP dans la machine. S'il nty avait pas de processus CJP ayant la commande du processeur,la liaison de processus du processus NJP (qui était dans la file d'attente Q/PR/RDY et qui a maintenant la commande de la machine) est retirée de la file Q/PR/RDY, à l'étape 1466, et devient un sémaphore de liaison libre FLSP et est alors mise dans la file d'attente des liaisons de processus libres (805 sur la Fig. 9) et fait alors partie de la file d'attente des liaisons de processus libres à l'étape 1466a. Le contenu du registre d'adresse limite BAR est alors extrait, à l'étape 1464, et la mot de processus en cours RPW du processus NJP (maintenant le processus CJP) situé à I 'adresse BAR + 56 de la base du système est mis à jour en plaçant l'identification du processus NJP dans le mot RPW, à l'étape 1465. L'indicateur libre est mis à 0, dans le cas où il n'y avait pas de processus CJP à l'étape 1468.Ensuite, l'indicateur de conflit (c'est-à-dire une bascule de la mémoire auxiliaire 1317a utilisée pour indiquer un conflit éventuel de priorité entre le processus en cours CJP et un processus placé dans la file attente des processus prêts) est mis à 0, à l'étape 1467, et lXassociateur de segments (mémoire associative AS 132 de la figure 1) qui est une mémoire adressable est vidée à l'étape 1471, puis le mode de processus est entré à l'étape 1470. (un mode de processus indique que les exceptions sont traitées par le processus qui est en exécution dans le processeur et non par le système d'exploitation). La microprogrammerie poursuit alors à l'étape CAB 1480 et le bit de déroutement asynchrone AS est contrôné, à l'étape 1481, pour déterminer s'il est ou non mis à la valeur 1.Si le bit AS est mis à la valeur binaire 1 un contrôle est effectué, à l'étape 1482 pour déterminer si le numéro d'anneau du processus PRN est supérieur ou égal au numéro d'anneau asynchrone ARN. (Les champs As et ARN sont situés dans l'octet de priorité du bloc PCB de chaque processus et sont significatifs lorsque le processus est dans Irétat en cours. Les champs AS et ARN sont obtenus par le mot RPW qui se trouve à l'adresse BAR + 56 de la base du système).Les champs AS et ARN à l'adresse BAR + 56 du mot RPW sont remis à zéro à l'étape 1483 étant donné que l'étape suivante 1484 consiste dans l1exé- cution diune routine de déroutement asynchrone qui doit résoudre les conditions qui ont provoqué la mise en état dialarme du bit de déroutement asynchro ne ou du numéro d'anneau asynchrone. Si ces bits n'étaient pas remis à zéro, ils donneraient au passage suivant de la microprogrammerie une indication de dérangement, alors qu'il n'y aurait rien d'anormal, et en conséquence ils provoqueraient toujours la routine de déroutement asynchrone et empêcheraient de passer à l'exécution.Revenant maintenant aux étapes de décision 1481 et 1482, si le bit AS n'est pas mis à 1 ou si le bit AS est mis et que le numéro PRN nwest pas supérieur au numéro ARN, la microprogrammerie entreprend alors de déterminer dans quel mode de processeur fonctionne : le mode normal ou le mode émulé. En conséquence, le numéro DEXT est contrôlé pour déterminer s'il est ou non mis à zéro et s'il est mis à 0, le mode normal de la machine est utilisé, à l'étape 1487 ; cependant, si le numéro DEXT n'est pas mis à 0, le mode émulé est utilisé à l'étape 1486. INSTRUCTION DE COMMUTATION DE LA BASE DU SYSTEME Sur la figure 15a à laquelle on se référera, on a représenté le format de l'instruction de commutation de la base du système. Le code opé ratoireOP 1501 est simiiaire au code opératoire d'une quelconque instruction et indique l'opération à exécuter. Le code complémentaire Ci 502 est utilisé en combinaison avec le code opératoire 1501, lorsque le code opératoire est partagé entre plusieurs opérations et le code complémentaire 1502 détermine alors I Xinstruction précise à exécuter. Par exemple, les opérations P et V ont 12 instructions et elles utilisent un unique code opératoire. Le code complémentaire, en combinaison avec le code opératoiredétermine celle des 12 instructions P et V qui doit être exécutée.La syllabe adresse AS 1503 de l'instruction de commutation de la base du système est l'adresse qui désigne une nouvelle copie de la base du système qui doit être chargée dans la mémoire principale et également dans la mémoire bloc-notes. En conséquence, ce tte adresse désigne une base du système entièrement nouvelle. Typiquement, une zone de 60 octets commençant à adresse spécifiée par le champ d'adresse de llinstruction de commutation de la base du système est transférée dans la zone de la base du système qui commence à l'adresse BAR. Ce transfert est également fait dans la mémoire bloc-notes. Cette zone, en conséquence, est la nouvelle base du système qui remplace la base du système précédente. Le processus en cours, en conséquence, disparaît, étant donné que son bloc PCB n'est pas mis à jour et qu'aucune manipulation de liaison n'est effectuée. Le processeur est alors placé à liétat libre et le distributeur est entré. C'est la responsabilité du logiciel du système de préparer les nouvelles informations pour la base du système et le nouveau segment GO avant d'exécuter l'instruction SWSB (commutation de la base du système) Pour cette raison, l'instruction SWSB doit être entrée avec la porte du matériel HG bloquée, autrement elle retourne au code condition 2 sans prendre d'autre action. Après achèvement de l'instruction SWSB, la porte HG est laissée débloquée, De même, après achèvement de l'instruction SWSB, loin~ dicateur libre est mis à l'état 1.Ceci indique qu'il niy a pas de processus en cours et il en résulte que le système se porte à la tête de la file d'attente des processus prêts en utilisant le mot de file d'attente interne du processeur IPQW et en lisant le pointeur désignant la file d'attente des processus prêts. Le système extrait alors la tête de la file d'attente des processus prêts et démarre un nouveau processus. Le processus qui a exécuté llinstruction SWSB est terminé du fait qu'une condition libre a été placée dans l'indicateur d'occupation ce qui signifie qulil n'y a pas de processus en cours. On décrira maintenant en détail, en se référant aux figures 15b et 15c, llinstruction SWSS en microprogrammerie. L'instructionSWSB commence à l'étape 1504 et un contrôle est effectué à l'étape 1505 pour déterminer si le numéro d'anneau Hu processus PRN est 4gal S r Ceci est nécessaire pour que l'instruction SWSB soit exécutée avec le privilège le plus élevé Si le numéro PRN n'est pas égal à 0, il se produit une exception d'instruction privilégiée à l'étape 1506.Si par contre, le numéro PRN est égal à 0, la porte du matériel HG qui se trouve dans la mémoire auxiliaire 1317a de l'unité arithmétique et logique ALU 1317 est contrôlée, à l'étape 1507, pour déterminer si elle est ou non bloquée. il est important que la porte HG soit bloquée au cours de l'exécution de l'instruction SWSB. Lorsque la porte HG est-bloquée, aucune interruption ou exception E/S n'est permise. Si une telle exception ou une condition d'erreur se produit pendant que la porte HG est bloquée, le système s'arrête brusquement. L'arrêt brutal du système est une solution alternative préférable pendant que la base du système est en cours de changement à celle qui autoriserait l'interruption alors que la base du système est seulement partiellement changée.En conséquence, si la porte HG n'est pas bloquée, le code condition CC diun registre d'état est mis à l'état 2 (étape 1508), ce code étant dans ce cas le code indiquant que la porte du matériel HG nwest pas bloquée. En conséquence, l'instruction SWSB n'est pas autorisée à se poursuivre (étape 1509) tant que la porte HG ffllest pas bloquée. Si, par contre, la porte HG est bloquée, un contrôle est effectué pour déterminer si le nouveau mot de la base du système (c'est-à-dire la syllabe adresse AS) est alignée sur un mot quadruple.Si la syllabe adresse AS n'est pas alignée sur un mot quadruple, le code condition CC est mis à la valeur 3, indiquant cette condition et l'instruction SWSB se termine, à l'étape 1509. Par contre, si la syllabe adresse AS est alignée sur un mot quadruple, le code condition CC est mis à O (étape 1512) ce qui indique que Ilinstruction SWSB est correcte et peut entreprendre l'exécution des opérations de mouvement (à llétape 1513) de l'image de la nouvelle base du système à la zone de la base du système située à l'adresse BAR.Finalement, après que l'image de la nouvelle base du système a été transférée dans la base du système à l'adresse BAR, la porte du matériel HG est débloquée, à l'étape 1514, l'indicateur Libre dans la mémoire auxiliaire est mis à l'état 1 (étape 1515) indiquant qu'il nly a pas de processus en cours et finalement l'instruction est terminée à l'étape 1516. La figure 15c est un organigramme plus détaillé de l'étape 1513 qui est l'étape qui transfère l'image de la nouvelle base du système à la zone de la base du système à l'adresse BAR et comporte le chargement de la mémoire bloc-notes (SPM) avec les informations de l'image de la nouvelle base du système. Sur la figure 15c, à laquelle on se référera, le départ 1517 de llinstruction- SWSB est, en fait, à l'étape 1513 de la figure 15b. Typiquement, 60 octets de limage de la nouvelle base du système, située à l'adresse As, sont transférées, à l'étape 1518, à la base du système dont l'adresse est indiquée par le registre BAR. Un nouveau mot de table G (GTW) de l'image de la nouvelle base du système est chargé à étape 7519 en mémoire bloc-notes dans la mémoire auxiliaire 1317a Ensuite le nouveau mot de table J JTW est chargé, à l'étape 1520 dans la mémoire bloc-notes. Enfin, un nouveau mot de file d'attente interne du processeur IPBW est chargé, à l'étape 1521, en mémoire bloc-notes, et cette partie de l'instruction étant achevée, à étape suivantes 1522, l'instruction se poursuit à l'étape 1514 (Fig. lSb) et les opérations/sont effectuées comme précédemment décrit. On a décrit et représenté un mode de réalisation de l'invention mais les spécialistes de la technique comprendront aisément que des variantes et modifications peuvent être utilisées pour mettre en oeuvre llinvention sans sortir du cadre ni s'écarter de l'esprit de l'invention REVENDICATIONS 1/ Un système d'ordinateur à programmes multiples comprenant une pluralité de processus dans les états en cours, prêt, en attente ou suspendu et comprenant au moins une mémoire virtuelle, une unité de traitement centrale (CPU) communiquant avec ladite mémoire virtuelle, ladite unité centrale étant sous la commande d'un processus sélecté parmi la pluralité de processus, un système d'exploitation pour créer et supprimer les processus, une mémoire bloc notes dans ladite unité centrale qui ne peut être accédée que par ledit système d'exploitation, ledit système d'ordinateur étant caractérisé en ce qu'il comporte un centre de communication qui comprend:: a) des premiers moyens contenus dans le centre de communication, qui ont un format prédéterminé, pour fournir des informations pour identifier un processus sélecté parmi lesdits processus b) des seconds moyens communiquant avec ledit système diexploi- tation pour fournir des premières adresses partielles pour les informations contenues dans lesdits premiers moyens c) des troisièmes moyens contenus dans lesdits premiers moyens adressés par lesdits seconds moyens pour fournir une adresse pour ledit processus sélectée parmi lesdits processus ; et d) des quatrièmes moyens couplés auxdits premiers, seconds et troisièmes moyens et aux registres de mémoire bloc-notes pour changer les informations contenues dans lesdits premiers, seconds et troisièmes moyens et dans lesdits registres bloc-notes. 2/ Système d'ordinateur selon la revendication 1 caractérisé en ce qu'il comporte, dans lesdits troisièmes moyens, des cinquièmes moyens pour indiquer une priorité dudit processus sélecté parmi lesdits processus par rapport à tous les autres processus. 3/ Système d'ordinateur selon la revendication 2 caractérisé en ce qu'il comporte, dans lesdits premiers moyens, des sixièmes moyens pour fournir auxdits seconds moyens des secondes adresses partiel les des informations contenues dans lesdits premiers moyens. 4/ Système d'ordinateur selon la revendication 3 caractérisé en ce qulil comporte des septièmes moyens, contenus dans les premiers moyens, et communiquant avec lesdits seconds et cinquièmes moyens pour combiner sélectivement lesdites premières et secondes adresses partielles et obtenir les adres ses absolues dinformations sélectées dans lesdits premiers moyens. 5/ Un système d'ordinateur à programmes multiples ayant une mémoire vir telle, une unité de traitement centrale (CPU) en communication avec ladite mémoire virtuelle et une pluralité de processus dans les états en cours, prêt, en attente ou suspendu, dans lequel les processus d'un premier groupe sélecté de processus sont en état d'obtenir la commande de ladite unité centrale et sont mis en file d'attente dans une file d'attente des processus prêts contenue dans ladite mémoire virtuelle, dans lequel les processus diun second groupe sélecté desdits processus ont besoin aucun évènement prédéterminé se produise avant qu'ils soient en état diobtenir la commande de ladite unité centrale, lesdits processus sélectés dudit second groupe étant mis en file dtattente dans une file d'attente des processus en attente contenue dans ladite mémoire virtuelle, dans lequel les processus d'un troisième groupe sélecté desdits processus sont inactifs dans la mémoire virtuelle, et dans lequel unité centrale est commandée par un processus sélecté, ledit système d'ordinateur ayant en outre un système d'exploitation pour créer et supprimer les processus et un centre de communication pour réaliser les communications entre le système d'exploitation et lesdits processus, ledit système d'ordinateur étant caractérisé en ce que ledit centre de communication comprend a) des premiers moyens contenus dans le centre de communication, qui ont un format prédéterminé, pour fournir des informations pour identifier un processus sélecté parmi lesdits processus b) des seconds moyens communiquant avec ledit système diexploi- tation pour fournir des premières adresses partielles pour les informations contenues dans lesdits premiers moyens c) des troisièmes moyens contenus dans lesdits premiers moyens adressés par lesdits seconds moyens pour fournir une adresse de ladite file d'attente des processus prêts ; et d) des quatrièmes moyens couplés auxdits premiers, seconds et troisièmes moyens pour changer les informations contenues dans lesdits premiers, seconds et troisièmes moyens. 6/ Système d'ordinateur selon la revendication 5 caractérisé en ce qulil comporte dans lesdits premiers moyens, des cinquièmes moyens pour fournir des secondes adresses partielles des informations contenues dans lesdits premiers moyens. 7/ Système d'ordinateur selon la revendication 6 caractérisé en ce qu'il comporte des sixièmes moyens contenus dans lesdits premiers moyens et communiquant avec lesdits seconds et quatrièmes moyens pour combiner les adresses partielles sélectées parmi lesdits premières et secondes adresses partielles et obtenir les adresses absolues d'informations sélectées dans lesdits premiers moyens. 8/ Système d'ordinateur selon la revendication 7 caractérisé en ce qu'il comporte des septièmes moyens, contenus dans lesdits premiers moyens, et communiquant avec lesdits seconds et quatrièmes moyens pour fournir une adresse pour ledit processus sélecté parmi lesdits processus. 9/ Système d'ordinateur selon la revendication 8 caractérisé en ce qu'il comporte des huitièmes moyens, contenus dans lesdits sixièmes moyens, pour indiquer une priorité diun processus sélecté parmi lesdits processus par rapport à tous les autres processus. 10/ Système dordinateur selon la revendication 9 caractérisé en ce qu'il comporte des neuvièmes moyens contenus dans ladite file d'attente des processus prêts et communiquant avec les sixièmes moyens et associés à un processus sélecté parmi les processus sélectés du premier groupe de processus et aux huitièmes moyens, pour fournir une adresse dudit processus sélecté parmi les processus sélectés du premier groupe de processus dans ladite file d'attente des processus prêts. 11/ Système d'ordinateur selon la revendication 10 caractérisé en ce qu'il comporte des dixièmes moyens, contenus dans lesdits huitièmes moyens, pour fournir une adresse pour ladite file d'attente des processus en attente dans ladite mémoire virtuelle. 12/Système d'ordinateur selon la revendication il caractérisé en ce qu'il comporte des onzièmes moyens, dans ladite fie d'attente des processus en attente et communiquant avec lesdits sixièmes moyens et associés à un processus sélecté parmi les processus sélectés du second groupe de processus, et auxdits dixièmes moyens, pour fournir une adresse dudit processus sélecté parmi les processus sélecté du groupe de processus dans ladite file d'attente des processus prêts. 13/ Un système d'ordinateur à programmesmultiples ayant une mémoire virtuelle dans laquelle sont stockés une pluralité de typesdifférents de groupes de données d'informations, chaque type de groupe de données étant associé à un espace adresses délimité par un segment ayant des limites ajustables, une unité de traitement centrale (CPU) communiquant avec ladite mémoire virtuelle et une pluralité de processus dans les états en cours, prêt, en attente ou suspendu, dans lequel les processus d'un premier groupe sélecté desdits processus sont en état d'obtenir la commande de ladite unité centrale et sont mis en file d'attente dans une file d'attente de processus prêts dans un premier seg; ; ment prédéterminé de la mémoire virtuelle, dans lequel les processus d'un second groupe sélecté desdits processus nécessitent qu'un évènement prédéterminé se produise avant qu'ils soient en état dXobtenir la commande de ladite unité centrale, ledit second groupe sélecté desdits processus étant également mis en file d'attente dans une file d'attente des processus en attente dans ledit premier segment prédéterminé de ladite mémoire virtuelle, et dans lequel les processus d'un troisième groupe sélecté desdits processus sont inactifs dans ladite mémoire virtuelle, ladite unité centrale étant commandée par un processus sélecté parmi lesdits processus, ledit système d'ordinateur com po tant en outre un système d'exploitation pour créer et supprimer les processus et un centre de communication pour établir les communications entre ledit système d'exploitation et lesdits processus, ledit système d'ordinateur étant caractérisé en ce que ledit centre de communication comporte a) des premiers moyens contenus dans le centre de communication qui ont un format prédéterminé pour fournir des informations pour identifier un processus sélecté parmi lesdits processus b) des seconds moyens, communiquant avec ledit système d'exploitation, pour fournir des premières adresses partielles pour les informations contenues dans lesdits premiers moyens c) des troisièmes moyens contenus dans lesdits premiers moyens adressés par lesdits seconds moyens pour fournir une adresse dudit premier segment prédéterminé ; et d) des quatrièmes moyens couplés auxdits premiers, seconds et troisièmes moyens pour changer les informations contenues dans lesdits premiers, seconds et troisièmes moyens. 14/ Système d'ordinateur selon la revendication 13 caractérisé en ce qu'il comporte, dans ives lits premiers moyens, des cinquièmes moyens pour fournir des secondes adresses partielles des informations contenues dans lesdits premiers moyens. 15/ Système d'ordinateur selon la revendication 14~caractérisé en ce qulil comporte des sixièmes moyens, contenus dans lesdits premiers moyens et communiquant avec lesdits seconds et quatrièmes moyens, pour combiner des adresses partielles sélectées parmi lesdites premières et secondes adresses partielles et obtenir les adresses absolues d'informations sélectées dans lesdits premiers moyens, 16/ Système d'ordinateur selon la revendication 15 caractérisé en ce qu'il comporte des septièmes moyens, contenus dans lesdits premiers moyens et communiquant avec lesdits seconds et quatrièmes moyens, pour fournir une adresse pour ledit processus sélecté parmi lesdits processus. 17/ Système d'ordinateur selon la revendication 16 caractérisé en ce qutil comporte des huitièmes moyens contenus dans lesdits sixièmes moyens pour indiquer une priorité diun processus sélecté parmi lesdits processus par rapport à tous les autres processus. 18/ Système d'ordinateur selon la revendication 17 caractérisé en ce qulil comporte des neuvièmes moyens, contenus dans ladite file d'attente des processus prêts et communiquant avec les sixièmes moyens et associés à un processus sélecté parmi les processus sélectés du premier groupe de processus, et aux huitièmes moyens, pour fournir une adresse dudit processus sélecté parmi les processus sélectés du premier groupe ce processus dans ladite file diattente des processus prêts. 19/ Système d'ordinateur selon la revendication 18 caractérisé en ce qu'il comporte des dixièmes moyens, contenus dans lesdits premiers moyens et communiquant avec lesdits seconds et quatrièmes moyens, pour fournir une adresse pour lesdits huitièmes moyens. 20/ Système d'ordinateur selon la revendication 19 caractérisé en ce qu'il comporte des onzièmes moyens, dans lesdits huitièmes moyens, pour fournir une adresse pour ladite file d'attente des processus en attente. 21/ Système d'ordinateur à multiprogrammation comportant une unité de traitement centrale (CPU), une pluralité de groupes de processus qui sont dans les états en cours, prêts, en attente ou suspendus, ledit système d'ordinateur ayant également un système d'exploitation pour créer et supprimer les processus et une structure de données pour établir les communications entre lesdits processus et ledit système d'exploitation caractérisé en ce que ladite structure de données comprend:: a) des premiers moyens contenus dans ladite structure de données et communiquant avec ledit système d'exploitation pour fournir une adresse pour un processus sé I ecté parmi lesdits processus b) des seconds moyens contenus dans lesdits premiers moyens pour indiquer la priorité dudit processus sélecté par rapport aux autres processus pour obtenir la commande de ladite unité centrale lorsqu'il est prêt c) des troisièmes moyens contenus dans ladite structure de données et communiquant avec ledit système diexploitation pour fournir une adresse pour un groupe sélecté de ladite pluralité de groupes de processus ; et d) des quatrièmes moyens couplés auxdits premiers moyens et auxdits registres bloc-notes pour changer les informations contenues dans lesdits premiers moyens et lesdits registres bloc-notes. 22/ Système d'ordinateur selon la revendication 21 caractérisé en ce que ladite structure de données comporte des cinquièmes moyens contenus dans lesdits seconds moyens, pour indiquer un niveau de privilège pour ledit groupe sélecté parmi la pluralité de groupes de processus, qui est requis pour avoir accès au dit groupe sélecté de ladite pluralité de groupes de processus. 23/ Un centre de communication situé dans une zone prédéterminée de la mémoire principale d'un ordinateur, ledit ordinateur comportant une unité de traitement certrcsle (CPU), une pluralité de processus qui sont en concurrence pour obtenir la commande de ladite unité centrale, un système d'exploitation pour fournir des informations audit centre de communication et une mémoire bloc-notes, situoedans ladite unité centrale, qui met en mémoire, sous la commande dudit système d'explàitation, des parties des informations qui se trouvent dans le centre de communication, ledit centre de communication étant caractérisé en ce qu'il comporte un système commandé par l'un desdits processus pour changer les informations contenues dans ladite zone de communication et dans ladite mémoire bloc-notes, ledit système comportant a) des premiers moyens pour créer une image dudit centre de comme cation à un autre emplacement de la mémoire principale b) des seconds moyens fonctionnant en réponse audit système d'exploitation pour changer les informations dans ladite image, produisant ainsi une nouvelle image c) des troisièmes moyens fonctionnant en réponse à I lun desdits processus pour transférer la nouvelle image audit centre de communication et à ladite mémoire bloc-notes. 24/ Centre de communication selon la revendication 23 caractérisé en ce que ledit centre de communication est une base du système ayant une structure prédéterminée, ledit système comportant en outre un registre d'adresse limite pour déterminer l'adresse dudit centre de communication 25/ Centre de communication selon la revendication 24 caractérisé en ce que lesdits troisièmes moyens sont constitués par une instruction de commutation de la base du système, en microprogrammerie. 26/ Centre de communication selon la revendication 25 caractérisé en ce qu'il comprend, en outre, une unité arithmétique et logique ayant une mémoire auxiliaire. 27/ Centre de communication selon la revendication 26 caractérisé en ce que ladite mémoire auxiliaire comporte une porte de matériel qui peut occuper un état bloqué et un état débloqué, l'état débloqué permettant les interruptions internes ou les exceptions externes, tandis que l'état bloqué ne permet ni les interruptions internes ni les exceptions externes. 28/ Centre de comm#unication selon la revendication 27 caractérisé en ce que la porte du matériel est bloquée par ladite instruction de commutation de la base du système lorsque cette dernière est exécutée et débloquée par ladite instruction de commutation de la base du système, lorsque son exécution est terminée.