« TIME-SHARING » ET GAMMA M40
La puissance actuelle des unités centrales dordinateurs serait mal utilisée si lon admettait de multiples interventions des opérateurs pour exécuter les différentes phases dun travail, ou passer dun travail au suivant.
La méthode de la gestion automatique des programmes par un programme « moniteur » apporte dans de nombreux cas une solution satisfaisante: le programme moniteur est chargé d« appeler » lun après lautre les travaux à exécuter au cours dune période dexploitation, qui senchaînent alors automatiquement. Il faut cependant pour ce faire que lordre dexécution ait pu être fixé par avance: ceci suppose une exploitation planifiée, avec une préparation préalable des fichiers et une répartition des heures machine dûment calculée.
Cette méthode est donc difficile à adapter quand il sagit de faire bénéficier un nombre assez important dutilisateurs de la capacité de traitement dun ordinateur: ce problème est en particulier celui des utilisateurs scientifiques; cest celui des laboratoires de calcul des universités et des bureaux détudes, chargés des calculs numériques, des dépouillements de résultats expérimentaux, des simulations économiques ou physiques, des problèmes documentaires, etc. Ces travaux se plient mal à une planification rigide, ils conduisent à préparer, mettre au point et exploiter des programmes diversifiés, pour lesquels il convient de réduire au maximum le temps dattente, sous peine dune augmentation fâcheuse des délais globaux de fourniture des résultats.
La méthode proposée ici permet de mettre simultanément à la disposition dun nombre élevé dutilisateurs un même ordinateur, en loccurrence le Gamma M 40. Chacun cependant utilise à son gré la machine. Il dispose en effet de son poste dentrée/sortie, organe matériel qui lui permet un dialogue direct avec lordinateur. Tout se passe donc pour lui comme sil travaillait sur son propre calculateur alors quil exploite en fait un ordinateur; puissant et bénéficie en conséquence de moyens de programmation importants. Pour lunité centrale, les postes périphériques se partagent le temps disponible et de plus, ils lui laissent la possibilité, compte tenu de leur lenteur relative et de leur agencement interne en vue de la multiprogrammation, de dérouler parallèlement une chaîne de travaux séquentiels, ce qui maintient un taux global dutilisation élevé de la machine.
Nous décrivons ici une réalisation permettant de connecter jusquà 23 postes périphériques dentrée et de sortie à lunité centrale dun Gamma M 40 et de les exploiter simultanément selon la méthode du « partage de temps » (time-sharing en anglais), de telle sorte que lunité centrale ne travaille quenviron 5% du temps, ce qui laisse place, si la capacité de mémoire est suffisante, à dautres types dexploitation grâce à la multiprogrammation.
MOYENS MIS EN OEUVRE
Pour réaliser des traitements multiples avec « partage de temps » le Gamma M 40 dispose:
· dune organisation logique interne appropriée aux travaux en multiprogrammation;
· dappareils périphériques permettant à plusieurs utilisateurs de dialoguer avec lunité centrale;
· dun système de programmation spécialement conçu pour ce type dapplication.
1. Organisation centrale.
Le Gamma M 40 est agencé pour travailler en multiprogrammation, car il dispose:
· dun dispositif dinterruption de programme;
· de la protection de mémoire.
Le dispositif dinterruption de programme permet, à partir dappels dinterruption émanant dun appareil externe, de mettre en attente la séquence de programme qui se déroule pour lancer une séquence de programme plus prioritaire: cest grâce à linterruption de programme que lon peut interrompre une unité de traitement à déroulement séquentiel, au profit dune courte séquence de traitement demandée par un poste périphérique.
La protection de mémoire permet de réserver à un programme donné une tranche de mémoire, sans quun autre programme ait la possibilité dy inscrire une donnée qui le concerne; cette disposition est indispensable si lun des travaux effectués en multiprogrammation est un travail de mise au point de programme, dans lequel une erreur daffectation de zone peut toujours se rencontrer.
Nous ne nous étendrons pas davantage ici sur ces dispositifs, qui font partie de la conception logique du Gamma M 40 et qui, de ce fait, sont décrits par ailleurs.
Du point de vue « central », on notera encore que la capacité minimum de mémoire centrale nécessaire à une exploitation avec « partage de temps » est de 12.288 mots, en effet les programmes généraux indispensables à son exécution occupent une zone de 9.000 mots. Les emplacements de mémoire restants sont répartis dynamiquement entre les différents utilisateurs, selon le procédé exposé plus loin.
2. Equipement périphérique.
Les postes périphériques terminaux mis à la disposition des utilisateurs peuvent être équipes:
· soit de machines à écrire, de même type que celle qui est normalement utilisée au pupitre de la machine;
· soit de téléimprimeurs utilisant un code standard à 5 moments.
Ces différents appareils sont regroupés sur un élément spécial appelé « sélecteur de sous-canaux ». Le sélecteur de sous-canaux est relié dune part au « canal normal » dentrée/sortie de lunité centrale; dautre part à un nombre variable de « sous-canaux » desservant chacun un poste terminal; chaque sous-canal comporte 8 voies binaires sur lesquelles sopère caractère par caractère la transmission dinformation dans les deux sens.
Dans une première réalisation, on a prévu de connecter jusquà 23 postes terminaux, reliés à 23 sous-canaux. Un sous-canal supplémentaire à 24 voies binaires regroupe des signaux de demande émanant de chaque poste terminal, destinés à lunité centrale: ces signaux indiquent que lappareil terminal est prêt à émettre ou à recevoir un caractère dinformation; ils seront testés par programme systématiquement.
Lemploi de machines à écrire ou de téléimprimeurs dépend des besoins de linstallation; la distance maximum sans relais intermédiaire entre une machine à écrire et le sélecteur de sous-canaux est de 50 mètres, cette distance peut être portée à plusieurs kilomètres avec un dispositif simple de liaison; un téléimprimeur par contre, connecté à lordinateur par relais télégraphique, peut se trouver à distance quelconque.
3. Les moyens de programmation (software).
Pour lexploitation envisagée trois programmes de base se trouvent en permanence enregistrés en mémoire centrale: ce sont:
· le superviseur, qui gère normalement les interruptions de programme, organise les fonctions dentrée/sortie et répartit le temps alloué entre les différents sous-canaux à laide dun rythmeur;
. le compilateur de programme « L.S.A. » (langage symbolique algébrique) qui permet aux utilisateurs scientifiques décrire leur programme dans un langage simple;
· le moniteur dexploitation par « partage du temps » qui répartit les demandes de postes terminaux.
Le superviseur est le programme qui permet normalement de lancer les programmes prioritaires à partir dinterruptions et dassurer les différentes fonctions dentrée/sortie sur tous les éléments périphériques connectés. Dans ce cas particulier, il doit comprendre, outre les séquences (ou « modules ») relatives aux éléments classiques, un module propre au « sélecteur de sous-canaux », qui réalise les fonctions suivantes:
· entrée de caractères sur un sous-canal donné, jusquà rencontre dun caractère défini, ou entrée dun nombre donné de caractères (fonction INSYM);
· sortie de caractères sur un canal donné, jusquà rencontre dun caractère défini, ou sortie dun nombre donné de caractères (fonction OUTSYM);
· sortie, sur un sous-canal donné, dune ligne standard à imprimer (fonction OUTPUT);
· commande dinterligne sur machine à écrire (fonction LF) ou de changement de ligne avec retour chariot (fonction NL), sur un canal donné.
Pour gérer lensemble des postes terminaux, lutilisateur doit fournir au superviseur un certain nombre de renseignements, groupés par sous-canal dans une « table dunité logique »,. Une « table de regroupement » fournit au superviseur les adresses des tables dunité logique, le superviseur viendra y placer une information signifiant « appel » ou « fin de message » chaque fois quun sous-canal entre en jeu.
Des caractères spéciaux sont réservés sur les postes terminaux pour les fonctions dappel de lutilisateur et de fin de message.
La compilation du langage L.S.A. est conçue de manière à pouvoir sexécuter sans difficulté dans une exploitation avec partage de temps. En effet, le L.S.A., sous-ensemble des langages FORTRAN et ALGOL adapté aux algorithmes numériques classiques, présente en compilation les caractéristiques suivantes:
· chaque instruction L.S.A. est compilée comme un sous-programme, indépendant du reste du programme;
· le nombre de symboles utilisables dans un programme est limité, ce qui permet des références directes aux mémoires affectées à ces symboles;
· les zones affectées aux tableaux ne sont déterminées quau moment de lexécution du programme généré. Elles sont adressées, dans ce programme généré, indirectement par lintermédiaire de renseignements élaborés au moment de lexécution dans une zone de renseignements dite « zone pilote »;
· ladresse début de chacun des sous-programmes, provenant de la compilation de chaque instruction L.S.A., figure dans une table présente en mémoire au moment de lexécution. Cette table est balayée une fois, de haut en bas, provoquant lexécution successive de tous les sous-programmes;
· des modifications dinstructions L.S.A. sont possibles à tout moment par création dun nouveau sous-programme qui sajoute à ceux existant déjà; ladresse du nouveau sous-programme se substitue à lancienne dans la table des adresses. à lemplacement correspondant au niveau de linstruction. On peut donc modifier le programme avant le lancement du programme généré; on peut également le faire lorsque lexécution de ce dernier est terminée, en vue dune reprise ultérieure;
· les corrections derreurs de syntaxe sont immédiates et narrêtent pas lexploitation .
Tous ces facteurs permettent une introduction et une mise au point des programmes très progressive avec une quantité dinformations minimum à introduire à chaque pas.
Le moniteur dexploitation par partage de temps assure lexécution des opérations demandées par les postes terminaux de la façon suivante:
· par un balayage circulaire, il recherche les postes terminaux qui demandent un échange dinformations;
· daprès les informations recueillies il procède aux attributions de zones de mémoire entre les différents travaux;
· daprès le type dinformation introduite, il fait appel soit au compilateur L.S.A., considéré comme un sous-programme fermé, de façon à transformer en sous-programme objet une instruction introduite à partir dun poste terminal, soit au programme à traiter, si lutilisateur a indiqué la fin de la compilation.
Ces programmes sont structurés de façon à répartir le temps disponible entre les utilisateurs, sous la direction du moniteur.
Vis-à-vis du superviseur, le moniteur constitue une seule unité de traitement, quel que soit le nombre de postes terminaux connectés.
PARTAGE DE TEMPS ET PARTAGE DE MEMOIRE - EXEMPLE
Pour chaque utilisateur, le travail sur machine seffectue en deux temps:
· le premier temps est une phase de compilation et de mise au point, au cours de laquelle il crée son programme généré;
· le deuxième temps est une phase dexploitation, où ce programme est lancé.
La présence permanente en mémoire du compilateur L.S.A. fait que la gestion centrale par le moniteur place sur un même plan chacune de ces phases, et ceci pour lensemble des programmes demandés par les utilisateurs sur les postes terminaux.
Le moniteur a donc à charge la répartition dynamique du temps et de la place en mémoire disponible, quelle que soit la nature des travaux demandés par chacun .
1. Partage de temps.
Lorsquil examine linformation venant dun poste demandeur, le moniteur peut se trouver en présence:
· dune instruction L.S.A. bornée par un signe « ; » marquant la fin dune instruction. Cette instruction est traitée par le compilateur, puis le moniteur passe au poste terminal suivant;
· dune demande dexécution de programme: le programme se déroule jusquà rencontre dune instruction dentrée/ sortie, ou jusquà un branchement systématique généré à partir de linstruction L.S.A. « GO TO »; puis le moniteur passe au poste terminal suivant.
Par ce procédé, tous les postes terminaux sont desservis à tour de rôle; on évite en particulier de tourner dans une même boucle de programme, car ce retour itératif serait obligatoirement commandé par une instruction L.S.A. « GO TO ».
Aucune des phases: compilation dinstruction L.S.A. ou mise en oeuvre dun programme généré, ne jouit dune priorité particulière; les demandes de postes terminaux sont prises en compte à tour de rôle.
2. Partage des zones de mémoire centrale.
Lun des rôles essentiels du moniteur est de répartir entre les utilisateurs la place disponible, sachant que le superviseur, le compilateur L.S.A. et le moniteur sont en permanence en mémoire. La mémoire doit contenir les séquences de programmes générés par le compilateur les tables dindicateurs, les variables simples et les variables indicées groupées en tableaux.
a) Des blocs de longueur fixe sont attribués au fur et à mesure des besoins de chaque poste terminal, aux séquences de programmes générés, aux variables simples du problème traité, et aux « zones pilotes » qui contiennent les adresses des tableaux. La longueur des blocs dépend de la machine utilisée. Les blocs son attribués dans le sens des adresses croissantes et ils sont « enchaînés » pour un utilisateur donné, cest-à-dire que la dernière mémoire dun bloc contient ladresse origine du bloc qui contient la suite des informations pour lutilisateur considéré. Quand il y a plusieurs utilisateurs, les blocs sont situés nimporte où dans la mémoire. Quand un utilisateur se retire le moniteur « récupère » les blocs qui lui avaient été attribués et les rend à la liste des blocs disponibles. Le mécanisme dattribution des blocs est tel que lon attribue toujours le bloc disponible qui se trouve à ladresse la plus faible dans la mémoire.
b) Les zones de mémoires affectées aux tables didentificateurs (387 mémoires), dune part, et aux tableaux de variables indicées, dautre part, ne sont pas attribuées par blocs mais dun seul tenant en partant de la fin de la mémoire disponible et en remontant dans le sens des adresses décroissantes.
Quand un utilisateur se retire, la table didentificateurs et les tableaux qui lui correspondent sont « récupérés », ce qui signifie que les autres tables et tableaux, situés à des adresses inférieures, sont physiquement translatés dans la mémoire; leurs adresses sont corrigées en conséquence dans la zone paramètre de lutilisateur et dans la « zone pilote » des variables indicées.
Avant de délivrer un bloc, ou une zone pour un tableau, le moniteur sassure quil ne peut y avoir de recouvrement entre la zone réservée aux blocs et celle des tableaux. Si une compilation conduisait à lempiétement de la zone des blocs sur celle des tableaux, la compilation serait abandonnée et le moniteur avertirait lutilisateur qui devrait alors réintroduire la totalité de son programme symbolique.
Si dautre part, au moment de la prise en compte dun programme, lattribution dune zone de tableaux empiétait sur la zone des blocs, lexécution du programme serait différée jusquà ce que, par le fait de restitutions de zones et de blocs, la place libre soit suffisante pour loger le tableau. Un message envoyé par le moniteur avertit lutilisateur que lexécution de son programme est différée sans quil y ait à intervenir.
Les figures, page 21, illustrent le mécanisme des attributions de zones de mémoire.
Soit des utilisateurs 1, 2, 3, ...n. Ils auront dabord à compiler leurs programmes, par appel de séquences P1 pour lutilisateur 1, P2 pour lutilisateur 2, ...Pn pour lutilisateur n, et à créer des tables didentificateurs 11, 12, ...ln; avant lexécution on implantera les variables indicées dans les tableaux T1, T2, ...Tn.
Dans cette première figure, 5 compilations sont en cours, et provoquent limplantation de séquences de programme P1, P2, P3, P4, P5, en même temps que sont implantées les tables didentificateurs 11, 12, 13, 14, 15.
Le programme 1 est achevé et la place quil occupait a été libérée dans la zone « blocs », la place disponible est progressivement occupée par les séquences appelées par la compilation du programme 6. Dans la zone « tableaux » il y a eu tassement, puis décalage des zones précédemment implantées pour le rangement de la table dindicateurs 16.
Le programme 3 et le programme 4 ont achevé leur compilation, le programme 3 a implanté des tableaux et a été lancé. Par contre il ne subsiste plus de place disponible pour ranger les tableaux du programme 4, qui se trouve en attente dexécution.
CONCLUSIONS
Dans la pratique, on peut estimer que le temps imparti par le moniteur à un utilisateur est à chaque passage de 5 à 10 millisecondes, quil sagisse de la phase de compilation ou dexécution.
On voit ainsi que, pour le nombre de postes terminaux considérés, le temps dattente reste très faible, et que, sil ny a pas de simultanéité instantanée au niveau de lunité centrale, il y a bien simultanéité apparente du point de vue des utilisateurs.
On considérera également que lon joue sur une occupation moyenne de la mémoire centrale, qui seule intervient pour fixer le nombre maximum de traitements simultanés; compte tenu de la forme concise quaffectent les programmes traités dans de telles applications, la solution proposée est des plus efficaces pour un nombre dutilisateurs relativement important et des plus économiques puisquelle nentraîne pas ladjonction dune mémoire externe auxiliaire coûteuse.