3
Généralités sur les systèmes d'exploitation
Le premier chapitre a montré l'évolution qui
s'est produite sur l'utilisation de l'ordinateur, et l'introduction progressive
de programmes généraux permettant de contrôler son
utilisation. Cette évolution a été parfois mal ressentie
par les utilisateurs qui voyaient souvent les contraintes et non les avantages.
Ceux-ci ont “espéré” de l'abaissement des coûts
du matériel la suppression du système d'exploitation. Le
deuxième chapitre a mis en évidence la complexité du
matériel, ainsi que sa diversité. Il ne viendrait à
l'esprit de personne, actuellement, de demander la suppression du système
d'exploitation. Il s'agit de le rendre apte à répondre aux
véritables besoins des utilisateurs et de privilégier les services
dont ces derniers ont besoin.
3.1. Les différents types de systèmes d'exploitation
Lors de la phase de conception d'un système
d'exploitation, il est nécessaire de faire de nombreux choix, choix
d'algorithmes, choix de politique de gestion, choix de paramètres, etc...
Ces choix sont guidés par la nature de l'utilisation du système,
et conduisent à des solutions de compromis.
3.1.1. Les modes d'utilisation
Le premier chapitre a montré plusieurs modes
d'utilisation de l'ordinateur.
- Le mode interactif correspond au cas
où l'utilisateur dialogue avec l'ordinateur: il lance des commandes dont
la durée d'exécution est brève, et dont il désire
une réponse en quelques secondes, pour pouvoir décider de la
suivante, après un temps de réflexion plus ou moins long. Ce mode
se subdivise en plusieurs sous modes suivant les
applications:
- Le mode temps
partagé: l'utilisateur doit pouvoir utiliser toutes les
fonctionnalités de l'ordinateur, comme s'il l'avait pour lui tout seul.
Il s'agit surtout de lui permettre de créer, tester, modifier, et
exécuter des programmes quelconques.
- Le
mode transactionnel: l'utilisateur exécute des programmes
prédéfinis, pour consulter ou mettre à jour des
données partagées entre de nombreux
utilisateurs.
- Le mode conception
assistée: l'utilisateur se sert de toute la puissance de l'ordinateur
pour l'aider dans un travail complexe de conception. L'aspect graphique est
souvent ici une caractéristique essentielle, et est une des raisons du
besoin de puissance de calcul, le résultat d'une commande étant
une modification d'un dessin sur
l'écran.
- Le mode
différé correspond au traitement par lot. Dans ce mode,
l'utilisateur fournit un travail dont il viendra chercher le résultat
quelques heures après. Le travail peut être conséquent, et
nécessiter de disposer de plusieurs ressources pendant un temps
important, comme par exemple, du temps de processeur central, de l'espace
mémoire ou des bandes
magnétiques.
- Le mode temps
réel correspond au contrôle de procédés
industriels. L'ordinateur a en charge de prendre des mesures au moyen de
capteurs externes, pour surveiller un procédé, et lui envoyer en
retour des commandes pour en assurer la bonne marche. Ces commandes doivent
être envoyées dans des intervalles de temps qui sont imposés
par le procédé lui-même, pour garantir son bon
fonctionnement.
3.1.2. Les critères de choix
Les critères qui permettent de caractériser
l'adéquation du système au mode de fonctionnement
désiré, et donc d'induire les choix lors de la conception du
système peuvent s'énoncer de la façon suivante:
- Le temps de traitement d'une commande
pourrait se définir comme le temps que mettrait l'ordinateur pour
exécuter la commande s'il ne faisait que cela. En général,
ce temps est décomposé en un temps de processeur et un temps
d'entrées-sorties. Il est normalement assez bref dans le mode interactif
(inférieur à la seconde, par exemple); il est souvent connu dans
le sous mode transactionnel, mais il est a priori imprévisible dans les
sous modes temps partagé et conception assistée. Dans le mode
différé, ce temps peut être beaucoup plus important, de
l'ordre de plusieurs dizaines de minutes, mais sa valeur maximale est souvent
définie par le demandeur. Enfin, dans le mode temps réel, il est
en général très bref, quelques dizaines de millisecondes,
et connu, de façon assez
précise.
- Le temps de réponse
est le délai qui sépare l'envoi de la commande par le demandeur,
de la fin d'exécution de la commande. Ce temps ne peut,
évidemment, être inférieur au temps de traitement. Ce n'est
pas une conséquence de la demande seule, mais le résultat du
comportement du système. C'est l'un des critères de jugement de
l'utilisateur, et donc une contrainte que doit respecter le système pour
satisfaire ce dernier. Si, par nature, un temps de réponse de plusieurs
heures est acceptable pour le mode différé, par contre
l'utilisateur, en mode interactif, attend normalement des temps de
réponse de l'ordre de la seconde. Le sous-mode conception assistée
peut parfois impliquer des temps de réponse beaucoup plus bref (suivi de
souris par exemple). Le mode temps réel impose des contraintes souvent
strictes sur le temps de réponse qui peut être aussi bien de
quelques millisecondes, que de quelques
minutes.
- Le débit (en Anglais
throughput) est le nombre de commandes qui sont exécutées
par unité de temps. C'est une mesure de l'efficacité de l'ensemble
du système, matériel et logiciel, qui est surtout
intéressant pour le responsable du service informatique, car il permet de
calculer indirectement la rentabilité du système, tous
utilisateurs confondus. Il dépend évidemment de la nature des
commandes demandées par les utilisateurs. Dans le mode transactionnel, le
débit est défini par le nombre de transactions par seconde ou
Tps. Dans le mode différé, le débit est
défini par le nombre de travaux à
l'heure.
- Les moments d'arrivée des
commandes déterminent la façon dont les commandes sont
demandées au système. C'est une caractéristique de
l'utilisateur. On a constaté, par exemple, qu'en mode temps
partagé un utilisateur réfléchissait environ 30 secondes
entre la réponse à une commande et l'envoi de la commande
suivante. Cette durée peut être plus courte en mode transactionnel,
lorsqu'il s'agit par exemple de la saisie d'un ensemble d'opérations
comptables. A l'opposé, le mode différé signifie que chaque
travail consiste lui-même en l'enchaînement d'une suite de commandes
prédéfinies, permettant une planification des
travaux.
- Le mode de communication entre le
demandeur et l'ordinateur impose des contraintes supplémentaires sur le
système, dès que l'on désire introduire une distance entre
les deux. Nous avons vu dans le chapitre précédent que la
communication entre machines faisait intervenir un protocole normalisé
plus ou moins complexe.
- La nature du partage
des ressources entre les demandeurs doit être clairement
appréhéndée, car elle a une influence directe sur le
comportement du système. Par exemple, le processeur est une ressource
effectivement partagée entre les utilisateurs. Le système doit
permettre une utilisation simultanée (à l'échelle de temps
humaine) de cette ressource. Par contre une imprimante, ou un dérouleur
de bandes magnétiques ne peuvent être attribués qu'à
un seul utilisateur à la fois, pendant des périodes de temps assez
longues. Le partage des ressources “logicielles” laisse souvent plus
de liberté de choix suivant le mode d'utilisation. Notons tout d'abord
que toute donnée peut être consultée par un nombre
quelconque d'utilisateurs sans difficulté. Les problèmes
surgissent avec les modifications d'une même donnée par plusieurs.
En mode différé, le partage de données est obtenu
simplement en attribuant exclusivement au travail l'ensemble des données
dont il a besoin. Il en va souvent de même en mode temps partagé ou
en mode conception assistée. En mode transactionnel, il est par contre
impératif de permettre à de nombreux utilisateurs de pouvoir
consulter ou modifier une même donnée, qui doit alors
apparaître comme utilisée simultanément par tous ces
utilisateurs. Par ailleurs, dans ce mode, il y a souvent beaucoup d'utilisateurs
exécutant le même “programme”, justifiant le partage de
la mémoire centrale entre les
utilisateurs.
3.1.3. Système général ou spécialisé
Certains systèmes ont été conçus
pour satisfaire le plus grand nombre de besoins, tout en privilégiant
légèrement l'un des modes.
Par exemple, Multics (Bull) ou VMS (Dec) privilégient
le mode temps partagé, tout en étant acceptable pour le
transactionnel ou le différé; Multics ne tournant que sur grosse
machine (DPS-8 spécial) est mal adapté aux modes conception
assistée ou temps réel, alors que VMS peut être
configuré sur des machines de taille moyenne pour répondre
à peu près aux besoins de la conception assistée ou du
temps réel. De même UNIX privilégie sutout le temps
partagé; sa taille (initialement petite!) et sa disponibilité sur
de nombreux matériels permettent de l'adapter aux besoins de la
conception assistée. On ne peut le considérer comme adapté
au temps réel, même s'il est plus facile que dans bien d'autres
systèmes, d'y incorporer des “pilotes de
périphériques”, c'est-à-dire des sous-programmes de
gestion de périphériques.
A l'opposé, GCOS3 (Bull) ou MVS (IBM) sont des
systèmes orientés d'abord vers le mode différé. Sur
MVS, les autres modes sont obtenus par le biais de sous systèmes
spécialisés, tels que TSO pour le temps partagé, CICS ou
IMS pour le mode transactionnel.
Le système VM (IBM) se place de façon
différente. Il s'agit en fait d'un noyau de système qui
émule un ensemble de machines sur lesquelles on peut faire
exécuter des systèmes particuliers. Par exemple, CMS est un
système tournant sous VM, qui privilégie le mode temps
partagé; il est d'ailleurs plus apprécié que TSO sous
VMS.
Pour certaines applications, cette universalité du
système d'exploitation n'est pas adaptée, ce qui conduit alors
à concevoir un système spécialisé pour l'un des
modes d'utilisation. Ceci est particulièrement vrai pour le temps
réel ou le contrôle de procédés, pour lequel il
existe beaucoup de systèmes dédiés: iRMX86 de Intel, SPART
sur SPS-7 de Bull, RT-11 de Dec, etc... Il en est ainsi également pour
certaines applications transactionnelles où le nombre de terminaux est
particulièrement important, comme, par exemple, pour les systèmes
de réservation de places pour les transports aériens ou
terrestres. Enfin, la conception assistée demande souvent une puissance
de calcul importante, et conduit à un poste de travail qui est
déjà un ordinateur doté d'un système d'exploitation;
il s'agit souvent d'un Unix configuré spécialement pour ces
besoins.
Sur les ordinateurs personnels, par définition, il n'y
a qu'un utilisateur à la fois. Il est donc naturel que leur
système mette l'accent sur le mode interactif. MS-DOS, Windows 95/98 ou
MacOS en sont de bons exemples. Cependant, si à l'origine, la faible
puissance de ces ordinateurs justifiait la simplicité du système,
ce n'est plus le cas aujourd'hui, et ces systèmes se sont
complexifiés dans les aspects interfaces. Cependant, les limites de ces
systèmes, qui ne gèrent pas le partage du processeur entre
plusieurs activités, sont mises en évidence par la concurrence des
stations de travail, de prix très abordable, dotées souvent d'un
système de type UNIX, LINUX ou Windows NT.
3.2. Les services offerts par le système
Nous nous intéressons ici au point de vue de
l'utilisateur dans son travail de conception et de réalisation d'une
application particulière.
3.2.1. La chaîne de production de programmes
Nous avons vu dans le chapitre précédent que le
langage de l'ordinateur était binaire et rudimentaire. Il faut donc tout
d'abord lui fournir un ensemble d'outils qui lui permette de construire cette
application dans un langage plus agréable pour lui; ce sont les divers
constituants de la chaîne de production de programmes. Certains
d'entre eux seront étudiés plus en détail dans les
chapitres suivants.
- L'interpréteur de commande est le
premier outil fondamental. C'est lui qui va permettre à l'utilisateur de
se faire connaître de l'ordinateur (login), et de lui demander
l'exécution des programmes préenregistrés, au fur et
à mesure de ses besoins. Certains systèmes offrent plusieurs
interprèteurs permettant de satisfaire des utilisateurs aux besoins
différents.
- Les éditeurs de
texte permettent la création et la modification du texte des
programmes. Les premiers découpaient le texte en lignes, et permettaient
les modifications des textes comme on le faisait avec des cartes
perforées, en utilisant des terminaux de possibilités
réduites. La deuxième génération découpe le
texte en pages, affiche une page sur l'écran dont est doté le
terminal et permet de se déplacer dans le texte à la position
voulue pour faire les corrections visibles immédiatement sur
l'écran. Dans chacun des cas, le texte manipulé est une suite de
caractères quelconques, l'éditeur permettant parfois la
manipulation par caractère, par mot, par ligne ou par paragraphe. La
dernière génération tente de faciliter le travail du
programmeur en tenant compte du langage utilisé: l'éditeur permet
alors la manipulation d'entités structurelles du langage, telles que les
instructions, les blocs, les sous-programmes, les déclarations, etc... On
les appelle éditeurs syntaxiques, car les manipulations
autorisées sont guidées par la syntaxe du langage de programmation
de l'utilisateur.
- Les compilateurs,
interpréteurs ou assembleurs sont des programmes
particuliers, fournis en général par le constructeur de la
machine, qui permettent la traduction d'un programme écrit dans un
langage donné, plus adapté à l'homme, dans le langage de la
machine.
- L'éditeur de liens et le
chargeur sont également des programmes fournis par le
constructeur. Les logiciels professionnels sont souvent de bonne taille, et ne
peuvent être manipulés comme un tout. Il est nécessaire de
les décomposer en modules qui sont des morceaux de programmes qui
peuvent être compilés séparément les uns des autres.
L'éditeur de liens permet de rassembler de tels modules
déjà compilés et d'en faire un programme exécutable.
Le chargeur est le programme qui assure la mise en mémoire centrale d'un
programme exécutable, et d'en lancer l'exécution (figure
3.1).
Fig 3.1. La chaîne de production de
programmes.
- Des outils complémentaires sont souvent
également fournis pour faciliter le travail du programmeur, tels que un
metteur au point qui facilite le test des programmes, paragrapheur
qui met en forme les textes sources de programmes, outil de
références croisées qui permet de connaître
les liens entre les modules, bibliothécaire qui gère les
modules déjà compilés,
etc...
3.2.2. Le programme et les objets externes
Nous avons vu également que les connexions avec les
périphériques étaient complexes et variées. Bien des
applications n'ont pas pour but d'accéder à ces
périphériques en tant que tel, mais pour pouvoir mémoriser
des informations dont la durée de vie excède la durée
d'exécution du programme, ou pour pouvoir communiquer avec
l'extérieur de la machine. Il faut donc lui fournir des moyens de
simplifier les accès à ces périphériques, en lui
proposant des mécanismes uniformes d'accès à des objets
externes aux programmes.
Les chapitres 7 à 11 montreront quels sont les
problèmes, et comment ils sont résolus habituellement. Il s'agit
de fournir à l'utilisateur, d'une part, des outils de gestion de ces
objets externes sous forme de programmes spécifiques, mais aussi, d'autre
part, des sous-programmes d'accès au contenu de ces objets à
l'intérieur de ses propres programmes.
3.2.3. Le programme et son environnement physique
Le matériel dont on dispose est figé et a
certaines caractéristiques plus ou moins faciles à utiliser. Le
programmeur a, par ailleurs, des besoins inhérents à l'application
qu'il doit réaliser, et ne peut configurer strictement le matériel
à ses besoins, car ceux-ci varient d'une application à l'autre. Le
problème est alors de fournir à l'utilisateur une machine
virtuelle adaptée à ses besoins. Le terme virtuel doit ici
être compris essentiellement par opposition à réel,
c'est-à-dire que notre machine virtuelle est obtenue par substitution
totale ou partielle de composants matériels par des composants logiciels.
L'un des premiers aspects est en particulier d'assurer l'indépendance des
usagers de la machine réelle, en gérant implicitement les
ressources communes (processeur, mémoire, etc...). Il est possible
également de “simuler” des ressources qui n'existent pas ou
qui sont insuffisantes, de façon à adapter la configuration de la
machine virtuelle aux besoins. Ceci sera développé dans les
chapitres 12 à 14.
3.3. Architecture d'un système
La figure 3.2 montre l'architecture habituelle d'un
système informatique. Dans le premier niveau, on trouve la machine nue,
c'est-à-dire les composants matériels. Le deuxième niveau
assure les fonctions premières de gestion des ressources physiques, et
sert d'interface entre le logiciel et le matériel. Le troisième
niveau définit les fonctionnalités du système
lui-même. Les niveaux supérieurs ne sont plus partie
intégrante du système proprement dit. Ce sont donc des programmes
plus ou moins fortement liés au système. En particulier le
quatrième niveau rassemble l'ensemble des outils qui contribuent à
la chaîne de production de programmes. Le cinquième niveau regroupe
l'ensemble des programmes d'application, ainsi que des utilitaires courants qui
sont en fait des programmes d'application suffisamment généraux
pour ne pas être dédiés à une application
donnée, comme par exemple les utilitaires de tri-fusion ou de copie de
fichiers. Les utilisateurs se trouvent au niveau supérieur (6).
Fig. 3.2. Architecture
générale d'un système informatique.
3.4. Conclusion
+ Il y a plusieurs
modes différents d'utilisation de l'ordinateur: le mode interactif, le
mode différé, ou le mode temps réel. Le mode interactif
peut lui-même se décomposer en mode temps partagé, mode
transactionnel et mode conception assistée.
+ Chacun des modes a
ses propres caractéristiques, qui se distinguent par le temps de
traitement, le temps de réponse, les moments d'arrivée, le mode de
communication et la nature du partage des ressources.
+ Les systèmes
d'exploitation peuvent être conçus pour satisfaire le plus grand
nombre de besoins, tout en privilégiant l'un des modes, ou être
dédiés à un besoin spécifique, lorsque les
contraintes sont trop fortes.
+ La chaîne de
production de programmes est l'ensemble des outils qui concourrent à la
réalisation des programmes. Elle comprend principalement
l'interpréteur de commandes, les éditeurs de texte, les
traducteurs, l'éditeur de liens, le chargeur, etc...
+ Les objets externes
sont des objets manipulés par les programmes, mais dont la durée
de vie s'étend au-delà de la durée d'exécution d'un
programme unique.
+ L'environnement
physique des programmes doit être adapté par le système pour
fournir à l'utilisateur une machine virtuelle dont la configuration
correspond à ses besoins.