Langages
original schema |
LSM Langage Symbolique Machine
|
LSM Assembly Language |
FORTRAN Le compilateur FORTRAN de la M-40, le premier réalisé chez Bull, s'inspirait et était compatible en source avec le FORTRAN de l'IBM 7040. Il produisait du format BAT et pouvait être linké avec des sous-programmes écrits en assembleur LSM. |
FORTRAN |
ALGOL | ALGOL |
LSA Langage Symbolique
Algébrique Le langage LSA s'inspirait quelque peu du PAF de la CAB500, il utilisait cependant des mots-clés en anglais et avait été conçu pour des applications multi-utilisateurs (time-sharing). |
LSA |
Time sharing
« TIME-SHARING » ET GAMMA M40 document d'époque 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: 1. Organisation centrale. Le Gamma M 40 est agencé pour travailler en
multiprogrammation, car il dispose: 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. 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 de 24 bits, 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: 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. Il est 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 (break) é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; 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 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: 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. 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., dérivé des langages FORTRAN et ALGOL adapté aux algorithmes
numériques classiques, présente en compilation les caractéristiques suivantes: 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: Ces programmes sont structurés de façon à répartir le
temps disponible entre les utilisateurs, sous la direction du moniteur. PARTAGE DE TEMPS ET PARTAGE DE MEMOIRE - EXEMPLE Pour chaque utilisateur, le travail sur machine
seffectue en deux temps: 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. 1. Partage de temps. Lorsquil examine linformation venant
dun poste demandeur, le moniteur peut se trouver en présence: 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.
|
TIME-SHARING on GAMMA M-40 <texte ci-contre à résumer en anglais> |