Customer Information Control System

Un article de Wikipédia, l'encyclopédie libre.

CICS : Customer Information Control System

Ce système permet d'effectuer des opérations transactionnelles (en général consultation ou mise à jour de bases de données ou de fichiers) avec une très grande économie de moyens. À titre indicatif, un IBM 3033 équipé de 16 Mo de mémoire - qui correspondait à peu près en puissance de calcul à un Pentium 100 - pouvait gérer de front 17 500 terminaux CICS.

Sommaire

[modifier] Principe de fonctionnement

L'économie de moyens de CICS utilise les principes suivants :

  • Concept totalement démarqué du temps partagé : on n'interrompt pas une tâche (c'est le nom que CICS donne à une séquence de traitement), on la déroule toujours jusqu'au bout, et c'est à elle de rendre le contrôle. Il n'y a donc pas de contexte de programme à sauvegarder.
  • Les tâches doivent être courtes tant en taille qu'en temps de traitement.
  • Une seule tâche est utilisée à la fois.
  • Une tâche peut enchaîner automatiquement une autre tâche sur action d'un événement.
  • Les tâches, ne pouvant pas être interrompues (on peut tout au plus les tuer si elles posent problème en cours de mise au point) n'ont pas besoin d'être réentrantes. Il leur suffit de laisser le système dans l'état où elles souhaitent le trouver en arrivant.
  • Une tâche reste en mémoire après utilisation, prête à servir sans appel disque si elle est à nouveau sollicitée.
  • Les tâches utilisent la conception des terminaux 3270 qui ne sollicitent pas le système à chaque caractère frappé, mais uniquement lors de la transmission d'un écran entier en mode full-screen (ou plein écran). Ainsi 1000 terminaux actifs lançant une transaction complète toutes les 20 secondes n'engendrent que 50 modestes transactions par seconde.

[modifier] Avantages propres à CICS

  • Une tâche peut être activée ou désactivée à la demande, voire remplacée au vol par une autre, sans arrêt du reste du système.
  • CICS met à l'abri de tout risque de piratage : un terminal ne dispose jamais d'un shell, puisqu'il s'agit d'un terminal rattaché à l'application CICS et non au système qui se trouve au-dessus. Ce terminal ne peut s'échapper du contrôle de CICS (ce qui est parfois souhaitable) que si l'on crée en CICS une tâche de déconnexion... qui ne peut elle-même être codée depuis un terminal CICS !
  • Gestion des possibilités « full-screen » des écrans de mainframes.

[modifier] Inconvénient de CICS

  • La table des transactions était gardée en forme séquentielle et non hash-codée. Le parcours séquentiel de la table à chaque ouvel appel produisait de grosses inefficiences si un système avait plusieurs milliers de noms de tâches. Les statistiques fournies par CICS permettaient d'atténuer un peu cet inconvénient en mettant en tête de table (manuellement) les noms des transactions les plus utilisées.

[modifier] Concurrent de CICS

  • Un sous-système non-IBM nommé ROSCOE utilisait un pseudo-conversationnel du même type, mais demandait en revanche une recompilation intégrale à chaque nouvelle transaction ajoutée au système.

[modifier] Anecdotes

  • Le principe permettant à CICS de travailler en transactionnel sur un système sans effectuer de multitâches au sens propre du terme inspira en France nombre de serveurs Minitel gérant 80 connexions en simultané apparent sur un 386 travaillant sous DOS... qui était lui-même monotâche.

[modifier] CICS pour .NET

KICKS for .NET CICS à Microsoft .NET (anglais).