Gamma 30 CMC système temps réel

En 1963, la Compagnie des Machines Bull préparait l'introduction du Gamma 40 (RCA3301) et l'examen des demandes de gros clients montrait qu'ils ne se satisferaient pas d'un support batch des applications (telles qu'offert sur les gamma 30 standard ou le Gamma 60) mais désiraient utiliser leur ordinateur en système transactionnel . Parmi les applications transactionnelles, se trouvaient la consultation et mise à jour de comptes bancaires et la réservation des trains de voyageurs. Bull décida de se former à ces applications en important le dispositif CMC d'un Gamma 30 et d'en partager l'usage en deux petites équipes de programmeurs, l'une d'études sur les applications bancaires, l'autre au service technico-commercial sur la SNCF. Il s'agissait d'analyser le problème, d'en programmer une maquette sur Gamma 30, puis d'en faire une démo.

En février 1964, dans la phase d'incertitude de la mutation vers General-Electric, nous décidâmes de présenter les deux démos simultanément sur la même machine et de construire un moniteur temps réel auquel nous ajoutâmes quelques applications dont une destinée à tester les "stratégies d'ascenseur" d'accès aléatoires aux disques en recherchant un vocabulaire français-anglais simultanément par plusieurs utilisateurs (en allongeant artificiellement les temps d'accès en utilisant une bande magnétique).

Le système fut effectivement démontré au SICOB à côté du prototype du Gamma M40 -exécutant du langage LSA encore à l'époque mono-console-, le tout sous la bannière de Bull-General Electric. 
La vente du Gamma 40 fut annulée, et le multiplexeur de communications CMC ne fut pas introduit en clientèle et le système réalisé ne servit qu'à la formation de ses auteurs.

La configuration du système était la suivante:
  • unité centrale 20 000 caractères !
  • unité de disques Bryant de 22Mc (temps d'accès moyen 100 ms)
  • 6 bandes magnétiques dont seules 3 étaient utilisées (une pour les fichiers de vocabulaire, une conservant l'image du moniteur et un troisième pour un éventuel dump de la mémoire centrale)
  • une imprimante ligne Anelex (utilisée en mise au point pour l'impression des dumps)
  • un lecteur de cartes (pour mémoire, mais c'était aussi un outil de test car un branchement par inadvertance à l'adresse 0 causait la lecture d'une carte)
  • un multiplexeur de 10 lignes télex 50 bps connectées directement en local ou à distance -SICOB- par le réseau télex commuté (à l'initiative du terminal, l'appel par ordinateur étant à l'époque interdit par les PTT).
  • 5 terminaux télex (clavier, imprimante) standards d'origine Sagem et Creed.

Les trois canaux possibles sur le Gamma 30 étaient utilisés.
le canal normal était utilisé pour les fonctions de service sur disques , imprimante, dérouleurs) , le canal "simu" desservait les fichiers opérationnels sur disques et la bande vocabulaire, le troisième canal supportait les transferts de communications (transfert caractère par caractère à l'initiative du programme de supervision -le CMC n'assurant automatiquement que le transfert bit/caractère, la comparaison à un caractère fin de message et la reconnaissance de connexion). Un problème apparemment insurmontable se posait l'absence de toute notification d'interruption sur la machine. Il fut contourné de la manière suivante. Une boucle de programme tournait en "tâche de fond" et venait tester la présence de signaux générés par le hardware. Pour améliorer les performances -en n'attendant pas les fins de blocs lus-  cette boucle venait aussi vérifier que la position de fin d'enregistrement logique qui était initialement remplie à nul avait bien été modifiée par le canal.

Outre cette boucle de vérification des entrées-sorties, le moniteur comprenait un dispatcher de tâches en cours d'exécution à qui les fins de traitement ET les initiations d'entrées-sorties simu cédaient le contrôle. La taille des programmes utilisateurs (code réentrant et données) était limitée à 10 K, mais ils comprenaient des overlays alimentés depuis disques.
Lorsque le dispatcher s'apercevait que des tâches étaient en attente, il chassait sur disques (swap out)  le tâche en cours et réalimentait (swap in) la tâche candidate depuis disques. Lorsque le programme interprétant la commande d'un message venant d'être reçu n'était pas "en mémoire virtuelle", une copie fraîche était chargée depuis la bande magnétique.

Les temps de réponse avec 5 terminaux étaient très acceptables : quelques secondes, la plupart des temps de traitement étaient inférieurs à celui de transmission des messages via le télex. 
Un problème sérieux de fiabilité des disques se posait. Les disques Bryant manifestaient de nombreuses erreurs de lecture quand l'écriture avait eu lieu à une température différente. Plutôt que d'ouvrir les fenêtres de la salle machine devant les portes ouvertes de l'unité de disques (!!), la stratégie adoptée fut de réécrire toute piste lue qui avait montré une erreur de parité en première lecture. Du moins en octobre, ce système permit un fonctionnement continu de 09:00 à 18:00.

 

Parmi les membres ayant collaboré à ce projet, on peut citer Claude Burgevin, Germain Gautier,  Jean-Claude Alexandre, Louis  Loubière et Jean Bellec

 

© 2005 Jean Bellec

Exemples de commandes diverses passées au moniteur:

 

Application bancaire: exemples de création de comptes et de mouvements créditeurs et débiteurs (fichier sur disques)