Formation les systèmes informatiques, tutoriel & guide de travaux pratiques en pdf.
Les systèmes purement séquentiels (1950-1960)
Les programmes autonomes (1950)
Initialement, les périphériques des ordinateurs se résumaient en un lecteur de cartes, un perforateur de cartes, et une imprimante. Le mode de fonctionnement était assez simple, vu de l’utilisateur, puisque l’exécution d’un programme consistait à mettre dans le lecteur de cartes un paquet contenant la forme “binaire” du programme suivie des données. Après lecture du programme, l’ordinateur en lançait l’exécution, les résultats étant obtenus sous forme d’un paquet de cartes perforées, ou de lignes imprimées (figure 1.1).
La constitution de la forme binaire était peut-être un peu compliquée. Il est en effet apparu très vite que l’écriture de programmes devait être aidée de façon à éviter la conception directe en forme binaire. Les langages d’assemblage ou de haut niveau, FORTRAN par exemple, sont apparus très tôt. Le programmeur constituait une suite de cartes contenant le texte source de son programme, dont il obtenait une traduction sous forme binaire au moyen de l’exécution successive de divers programmes standards (les “passes” du compilateur). Ainsi l’exécution d’un programme FORTRAN, perforé sur un paquet de cartes ps, pouvait, par exemple, demander les étapes suivantes:
• exécution de la passe 1 du compilateur avec comme données ps, et fournissant un paquet de cartes pi, forme intermédiaire pour le compilateur,
• exécution de la passe 2 du compilateur avec comme données pi, et fournissant un paquet de cartes pb, forme binaire du programme,
• exécution de pb sur ses données.
A la fin de l’exécution de la passe 2, pi peut être jeté, car il ne sert plus à rien.
Le concept de base de ce mode de fonctionnement était la notion d’amorçage. La mise en route (ou la réinitialisation) de l’ordinateur lance l’exécution d’un programme cablé de quelques instructions (l’amorce cablée), qui met le matériel en position de lecture d’une carte, dont le contenu sera mémorisé dans un emplacement fixe de la mémoire. Dès que cette carte est lue, le matériel exécute l’instruction qui se trouve à cet emplacement fixe. Le contenu de cette première carte doit donc être un court programme qui assure le chargement en mémoire des cartes qui suivent, et le lancement du programme correspondant. D’où le terme d’amorce logicielle (bootstrap en anglais). Notons que ce concept est toujours utilisé sur les ordinateurs d’aujourd’hui, lors de leur mise en route ou de leur réinitialisation; le seul changement intervenu est de pouvoir amorcer la machine depuis n’importe quel périphérique, et non plus à partir de cartes perforées.
Ce mode de fonctionnement correspondait assez bien à la structure purement séquentielle de l’ordinateur. Le matériel était conçu pour exécuter les instructions du programme sans intervention extérieure possible, en dehors de la réinitialisation. Ainsi la lecture d’une carte commençait lorsque le programme faisait appel à l’instruction correspondante, cette instruction se terminant lorsque la carte avait été lue sans erreur en mémoire.
Ce mode de fonctionnement attire les remarques suivantes:
• Seul l’enchaînement des instructions d’un programme est automatique.
• Le matériel est en général sous employé, du fait des manipulations humaines entre deux activités.
• L’utilisation sous forme de vacations (réservation pendant une certaine durée par un utilisateur unique), accentue le sous-emploi, et entraîne la manipulation de paquets de cartes importants (les passes d’un compilateur) par de nombreuses personnes.
• Les programmes sont écrits pour fonctionner sur une “machine nue”, puisque la totalité du logiciel est chargé par l’amorce. On dit aussi que l’on a un fonctionnement en autonome (stand alone en anglais).
Notons que le mode d’utilisation des micro-ordinateurs individuels s’apparentent à celui-ci, avec remplacement des cartes par les disquettes. La fonctionnalité a néanmoins été améliorée, et les programmes ne fonctionnent plus tout à fait sur une machine nue.
Le moniteur d’enchaînement des travaux (1955)
L’émergence des supports magnétiques (bandes initialement) a tout d’abord permis la conservation des programmes binaires importants sur ce support. Il a fallu alors définir des outils spécifiques de gestion de ces périphériques, pour permettre aux utilisateurs de retrouver facilement ces programmes. Simultanément, pour améliorer la rentabilité des machines, on a imaginé l’introduction du moniteur d’enchaînement des travaux, qui est un programme particulier activé automatiquement à la fin de l’exécution de chaque programme utilisateur, et dont le but est d’assurer alors la lecture en mémoire et le lancement du programme utilisateur suivant (figure 1.2).
Dans ce contexte, l’utilisateur prépare un paquet de cartes représentant son travail (job en anglais), et qui est constitué d’une ou plusieurs étapes (steps). Chaque étape correspond à un programme dont l’exécution est demandée par l’utilisateur sur un jeu de données particulier. Ce programme peut être un des utilitaires conservés sur bande, tel qu’un compilateur, ou le résultat d’une étape précédente mémorisé temporairement sur bande.
Le moniteur d’enchaînement joue le rôle du programme de l’amorce logicielle vu en 1.1.1, et assure le chargement et l’exécution successifs de chacun des programmes définis par les étapes des travaux des différents utilisateurs. Pour cela trois concepts ont été introduits:
• Le langage de commande est interprété par le moniteur, et permet à l’utilisateur de préciser en quoi consiste le travail. C’est donc le moyen de communication entre l’utilisateur et le moniteur d’enchaînement des travaux.
• La protection des données et des instructions du moniteur est nécessaire pour éviter qu’un programme utilisateur ne vienne les détruire.
• Le superviseur d’entrées-sorties est un ensemble de sous-programmes résidents en machine, qui assurent le contrôle des opérations d’entrées-sorties des programmes des utilisateurs. Ce contrôle est nécessaire pour garantir que chaque travail d’un utilisateur ne sera pas perturbé par les actions intempestives des autres.
Ce mode de fonctionnement attire les remarques suivantes:
• L’utilisateur n’a plus accès directement à la machine, mais utilise les services d’un opérateur.
• Il y a enchaînement automatique des programmes.
• Le débit des travaux (throughput en anglais), c’est-à-dire le nombre de travaux par unité de temps, est amélioré.
• Le temps de réponse, c’est-à-dire le délai qui sépare le moment où l’utilisateur donne son programme et celui où il obtient le résultat, est augmenté.
• L’utilisateur ne peut plus agir sur son programme durant l’exécution.
L’ordinateur spécialisé d’entrées-sorties (1960)
Les opérations d’entrées-sorties relatives aux cartes et aux imprimantes sont, en général, longues par rapport aux performances des machines. Comme le moniteur d’enchaînement impose que ces opérations soient exécutées par le superviseur d’entrées-sorties, au lieu de l’être directement par le programme, celui-ci peut réaliser différemment ces opérations, pourvu que le résultat soit le même pour l’utilisateur. Aussi, pour améliorer la rentabilité de l’ordinateur de traitement, on a imaginé de transférer les cartes sur une bande, en utilisant un ordinateur spécifique et bon marché, et de faire lire cette bande, à la place des cartes, par le moniteur d’enchaînement des travaux. De même, les résultats d’impression sont transférés sur bande dans l’ordinateur principal, et la bande est ensuite lue par l’ordinateur spécifique pour être imprimée (figure 1.3).