Nature et rôle du système d’exploitation
Le système d’exploitation, dont les exemples les mieux connus par leur nom sont Android, Windows ou Linux, est un logiciel destiné à piloter et coordonner les différents éléments constitutifs d’un ordinateur (ou d’un téléphone, c’est la même chose) et à en faciliter l’usage par un être humain. Ce logiciel a donc deux faces : une que voit l’utilisateur, auquel il présente sur un écran des images qui sont des métaphores des objets techniques qui agissent en coulisse, et à qui il permet d’agir sur ces objets par l’intermédiaire de la souris et du clavier, tandis que l’autre face, de loin la plus complexe, mais invisible, assure la mise en œuvre cohérente et efficace des dispositifs techniques internes de la machine, ainsi que les interactions avec le réseau, les appareils de mémoire externe, les micro et haut-parleurs, etc.
Autant dire que sans système d’exploitation, un ordinateur ne peut même pas démarrer. Et comme ces objets sont omniprésents, il n’est pas inutile d’avoir une idée de leur nature et de leur fonctionnement, ce pourquoi j’ai écrit un livre que j’espère compréhensible par un public assez large. Le public naturel de ce livre me semble situé parmi les scientifiques de disciplines autres que l’informatique, et je crois qu’il aurait tout à fait sa place dans les enseignements d’informatique au lycée, que prévoient les nouveaux programmes. La dernière édition, que je viens de mettre à jour, est disponible sur Amazon, ou en téléchargement libre sur mon site (https://laurentbloch.net/MySpip3/Systeme-et-reseau-histoire-et-technique).
Complexité des systèmes d’exploitation
Le système d’exploitation est sans doute un des objets les plus complexes créé par le cerveau humain. C’est un logiciel, soit une entité abstraite constituée d’idées. Essayons d’estimer la quantité d’idées significatives d’un tel logiciel : Jean-Raymond Abrial, co-auteur du logiciel de pilotage de la ligne de métro automatique n° 14 du réseau parisien, a trouvé pour 100 000 lignes de code 30 000 obligations de preuve, la plupart satisfaites automatiquement par le système ; il resta 2 500 démonstrations rétives à l’automatisation, à effectuer par les ingénieurs, ce qui demanda plusieurs mois de travail. Il est possible de dire que ce logiciel comporte 30 000 idées, dont 2 500 idées difficiles, ou originales, pour 100 000 lignes de texte, soit une densité d’une idée significative pour 40 lignes. Sachant que la taille du noyau du système d’exploitation Linux est de l’ordre de 20 000 000 de lignes, si nous appliquons ce ratio, il comporte 500 000 idées significatives. Évidemment nous supposons ici que les complexités algorithmiques des ces deux systèmes soient du même ordre, ce qui semble plausible, mais je n’entrerai pas dans ces considérations..
Un ingénieur spécialiste de l’intégration de grands systèmes industriels m’a donné les indicateurs suivants, pour lesquels, par exemple, le type boulon est un objet, et chaque boulon particulier de ce type une instance de l’objet boulon. Airbus A380 : 150 000 objets, 1 200 000 instances. Une voiture : 6 000 objets, 15 000 instances. N’accordons pas à ces chiffres plus d’importance qu’il ne convient, ils sont de toute façon approximatifs et contestables, mais leur comparaison n’est pas déraisonnable. Ajoutons que les avions et voitures contemporains comportent au moins quelques dizaines de systèmes d’exploitation à bord.
Une autre façon de voir les choses, c’est le volume de la documentation. Au début des années 1970 je suis entré dans l’équipe système centrale de l’Insee, à l’époque équipée d’ordinateurs IBM 360. En tant que bizuth je fus chargé de gérer la documentation du système, à l’époque entièrement sur papier et microfiches, avec comme avantage un grand bureau à cause de la taille nécessaire de la bibliothèque : une trentaine de mètres linéaires. Chaque semaine je recevais une vingtaine de mises à jour, sous la forme de feuilles destinées à remplacer dans chaque brochure les pages périmées. Les gens plus jeunes qui n’ont connu que le Web et les moteurs de recherche auront du mal à mesurer le progrès depuis cette époque, mais l’avantage de ce système manuel fastidieux était que j’avais une connaissance quasiment physique du système et de l’évolution plus ou moins rapide de ses différents composants.
Il faut comprendre quand même « comment ça marche »
Le système d’exploitation joue un rôle si crucial dans le monde contemporain, où il manifeste une telle ubiquité, qu’il est hors de question, pour tout humain responsable de lui-même et de la société, de tout ignorer de son fonctionnement. Lors de la précédente révolution industrielle, mon père et mon grand-père, pourtant de formation purement littéraire, se donnaient la peine de comprendre la machine à vapeur, la centrale hydro-électrique, le four Bessemer, le moteur à combustion interne et j’en passe, je suis d’autant plus déçu de voir qu’aujourd’hui des gens qui occupent des postes de responsabilité dans les entreprises ou dans l’administration se piquent de ne rien comprendre à l’informatique. Alors j’ai écrit ce livre pour essayer de combler ce gouffre d’ignorance, ou tout au moins y contribuer.
Aujourd’hui, il n’y a guère que trois familles de systèmes d’exploitation : z/OS pour les mainframes IBM, Windows de Microsoft (soit dit en passant héritier putatif de VMS de Digital Equipment, par recrutement de son concepteur principal David Cutler), et Unix. On notera que la famille Unix englobe Linux, macOS, iOS, Android, FreeBSD, NetBSD, OpenBSD et quelques autres. La conception de z/OS remonte à 1964 (alors sous le nom OS/360), celle de VMS-Windows à 1977, celle d’Unix à 1969. Certes, chacun de ces systèmes a connu d’innombrables perfectionnements depuis le milieu des années 1960 : mémoire virtuelle, extension de l’espace d’adressage, interfaces graphiques, réseau, etc. Mais la philosophie générale de chacun est très stable. Il y a quarante ans que je n’ai pas touché à un système OS/360, mais lorsque j’ai écouté il y a quelques mois un exposé sur la sécurité de z/OS je me suis retrouvé dans un univers extrêmement familier.
Pourquoi le monde des systèmes d’exploitation est-il si stable ?
L’écriture de mon livre et sa mise à jour continue depuis la première édition de 2003 ont été grandement facilitées par la grande stabilité technique des systèmes d’exploitation pendant cette période, et par leur regroupement en trois familles. Cette stabilité n’avait d’égale que celle de l’architecture des ordinateurs : aujourd’hui il y a trois familles de processeurs, Intel x86, ARM et PowerPC, avec des marchés de niche, par exemple MIPS pour certains matériels réseau et parce que les industriels chinois en ont acheté la licence il y a longtemps.
Il n’en allait pas de même lors des périodes précédentes, et cette situation n’est pas forcément durable.
Si l’on pense aux décennies 1960-1970-1980, il y avait une variété considérable tant des architectures matérielles que des systèmes d’exploitation. Il suffit pour s’en convaincre de lire l’excellent ouvrage collectif Systèmes d’exploitation des ordinateurs publié en 1975 par une équipe baptisée CROCUS : c’est aujourd’hui un livre d’histoire passionnant, avec aussi beaucoup d’idées encore d’actualité, et de précieuses mises au point conceptuelles. Surtout au début, cette prolifération était due au moins en partie aux tâtonnements d’une technologie débutante, mais dès les années 1970 pratiquement toutes les solutions en usage aujourd’hui existent déjà : interruptions, multiprogrammation, mémoire virtuelle, machines virtuelles, réseaux à commutation de paquets, etc. La dernière vraie révolution architecturale remonte à la toute fin des années 1970, avec les processeurs RISC (Reduced Instruction Set Computer), qui vont dominer les années 1980 et 1990 (ils reviennent aujourd’hui au premier plan grâce aux téléphones, tous équipés de processeurs d’architecture ARM).
Pendant toute cette période, la recherche de puissance va stimuler la création d’architectures originales, SIMD (Single Instruction Multiple Data) et MIMD (Multiple Instructions Multiple Data), destinées à dépasser les limites de l’architecture de von Neumann en permettant à l’ordinateur de faire plusieurs choses à la fois [1]. SIMD survit dans les cartes graphiques (GPU), de plus en plus utilisées pour tout autre chose que le graphisme, notamment pour les calculs d’algèbre linéaire et maintenant pour l’IA. Les réalisations MIMD les plus spectaculaires furent les Connection Machines de Thinking Machines Corporation (on notera la modestie de la raison sociale).
Le défaut des architectures SIMD et surtout MIMD, c’est que leur programmation est compliquée, que ce soit pour le système d’exploitation ou pour les applications, elle remet en cause les connaissances des programmeurs. Alors, pendant les cruelles années 1990, où l’essor des microprocesseurs devint irrésistible, s’il fallait deux ou trois ans pour arriver à programmer sa Connection Machine, pendant ce délai les progrès des microprocesseurs standard avaient permis d’obtenir les mêmes performances par les méthodes classiques enseignées dans toutes les écoles. D’où la disparition de Thinking Machines Corporation (il faut dire que comprendre l’organisation physique de ces machines était déjà un vrai casse-tête).
Quant aux processeurs RISC, tels que MIPS, PA-RISC, Sparc, Alpha, Power, etc., bien plus élégants et plus simples que l’odieux Intel x86 (d’architecture CISC, Complex Instruction Set Computer), ils furent victimes des jeux vidéo et de la bureautique : dès que l’ordinateur personnel devint un objet de grande consommation, la compatibilité avec les logiciels déjà possédés par les clients devint un impératif inévitable. Heureusement vint le téléphone informatisé, pour lequel la consommation électrique des processeurs CISC était insupportable, ce qui mena à l’adoption des processeurs RISC d’architecture ARM.
Cette stabilité est-elle durable ?
Cette concentration de l’offre de systèmes d’exploitation, qui est en partie le fruit de la concentration de l’offre d’architectures matérielles, est-elle durable ? Rien n’est moins sûr. L’ébranlement des positions acquises risque de venir de l’industrie des semi-conducteurs, aujourd’hui à la croisée des chemins. Les investissements exigés par les technologies les plus récentes sont tellement élevés (plusieurs dizaines de milliards de dollars pour une ligne de production, et des milliards pour la recherche-développement en amont) que plus aucun acteur nouveau ne peut entrer sur le marché, et que chaque nouvelle étape voit un ou plusieurs industriels abandonner le terrain.
D’autre part, l’épaisseur du diélectrique des transistors des composants les plus récents est de l’ordre d’une dizaine d’atomes, on parle même de trois atomes dans les années à venir : on approche d’une limite physique. De même, il y a déjà une dizaine d’années que les industriels ont cessé d’augmenter la fréquence d’horloge, qui reste inférieure à 4GHz, parce que la dissipation thermique et la consommation électrique, déjà considérables, deviendraient insupportables.
Si la puissance du microprocesseur unitaire cesse de croître, d’où peut venir l’amélioration des performances ? de la mise en œuvre de procédés aptes à faire coopérer de multiples processeurs, ce qui pourrait remettre au devant de la scène les technologies des années 1980, mentionnées ci-dessus, destinées à dépasser les limites de l’architecture de von Neumann (SIMD, MIMD...). Pour tirer pleinement parti de telles architectures matérielles, il faudra innover en système d’exploitation, et pour cela, peut-être, relire les articles des années 1980 pour appliquer à l’échelle microscopique les solutions parfois très audacieuses qu’ils préconisaient à l’échelle macroscopique. Ou bien ce sera quelque chose de totalement différent, et puis il faudrait penser aussi aux objets connectés, qui ont des caractéristiques bien particulières, mais de toute façon la recherche en système d’exploitation a encore de beaux jours devant elle.
D’autres livres, d’autres auteurs
Je n’aurais garde de conclure ce billet sans signaler la richesse de la bibliographie relative aux systèmes d’exploitation. Le sujet est tellement riche qu’il y a de multiples façons de l’aborder, et c’est tellement passionnant que je vous conseille de tout lire. Pour me limiter aux auteurs qui ont écrit en français, outre le CROCUS déjà mentionné, je citerai Samia Bouzefrane, Sacha Krakowiak et Patrick Cegielski. Puisse leur lecture vous procurer autant de plaisir qu’à moi.