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.

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:

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.

Fig 3.1. La chaîne de production de programmes.

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.