1
Évolution historique de l'utilisation des ordinateurs
A l'origine, les ordinateurs étaient utilisés
pour des besoins spécifiques, par une population réduite de
personnes qui connaissaient tous les aspects de leur exploitation. Des raisons
économiques, d'adéquation aux besoins, d'amélioration de
performances, etc..., ont entraîné une évolution de cette
exploitation. Cette évolution a conduit à l'introduction de
plusieurs concepts successifs. Un rappel historique permet la
présentation de ces concepts et leur justification.
1.1. Les systèmes purement séquentiels (1950-1960)
1.1.1. 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).
Fig. 1.1. Fonctionnement en programmes
autonomes.
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.
1.1.2. 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).
Fig. 1.2. Moniteur d'enchaînement des
travaux.
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.
1.1.3. 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).
Fig. 1.3. Traitement par lot avec
ordinateur spécialisé d'entrées-sorties.
Ce mode de fonctionnement attire les remarques
suivantes:
- Le débit des travaux est
amélioré.
- Le temps de
réponse est augmenté, car le transport des bandes n'est
effectué que lorsqu'un nombre important de travaux y est
mémorisé. On parle de train de
travaux.
1.2. L'introduction du parallélisme (1960-1965)
1.2.1. Les entrées-sorties tamponnées (1960)
Il est apparu très vite que la réalisation
matérielle d'une opération d'entrées-sorties par le
processeur de calcul conduisait à une mauvaise rentabilité de la
machine. Les concepteurs du matériel ont donc introduit des processeurs
spécialisés qui prenaient en charge ces opérations de
façon autonome (voir le chapitre suivant). Il était ainsi possible
de poursuivre les traitements pendant l'exécution de l'opération.
Ceci a permis de connecter de nouveau les périphériques de type
lecteur de cartes ou imprimante sur l'ordinateur principal, et de supprimer
l'ordinateur secondaire. Le superviseur d'entrées-sorties assure la
lecture des cartes dans une zone dédiée de mémoire
centrale, avant que le programme n'en ait effectivement besoin, permettant ainsi
de satisfaire immédiatement sa demande ultérieure. De même,
lorsque le programme demande une impression, celle-ci est remplacée par
une recopie dans une zone dédiée de mémoire centrale, le
superviseur assurant l'impression du contenu de cette zone
ultérieurement.
Ce mode de fonctionnement n'a été rendu possible
que par l'introduction du mécanisme d'interruption, permettant
à un dispositif extérieur d'arrêter momentanément le
déroulement normal d'un programme pour exécuter un traitement
spécifique. Nous reviendrons plus en détail sur ce
mécanisme dans le chapitre suivant. Par exemple, lorsque le lecteur de
cartes a fini le transfert du contenu de la carte dans la mémoire
centrale, il le signale au superviseur par le biais d'une interruption. Celui-ci
peut alors commander la lecture de la carte suivante dans un autre emplacement
mémoire. De même, l'imprimante signale au superviseur, par une
interruption, la fin de l'impression d'une ligne. Celui-ci peut alors commander
l'impression de la ligne suivante si elle est disponible.
Ce mode de fonctionnement attire les remarques
suivantes:
- Le temps de réponse est
amélioré, puisqu'il n'est plus nécessaire de remplir une
bande pour pouvoir la transférer depuis (ou vers) l'ordinateur secondaire
d'entrées-sorties.
- La rentabilité
du système est améliorée par la récupération
au niveau processeur de traitement des temps des opérations
d'entrées-sorties devenues autonomes.
- La
réservation de tampons d'entrées-sorties en mémoire
centrale est une solution coûteuse (surtout à l'époque
où les tailles de mémoire centrale étaient faibles par
rapport à celles que l'on trouve aujourd'hui!). L'évolution
naturelle est d'étendre ces zones sur disque (figure
1.4).
Fig. 1.4. Entrées-sorties
tamponnées.
1.2.2. La multiprogrammation (1965)
Les méthodes vues jusqu'alors, si elles
améliorent la rentabilité des machines, atteignent cependant leurs
limites. En effet, lorsqu'un programme s'exécute, il n'est pas possible
de supprimer complètement les temps des opérations
d'entrées-sorties. Le tamponnement, ainsi qu'il a été
introduit ci-dessus, n'apporte qu'une solution partielle, du fait de la taille
limitée du tampon. Par ailleurs, il n'est guère envisageable pour
les périphériques à accès aléatoire tels que
les disques. Les temps d'unité centrale laissés disponibles par un
programme pendant ses entrées-sorties, peuvent être
récupérés par d'autres programmes indépendants s'ils
sont également présents en mémoire centrale à ce
moment. C'est ce que l'on appelle la multiprogrammation (figure
1.5).
Fig. 1.5. Moniteur de
multiprogrammation.
Constatons tout d'abord que, pour mettre plusieurs programmes
simultanément en mémoire, il faut avoir de la place. La
multiprogrammation a pu être développée grâce à
l'augmentation de la taille des mémoires centrales conjointement à
une diminution considérable de leur coût.
La mise en œuvre de la multiprogrammation
nécessite le renforcement de certains mécanismes qui ont
déjà été présentés:
- La protection des données et des
instructions du moniteur doit maintenant être étendue aux
données et instructions d'un programme par rapport aux autres, de
façon à permettre l'isolation de chacun des utilisateurs dans un
univers partagé.
- Le superviseur
d'entrées-sorties doit contrôler l'accès aux ressources de
la machine, et assurer la gestion de ces ressources (allocation, contrôle,
restitution).
- Le mécanisme d'interruption
est au centre de l'allocation du processeur. Signalant la fin d'une
opération d'entrées-sorties, l'interruption a en
général pour effet de permettre au programme demandeur de
poursuivre son exécution (figure 1.6).
- La
notion de système d'exploitation apparaît avec la
nécessité de gérer l'ensemble du matériel et du
logiciel mis à la disposition d'utilisateurs
simultanés.
Fig. 1.6. Fonctionnement simplifié
de la multiprogrammation.
Ce mode de fonctionnement attire les remarques
suivantes:
- L'amélioration de la rentabilité
de la machine est obtenue en la partageant entre plusieurs programmes
simultanés, conduisant à une meilleure utilisation de l'ensemble
des ressources.
- Il est possible de s'abstraire de
la séquentialité originelle des travaux. Le système assure
le transfert sur disque des programmes dès qu'ils sont disponibles.
Lorsqu'il y a de la place libre en mémoire, il choisit l'un des travaux
sur disque en fonction de paramètres variés, et non plus dans
l'ordre d'arrivée. Il est ainsi possible de diminuer le temps de
réponse pour les travaux courts.
- Il est
possible de déporter les organes d'entrées-sorties du type cartes
et imprimantes, en les reliant à l'ordinateur central par des lignes
téléphoniques spécialisées. Les travaux qui sont
entrés par ce moyen sont traités de la même façon que
les autres, les résultats étant délivrés par le
système sur l'imprimante
déportée.
1.2.3. Le contrôle de procédés (1965)
Les ordinateurs peuvent aussi être
spécialisés pour le contrôle de procédés. Par
analogie avec ce qui précède, les interruptions vont permettre de
déclencher des programmes spécifiques de lecture d'informations
sur des capteurs, de mémorisation de ces valeurs, ou d'envoi de commandes
à l'extérieur. Lorsque aucune activité de ce type (travaux
en avant plan ou foreground en anglais) n'est à
exécuter, l'ordinateur peut être utilisé pour des travaux en
arrière plan (background en anglais). Les travaux en avant
plan correspondent aux activités du superviseur vues au paragraphe
précédent, alors que les travaux en arrière plan
correspondent aux travaux des utilisateurs (figure 1.7).
Fig. 1.7. Contrôle de
procédés industriels.
1.3. L'amélioration de l'interface homme-machine (1965-1980)
1.3.1. Le temps partagé (1965)
L'évolution qui ressort des étapes ci-dessus
conduit à un éloignement entre l'utilisateur et la machine. Il
était naturel que l'on cherche à retrouver certaines
fonctionnalités intéressantes de l'utilisation en portes ouvertes,
sans en avoir les inconvénients. Constatant qu'un utilisateur est
satisfait s'il passe beaucoup plus de temps à réfléchir au
travail qu'il va demander qu'à attendre le résultat de ce travail,
ce temps de réflexion peut être mis à profit par
l'ordinateur pour répondre aux besoins des autres utilisateurs.
L'ensemble des ressources de la machine est partagé entre un ensemble
d'utilisateurs, chacun d'eux ayant l'impression qu'il a la machine pour lui tout
seul (figure 1.8).
La conception d'un système en temps partagé a
nécessité l'introduction de l'horloge temps réel, en plus
des mécanismes déjà vus.
Fig. 1.8. Système en temps
partagé.
- L'horloge temps réel est un dispositif
matériel externe qui provoque des interruptions à des instants
réguliers. Ces interruptions sont au centre de l'allocation du
processeur, et permettent de répartir équitablement le temps du
processeur entre les différents programmes
utilisateurs.
- Le mécanisme des
interruptions et la notion de superviseur permet la gestion d'un ensemble de
terminaux.
- La multiprogrammation permet
d'optimiser l'utilisation de l'unité centrale pendant les
opérations d'entrées-sorties des programmes des
utilisateurs.
En réalité, c'est un peu plus
complexe, dans la mesure où il n'est pas raisonnable de laisser un
programme d'un utilisateur en mémoire pendant que cet utilisateur
réfléchit, car ce temps de réflexion est souvent de l'ordre
de 30 secondes. En général il est préférable de
mémoriser ce programme sur disque pendant ce temps, et de le rappeler en
mémoire lorsque nécessaire. Ceci a été rendu
possible par des techniques de va-et-vient (swapping en anglais)
ou de mémoire virtuelle.
Par ailleurs le grand nombre d'utilisateurs ayant des
activités voisines implique qu'un même programme peut être en
cours d'exécution pour plusieurs utilisateurs à la fois (un
compilateur par exemple). Ceci a conduit à la conception de programmes
réentrants: un seul exemplaire du programme capable de traiter en
même temps plusieurs jeux de données.
1.3.2. Le transactionnel (1970)
Le temps partagé s'adresse plutôt à
l'utilisateur qui désire concevoir, mettre au point et utiliser des
programmes. Le développement des terminaux a conduit à
s'intéresser aux utilisateurs qui désirent exploiter des
applications spécifiques orientées vers la saisie et la
consultation d'informations conservées dans des fichiers. Il ne s'agit
plus alors de mettre à leur disposition une machine, mais de leur
permettre d'effectuer sur des données, qu'ils ont mises en commun, des
opérations préprogrammées qui demandent un temps
d'unité centrale assez bref. Ceci conduit à gérer
l'ordinateur et les terminaux de façon spécifique pour
améliorer les temps de réponses vus de l'utilisateur.
Par rapport aux concepts évoqués jusqu'alors, le
partage d'informations est ici fondamental, alors qu'il était
secondaire dans les modes précédents. Ce partage peut couvrir les
données proprement dites, mais aussi les instructions qui
décrivent les opérations. Pour gérer ce partage et garder
la cohérence de ces données partagées, on introduit la
notion de transaction.
De plus la conservation des données, quoi qu'il arrive,
est aussi exigée par les utilisateurs. Il faut donc mettre en œuvre
des mécanismes de sauvegarde appropriés.
1.3.3. Les stations de travail (1980)
L'abaissement des coûts des matériels a permis la
conception d'ordinateurs individuels dont les performances avoisinnent celles
des ordinateurs de moyenne puissance des années 1970-1980. Ceci n'a pas
eu pour conséquence la remise en cause des concepts de base des
systèmes d'exploitation. L'utilisateur, habitué à une
fonctionnalité fournie sur les gros systèmes, désire
retrouver cette fonctionnalité agrémentée d'une meilleure
convivialité sur sa machine personnelle.
D'un point de vue général, le poste de travail a
d'abord été conçu de façon autonome, utilisé
par une seule personne. En ce sens, le système lui-même avait des
fonctionnalités simplifiées proches de celles des premiers
systèmes. L'exemple type est MSDOS. Les performances de mémoires
centrales ont ensuite permis de définir directement par logiciel et point
par point, le contenu de l'image qui est affichée à l'écran
25 fois par secondes. Les fonctionnalités du système se sont alors
naturellement étendues vers les aspects graphiques et
l'interactivité au moyen de la souris, avec l'apparition des premiers
MacIntosh au début des années 1980. Ceux-ci étaient
déjà organisés en un petit réseau local permettant
le partage de fichiers et d'imprimantes entre les utilisateurs. Par la suite,
les recherches poursuivies au MIT ont conduit à la sortie d'un produit
X-Window, à la fin des années 1980, qui permettait la
séparation entre le programme de gestion de l'écran graphique
situé sur une machine et celui de l'application elle-même de
l'utilisateur situé sur une autre machine, la coopération entre
les deux programmes passant par le réseau, selon un mode
client-serveur. On appelle ainsi le mode de fonctionnement où
l’un des programmes, appelé client, ici l’application,
demande un traitement spécifique (service) à l’autre,
appelé le serveur, ici la gestion de l’écran.
La généralisation des postes de travail en
réseau et l’interconnexion des réseaux ont conduit au
world wide web ou toile mondiale, où un programme, appelé
navigateur, installé sur le poste de travail de
l’utilisateur, permet à celui-ci d’obtenir, depuis des
serveurs situés n’importe où, des informations qui sont
mises en page par le navigateur.
Deux aspects importants découlent de ces
utilisations:
- L'interface homme-machine doit permettre
une grande facilité d'utilisation par un non-spécialiste. La
puissance de calcul locale permet de satisfaire les besoins
d'affichage.
- La communication entre
ordinateurs distants est une nécessité, pour assurer le partage
d'un ensemble de ressources matérielles et logicielles entre les
différentes stations de travail. Elle conduit à la conception de
systèmes répartis, construits autour de réseaux
locaux.
1.4. Conclusion
+ L'amorce (bootstrap)
est un petit programme qui est chargé en mémoire en une seule
opération d'entrée lors de la mise en route de l'ordinateur, et
dont l'exécution permet le chargement et le lancement d'un programme plus
important.
+ Un programme
autonome (stand alone) est un programme capable de s'exécuter sur une
machine nue.
+ Un moniteur
d'enchaînement des travaux est un programme spécifique qui assure,
à la fin d'exécution d'un programme utilisateur, le chargement et
l'exécution du suivant de façon automatique.
+ Le langage de
commande permet à l'utilisateur de définir la suite des programmes
dont il veut voir l'exécution.
+ Le superviseur
d'entrées-sorties est un ensemble de sous-programmes qui assure le
contrôle et la bonne exécution des entrées-sorties pour le
compte des programmes des utilisateurs.
+ Le mécanisme
d'interruption est le mécanisme qui permet à un organe
matériel externe d'interrompre le déroulement normal du processeur
pour lui demander d'exécuter un travail spécifique et
bref.
+ La
multiprogrammation consiste à mettre plusieurs programmes en
mémoire centrale au même moment de façon à pouvoir
exécuter l'un d'entre eux pendant que les autres sont en attente de la
fin d'une entrée-sortie.
+ La protection
mémoire est un dispositif matériel qui permet d'empêcher un
programme d'accéder en mémoire à des données qui ne
lui appartiennent pas.
+ Le temps
partagé consiste à partager dans le temps les ressources de la
machine entre les utilisateurs, de telle sorte que chacun d'eux ait l'impression
d'avoir la machine pour lui seul.
+ Le système
d'exploitation est le logiciel chargé de gérer l'ensemble du
matériel et du logiciel à la disposition des utilisateurs et
qu'ils se partagent.
+ Le débit des
travaux est le nombre moyen de travaux exécutés par la machine en
un temps donné.
+ Le temps de
réponse est le délai qui sépare le moment où
l'utilisateur soumet sa commande et le moment où il obtient le
résultat.