Précédent Remonter Suivant
Page d'accueil de ce livre

Chapitre 11  Micro-informatique


11.1  Naissance et essor d'une industrie

Depuis les années 1970 des efforts considérables ont été déployés pour produire des ordinateurs accessibles économiquement et techniquement à des personnes privées. L'ensemble des idées, des techniques, des matériels et des logiciels mis en oeuvre pour atteindre cet objectif a été appelé micro-informatique. Aujourd'hui le succès en est si complet que l'on peut se demander s'il ne faudrait pas dire informatique tout court : en effet les ordinateurs qui ne sont pas destinés à un usage individuel sont plutôt l'exception, on les appelle généralement des serveurs. Et depuis 1993 les micro-ordinateurs offrent une puissance de calcul équivalente à celle des grands ordinateurs traditionnels.

Si l'on a pu parler de « révolution micro-informatique », ce n'est pas à cause d'un bouleversement de la technique architecturale, car les micro-ordinateurs fonctionnent selon les mêmes principes que les serveurs et respectent l'architecture de von Neumann avec une orthodoxie plutôt plus stricte que ceux-ci. Les aspects techniques révolutionnaires résident plutôt dans l'interface personne-ordinateur, avec tout un déploiement d'interfaces graphiques et de périphériques adaptés à des usages individuels. Par exemple, une vraie nouveauté fut l'invention de la mémoire vidéo, qui associe par une interface physique l'écran du micro-ordinateur et une zone mémoire spéciale de telle sorte que toute modification de celle-ci s'affiche instantanément sur celui-là.

La micro-informatique fut en tout cas sans conteste une vraie révolution économique et sociale puisqu'elle a fait d'une machine isolée dans un sanctuaire soigneusement protégé et desservie par une caste de professionnels au langage incompréhensible un bien de consommation courante en vente dans les grands magasins et utilisé par toutes les catégories sociales (à l'exclusion, comme l'a souligné Michel Volle dans son livre E-conomie [72], des élites intellectuelles, économiques et politiques françaises, qui manifestent leur supériorité en proclamant ne jamais avoir touché un clavier ou une souris).

La « révolution » manifeste un signe avant-coureur dès novembre 1960, avec la livraison du premier PDP-1 de Digital Equipment, un ordinateur individuel très bon marché pour l'époque : 120 000 dollars ! La firme Digital Equipment avait été fondée peu de temps auparavant par l'ingénieur Ken Olsen et allait contribuer de façon notable à l'évolution de l'industrie informatique en lançant l'idée de mini-ordinateur, une machine plus simple et moins chère que les grands systèmes de l'époque, bien que réalisée en logique discrète (le microprocesseur n'existe pas encore). Les gammes PDP successives allaient permettre bien des innovations, notamment le développement du contrôle informatique de processus industriels et la création du système Unix. DEC sera pendant les années 1980 le second constructeur informatique mondial derrière IBM et emploiera alors 110 000 personnes dans le monde entier. Ken Olsen ignorera deux phénomènes importants : la naissance du micro-ordinateur et le succès d'Unix, alors que sa société avait été associée à leur genèse. DEC périclitera dans les années 1990, sera racheté par Compaq, lui-même racheté en 2001 par Hewlett-Packard, et sa dernière gamme de processeurs, Alpha, sera cédée à Intel et abandonnée malgré des qualités techniques éminentes.

En novembre 1971 se produit l'événement qui va permettre la naissance de la micro-informatique : Intel produit le premier microprocesseur, le 4004. En effet, l'unité centrale du PDP-1 (sans parler de celle d'un gros ordinateur de l'époque) comporte de nombreux éléments électroniques et électriques reliés entre eux par des fils, un assemblage fait à la main par des techniciens hautement qualifiés, et de ce fait très cher. Le microprocesseur rassemble en un seul élément (une puce, chip en anglais) ces nombreux circuits indépendants, et il est entièrement fabriqué par des machines automatiques, ce qui permet des prix de vente compris entre quelques Euros et quelques centaines d'Euros.

Dès 1972 les Français André Truong Trong Thi et François Gernelle conçoivent le micro-ordinateur Micral autour du microprocesseur Intel 80081. En janvier 1975, MITS (Model Instrumentation Telemetry Systems, fondée à Albuquerque, au Nouveau-Mexique, par Ed Roberts) lance l'Altair 8800, un micro-ordinateur basé sur l'Intel 8080 et vendu en kit par correspondance pour 400 dollars.

Pour simplifier l'architecture, l'Altair possède un circuit unique nommé « bus » pour faire circuler les données entre le processeur, la mémoire centrale et les organes périphériques. Cette idée vient des PDP. Le connecteur du bus de l'Altair a 100 broches et se répand dans l'industrie sous le nom de bus S-100.

L'Altair dispose d'un traducteur du langage BASIC écrit par Bill Gates et Paul Allen, dont la société de fait « Micro-soft » apparaît ainsi en 1975.

Steve Wozniak et Steve Jobs fondent Apple le 1er avril 1976. Le 1er juillet, la carte Apple I est mise en vente au prix de 666,66 dollars. L'année suivante sort l'Apple II, basé sur le processeur Rockwell 6502 (initialement créé par MOS Technology) et qui comporte l'autre innovation technique importante de la micro-informatique après le microprocesseur : une mémoire vidéo directement commandée par le processeur et reliée à un moniteur à balayage analogue à un écran de télévision. Tous les éléments visuels sont enregistrés dans la mémoire vidéo, ce qui permet des affichages à l'écran très rapides, indispensables aux programmes graphiques. Le boîtier de l'Apple II comporte un fond de panier avec des connecteurs raccordés au bus dans lesquels viennent s'enficher les cartes de mémoire ou de contrôleurs de périphériques. Cette architecture matérielle fera la versatilité, la souplesse et le succès de la micro-informatique.

D'autres constructeurs lancent des micros basés sur le 6502 : Commodore, Oric, Atari, Acorn, tandis que Tandy Radio Shack utilise le Zilog Z80 pour son TRS-80.

Parallèlement au développement du matériel apparaît un des premiers systèmes d'exploitation capable de fonctionner sur plusieurs types de micros : CP/M (pour Control Program/Microcomputers) écrit par Gary Kildall dès 1973. Nous en reparlerons à la section suivante.

En 1979, un étudiant du MIT et de Harvard du nom de Dan Bricklin invente un nouveau type de logiciel, le tableur (le sien s'appelle Visicalc). Ce programme affiche sur l'écran une feuille de calcul avec des lignes et des colonnes et des nombres dans les cases. Le programme permet de dire que telle case doit recevoir la somme des nombres contenus dans telle colonne, par exemple. L'intérêt du tableur, c'est que si l'on modifie un des nombres de la colonne, la case qui contient la somme est automatiquement modifiée, ce qui permet d'examiner rapidement toute une série d'hypothèses, pour préparer un budget par exemple. L'invention du tableur permet l'arrivée du micro dans le monde de la gestion.

Le 12 août 1981 IBM lance son micro, le PC, basé sur le 8088 d'Intel et le système MS-DOS de Microsoft, et doté d'un fond de panier et d'un bus similaires à ceux de l'Apple II. Cet événement fait sortir la micro-informatique du cercle des amateurs et des précurseurs vers le monde industriel et commercial, et permet à IBM de dominer ce nouveau marché dès 1983.

Mais des innovations techniques, cette fois dans le domaine du logiciel, vont encore modifier la face de la micro-informatique. Elles sont issues du PARC (Palo Alto Research Center) de Xerox. Steve Jobs visite le PARC en 1979, Bill Gates en 1980, ils y découvrent une technique révolutionnaire de communication entre l'homme et la machine. En 1981 Xerox lance le 8010 Star, premier système à offrir une interface à fenêtres, icônes, menus et souris. Apple lance en 1983 Lisa, un micro qui utilise ces techniques. Ce sont des échecs parce que Star et Lisa sont trop chères, mais en 1984 sort le Macintosh, version améliorée et moins chère de Lisa (2 495 dollars). Le « Mac » présente sur son écran une métaphore du bureau ; des « icônes » figurent des dossiers, que l'on peut ouvrir ou fermer en « cliquant » dessus avec un dispositif de pointage, la souris. Dans les dossiers, des documents, qui lorsque l'on clique dessus s'ouvrent pour s'afficher dans des « fenêtres » qui ressemblent à des pages de papier posées sur le « bureau ». Cette interface graphique, fruit de recherches en psychologie et en informatique entreprises par Alan Kay à l'Université d'Utah en 1970 et poursuivies au PARC, va permettre aux « personnes ordinaires » de se servir d'un ordinateur sans trop souffrir.

Ce succès est complété par la sortie en 1985 d'une imprimante à laser de petite taille (le modèle 3800 d'IBM, sorti en 1976, pèse plusieurs centaines de kilos et coûte des centaines de milliers de dollars) dotée d'un langage de programmation graphique, Postscript, et du premier réseau de micros, deux innovations inspirées des travaux du PARC. Ces nouveautés qui mettent à la portée de presque tous des possibilités naguère réservées aux grandes entreprises et aux universités riches donnent à Apple plus de dix ans d'avance technique sur les ordinateurs d'IBM.

Si l'IBM PC est techniquement peu innovant, il a d'autres qualités : il est construit d'éléments standard en vente dans toutes les bonnes boutiques d'électronique et son architecture est publiée dans une brochure. Dès juin 1982 Columbia Data Products fabrique un « clone » de PC qui marque les débuts d'une immense industrie.

L'essor prodigieux du micro stimule l'industrie du logiciel, à moins que ce ne soit l'inverse. Ce sont le traitement de texte, les tableurs et les bases de données qui assurent l'essentiel de l'activité, sans oublier les jeux.

IBM et Microsoft cherchent à combler leur retard sur l'interface homme-machine du Mac, mais ils divergent sur la méthode et, en 1987, IBM lance OS/2 et Microsoft, Windows 2. De ce schisme date la fin de la suprématie d'IBM sur le marché du PC, dominé désormais par le couple Intel-Microsoft, qui ont le monopole respectivement du processeur et du système d'exploitation.

Au milieu des années 1990, le marché des matériels micro-informatiques représente avec près de 100 milliards de dollars 60% du marché du matériel informatique. Les micros à base de processeur Intel représentent plus de 90% du parc, ils ont désormais des performances comparables à celles des stations de travail techniques pour un prix bien inférieur. Les pays du sud-est asiatique produisent une grande proportion des matériels les moins chers. Les interfaces « à fenêtres » sont d'un usage général.

En ce qui concerne l'équipement des micro-ordinateurs, la capacité de la mémoire centrale et des disques ne cesse de croître. Les lecteurs de CD-ROM, les modems et les cartes vidéo aptes au multimédia se généralisent.

Le logiciel micro-informatique est une activité dominée par Microsoft, mais cette hégémonie suscite procès et réactions, comme le développement des logiciels libres, avec notamment des Unix libres pour micro-ordinateurs (Linux, FreeBSD).


11.2  Quel système pour les micro-ordinateurs ?

Le principal problème à résoudre pour faire fonctionner les premiers micro-ordinateurs était la faible quantité de mémoire disponible. L'auteur de ces lignes a connu ses premières expériences personnelles en 1968 avec un Olivetti Programa 101, puis durant les années 1970 avec un Wang 2200 (des Wang Laboratories, créés par An Wang en 1951). Ce modèle lancé en 1972 disposait de 4K (4 096 octets) de mémoire et d'un système d'exploitation qui était en fait une machine virtuelle destinée au langage BASIC, enregistrée en ROM (Read-Only Memory, c'est-à-dire une mémoire incorporée au matériel de telle sorte que le contenu en soit inaltérable). Les supports de données externes étaient des cassettes pour magnétophone portable (les disquettes de 8 pouces apparaîtraient plus tard). Avec de telles caractéristiques, les créateurs de micro-ordinateurs ont dû réinventer toutes les techniques de l'informatique classique de vingt ans auparavant, et il n'était pas question d'envisager des solutions luxueuses telles que la mémoire virtuelle ou la multi-programmation. Par contre ces concepteurs venaient souvent du monde de l'instrumentation électronique et ils avaient fréquemment des idées très ingénieuses pour traiter les interruptions et faire circuler les données, ce qui eut pour conséquence que ces petits ordinateurs furent rapidement plus agiles que les gros en matière de réseau et de télécommunications.

11.2.1  Élégie pour CP/M

Nous avons déjà signalé dans les chapitres précédents que si les premiers systèmes d'exploitation, et certains qui sont encore en activité, furent écrits en assembleur pour des raisons de performance et de réduction de l'encombrement mémoire, assez tôt l'idée apparut de les écrire en langage évolué afin d'accélérer le développement, de faciliter la maintenance et d'améliorer l'intelligibilité du code produit. Le précurseur en ce domaine fut le constructeur Burroughs avec son modèle B 5000, sorti en 1962 avec un système écrit en Algol 60, suivi de Multics écrit en PL/1 et d'Unix en langage C. Le monde micro-informatique allait connaître très tôt une évolution similaire, au destin avorté.

Dès 1972, un expert indépendant sous contrat pour Intel, Gary Kildall, créait un langage évolué pour le microprocesseur 8008, baptisé PL/M ; en fait, Kildall effectuait son service militaire en tant qu'enseignant d'informatique à la United States Naval Postgraduate School de Monterey en Californie, il avait acheté pour 25 dollars un processeur Intel 4004, et il avait commencé à programmer cet appareil assez bizarre. Très vite il entra en contact avec l'équipe Intel, basée à quelques kilomètres, et il travailla avec eux pendant son jour de congé hebdomadaire. Comme rétribution de ce travail il reçut un système de développement complet (c'est-à-dire tout ce qu'il faut autour du processeur pour le programmer, soit les composants d'un micro-ordinateur, objet non encore inventé à l'époque), d'abord pour le 8008, puis pour le tout nouveau 8080.

PL/M était un langage d'assez bas niveau qui empruntait ses traits morphologiques et syntaxiques à PL/1 et Algol. Pour développer le compilateur PL/M, Kildall créa un système d'exploitation, CP/M : faire les choses dans cet ordre fut sans doute un exemple unique ! PL/M devint pour une vingtaine d'années le langage de programmation standard chez Intel.

À peu près à la même époque IBM avait inventé la disquette pour son usage interne2. Assez vite l'ingénieur à l'origine de cette invention, Alan Shugart, créa une entreprise pour commercialiser la chose, avec le succès que l'on sait. Kildall eut l'idée d'utiliser ce nouveau type de périphérique comme unité de stockage de données pour micro-ordinateur et d'adapter CP/M en conséquence.

La sortie commerciale de CP/M eut lieu en 1975. Le premier fabricant d'ordinateurs à l'utiliser fut IMSAI. CP/M connut un succès important et rapide. Bientôt il supporta les disques durs. La société de Kildall prit le nom de Digital Research.

CP/M était un système mono-utilisateur à mémoire réelle, sans mémoire virtuelle. Les parties du système qui dépendaient du matériel étaient soigneusement isolées, et les caractéristiques des éléments matériels répertoriées dans des tables, de telle sorte que l'adaptation à un nouveau modèle de processeur ou de disque puisse être réalisée aussi simplement que possible. Cette organisation permit à CP/M d'être adapté avec succès pour les microprocesseurs les plus répandus de cette époque, à mots de 8 bits ou de 16 bits, tels que le Zilog Z80, l'Intel 8086 ou le Motorola 68000.

L'architecture de CP/M comporte trois sous-systèmes : CCP (Console Command Processor) qui régit les interactions avec l'utilisateur par l'intermédiaire d'un interpréteur de commandes (on ne rêve pas encore d'interfaces graphiques) ; BDOS (Basic Disk Operating System) qui gère les disques et le système de fichiers ; BIOS (Basic Input/Output System) contient les pilotes de périphériques et gère les aspects matériels de bas niveau, spécifiques d'une machine particulière. Typiquement le BIOS n'est pas fourni par Digital Research mais par le fabricant de l'ordinateur, ce qui annonce la pratique toujours en vigueur pour les PC à base de processeur Intel (voir section 9.2.4 et 11.2.2) ; il fournit une couche d'abstraction du système par rapport au matériel.

CP/M procure un outil supplémentaire d'abstraction des dispositifs matériels, avec la notion d'unité logique, qui permet de dissimuler à l'utilisateur les détails techniques trop horribles pris en charge par le système.

Digital Research produisit une évolution de CP/M nommée MP/M, dotée d'un noyau multi-tâche multi-utilisateur, avec des possibilités de temps partagé.

À la fin des années 1970 Digital Research fut confronté à un dilemme : si PL/M restait un langage bien adapté pour l'écriture du système d'exploitation, il fallait choisir un langage de développement pour les logiciels d'application, BASIC n'étant pas approprié. L'hésitation était entre Pascal, un langage prisé des universitaires mais dépourvu de certaines caractéristiques nécessaires à la programmation de grands logiciels (essentiellement la possibilité de construire de grands programmes à partir de modules compilés séparément, ainsi que des fonctions de traitement de fichiers et de chaînes de caractères), et PL/1, le langage qu'IBM essayait, sans grand succès d'ailleurs, de promouvoir auprès de ses clients.

PL/1 était un langage dérivé d'Algol et doté d'une grande richesse fonctionnelle, trop grande d'ailleurs, ce qui rendait la réalisation de compilateurs difficile et incitait les programmeurs inexpérimentés à produire des logiciels dépourvus de la sobriété qui fait les programmes robustes. Pour pallier la difficulté d'adapter le langage à de petits ordinateurs, le comité de normalisation de PL/1 avait défini un sous ensemble plus raisonnable, PL/1 Subset G, qui était un excellent langage. C'est pour PL/1 Subset G que Digital Research commença en 1978 à développer un compilateur, qui fut prêt en 1980. La société avait signé son arrêt de mort.

En 1981, IBM lançait son propre micro-ordinateur, le PC. Il était construit autour du processeur Intel 8088, une version dégradée du 8086 : le 8086 avait des mots de 16 bits et un bus de données d'une largeur de 16 bits, le 8088 des mots de 16 bits mais un bus de 8 bits. Les stratèges de la compagnie ont certainement compris que CP/M, doté d'un vrai langage de développement, PL/1 Subset G, et qui évoluait vers un système d'exploitation multi-utilisateurs, MP/M, représentait à terme une concurrence dangereuse pour les « vrais » ordinateurs qui constituaient leur cheval de bataille. De surcroît, CP/M pouvait « tourner » sur plusieurs types de processeurs, ce qui donnait à ses utilisateurs la liberté du choix de leur fournisseur de matériel, une caractéristique non souhaitée par le département marketing d'IBM. C'est pourquoi le PC n'a pas été lancé avec CP/M, qui lui aurait parfaitement convenu, mais avec un système bien plus rudimentaire et dépourvu de langage de développement décent, MS/DOS produit par Microsoft... La légende racontera une histoire de rendez-vous manqué.



11.2.2  De MS-DOS à Windows

Les années IBM et MS-DOS

Le PC IBM naît en 1981 avec un processeur Intel 8088 et le système PC-DOS de Microsoft, qui est en fait une copie plus ou moins autorisée et incomplète de CP/M qui aurait été dépouillé de plusieurs fonctions importantes, comme l'allocation dynamique de mémoire, le partage de fichiers, la commutation de processus et la gestion de périphériques (voir à ce sujet la rubrique nécrologique de Gary Kildall par John Wharton Gary Kildall, Industry Pioneer, Dead at 52, [73]). La mémoire adressable ne peut pas dépasser 640 Ko. La notoriété d'IBM apporte au micro-ordinateur une respectabilité qui va permettre son entrée dans les entreprises, et va aussi attirer les éditeurs de logiciels.

Le PC a une caractéristique surprenante de la part d'IBM : toutes ses caractéristiques techniques internes et externes sont publiées dans une documentation librement accessible à qui veut bien l'acheter. Ceci permet très rapidement la réalisation de copies du PC. Si PC-DOS est le système d'exploitation réservé au PC d'IBM, les producteurs de clones peuvent les équiper de son sosie MS-DOS, parfaitement semblable.

Le BIOS du PC ne réalise pas, contrairement à celui de son modèle CP/M, une véritable abstraction du matériel, il dépend étroitement des caractéristiques du processeur, mais il constitue néanmoins une interface qui va faciliter le travail des cloneurs, en leur permettant par exemple de contourner les brevets d'IBM sur le matériel. Le BIOS permet aussi d'accueillir toutes sortes de cartes d'extension, celles-ci peuvent comporter de la mémoire ROM (Read Only Memory, au contenu non-volatil et figé une fois pour toutes) qui contient des extensions au BIOS, chargées dynamiquement au démarrage ; ainsi de nouvelles fonctions peuvent être prises en compte, ce qui sera particulièrement mis à profit par les créateurs de cartes graphiques.

Durant l'année 1982 Intel lance le processeur 80286, à mots de 16 bits, bus de données de 16 bits et adresses de 24 bits, soit une capacité d'adressage de 16 777 216 octets. Ce processeur introduit des caractéristiques nouvelles dans la famille Intel : à côté d'un mode de fonctionnement compatible avec le 8086, dit mode réel, il est doté d'un mode inspiré de Multics, le mode protégé. Le mode protégé comporte la gestion de registres de segments pour une mémoire virtuelle segmentée à la Multics et une protection par anneaux, mais il lui manque l'accès à la mémoire auxiliaire sur disque par adressage de segment. De toutes les façons les systèmes MS-DOS et Windows n'ont pas utilisé et n'utilisent toujours pas ces possibilités du matériel. Pire, ils resteront longtemps (en fait jusqu'au lancement commercial de Windows NT en 1993) fidèles au mode réel afin de conserver la compatibilité avec les vieux logiciels MS-DOS. Le 80286 et ses successeurs possèdent un dispositif qui permet le lancement de plusieurs machines virtuelles 8086 en mode réel, et c'est cette caractéristique qui fut la plus utilisée par les systèmes Windows jusqu'à la fin du vingtième siècle, sinon après.

En 1984 IBM lance le PC/AT sur la base d'un 80286 exploité en mode réel et avec MS-DOS qui ne sait toujours utiliser que le premier mébioctet de mémoire. Cette machine connut néanmoins un grand succès, mais dont IBM ne fut pas le seul bénéficiaire parce que l'activité des fabricants de clones connut alors un grand essor.

Le schisme entre OS/2 et Windows

En 1987 IBM, désireux de reprendre le contrôle du marché du PC, lança le PS/2, doté d'une architecture fermée protégée par des brevets, d'un nouveau bus baptisé MCA incompatible avec celui de l'AT, et d'un nouveau système d'exploitation, OS/2 conçu en collaboration avec Microsoft. Le processeur était toujours le 80286 vieillissant, voire le 8086 pour les modèles d'entrée de gamme. Malgré d'indéniables qualités techniques qui corrigeaient beaucoup des défauts de l'architecture des PC sous MS-DOS, cette tentative de reprise en main fut un échec total qui aboutit à reléguer IBM dans une position subalterne et marginale sur le marché qu'il avait créé. Plus que le choix de processeurs dépassés face au nouveau modèle d'Intel, le 386 qui sortait au même moment, l'échec de la firme d'Armonk résulta d'une révolte des industriels du PC bien décidés à conserver leur indépendance, révolte soutenue par la clientèle et surtout par Microsoft et Intel, qui voyaient là une occasion de sortir de l'ombre d'IBM pour jouer les premiers rôles. Microsoft avait discrètement préparé une alternative à OS/2, Windows2 qui sortit opportunément à ce moment. C'est le début de l'ascension de la firme de Redmond.

Windows 2 et 3 n'était qu'une surcouche cosmétique au-dessus de MS-DOS. Ce système à fenêtres, icônes et menus déroulants reposait sur l'utilisation des machines virtuelles de l'Intel 386 en mode réel, qui pouvaient être multiples, ce qui permettait de franchir la barrière de mémoire qui limitait MS-DOS. L'interface graphique faisait pâle figure à côté de celle du Macintosh, mais elle allait enclencher la conquête du grand public par les logiciels de Microsoft.

Les systèmes d'interfaces à fenêtres, que ce soit Windows, MacOS ou le système de fenêtrage X qui fonctionne comme une sur-couche au-dessus d'Unix, introduisent un nouveau style de programmation, la programmation par événements. Le programme principal exécute une boucle infinie qui attend un événement en provenance d'une fenêtre (« clic » de souris, déplacement de la souris, frappe d'une touche au clavier). Chaque événement est analysé et provoque le déclenchement du sous-programme chargé d'effectuer l'action appropriée.

Windows NT et 95

Windows NT (lancé donc en 1993) et Windows 95 (daté comme son nom l'indique de 1995) allaient enfin utiliser le mode protégé du processeur avec un adressage sur 32 bits et l'usage de bibliothèques de fonctions chargées dynamiquement (DLL, Dynamic Link Libraries) analogues aux bibliothèques partagées d'Unix. Mais Windows 95, destiné au grand public, se devait de conserver la compatibilité avec les anciens logiciels, surtout ceux destinés aux jeux, et de ce fait conservait un soubassement MS-DOS.

Faiblesses de Windows 95

Windows 95 disposait de la mémoire virtuelle, d'une gestion de processus et de possibilités de multiprogrammation, mais les bénéfices de cette modernisation étaient obérés par la présence d'un important héritage de code 16 bits dans le noyau et par le partage sans protection d'une partie de l'espace mémoire entre le noyau et tous les processus.

En outre, si Windows 95 était préemptif, son noyau n'était pas réentrant : être réentrant est une qualité statique, lexicale d'un programme, cela signifie que si un processus ou une activité (thread) qui l'exécute est interrompu(e) au milieu de cette exécution, il ne reste dans le texte du programme aucune trace de cette exécution inachevée et un autre processus (ou une autre activité) peut exécuter la même copie en mémoire de ce même programme à partir d'une autre instruction sans qu'il soit pollué par les exécutions précédentes ; en d'autres termes le texte du programme lui-même ne contient aucune information qui dépende de l'exécution d'un processus particulier ou d'une activité particulière, comme par exemple une variable définie statiquement dans le code (cf. section 10.2.5). Si Windows 95 est préemptif, cela signifie qu'un processus (ou une activité) peut être interrompu(e) à n'importe quel instant au profit d'un(e) autre. Si le noyau n'est pas réentrant, cela signifie que le processus interrompu peut avoir laissé une structure de données du noyau dans un état incohérent qui provoquera un comportement imprévisible du processus nouvellement ordonnancé. Bref, un système préemptif à noyau non réentrant est sujet aux pannes inexplicables de type blocage ou arrêt brutal.

Cette absence de sûreté réentrante du noyau Windows 95 présenterait de tels risques si le fonctionnement préemptif du système était effectivement utilisé que la plupart des logiciels raisonnables recouraient à des artifices pour acquérir et conserver le contrôle exclusif du processeur pendant leurs phases d'activité. Le procédé le plus populaire consistait à obtenir, en entrant dans le mode noyau, un verrou de contrôle exclusif qui contrôlait l'accès à pratiquement tout le système. La méthode était radicale, mais elle faisait perdre l'essentiel de l'intérêt de la multiprogrammation.

Atouts de Windows NT

Microsoft destinait Windows NT au marché professionnel, et afin de satisfaire les exigences supposées de cette clientèle avait recruté chez Digital Equipment David Cutler et Mark Lucovsky. Cutler avait été l'auteur du système RSX-11M des PDP-11, puis avec Lucovsky un des architectes du système VMS du VAX. La conception de Windows NT commença en octobre 1988.

Windows NT visait la portabilité ; Cutler et Lucovsky pensaient que le seul moyen d'atteindre cet objectif était de développer le système simultanément pour deux architectures matérielles différentes. Ils commencèrent par la version destinée aux processeurs RISC de MIPS, dont personne ne se souciait chez Microsoft, afin d'acquérir la certitude que la version pour Intel x86 serait vraiment portable.

Toujours afin d'assurer la portabilité et l'évolutivité de leur système, Cutler et Lucovsky s'interdirent d'incorporer au noyau la sémantique de tel ou tel système ; ils décidèrent de développer plutôt un noyau réduit aux mécanismes de base et doté d'une interface de programmation (API) claire au-dessus de laquelle ils implantèrent trois sous-systèmes qui implémentaient les sémantiques respectivement des systèmes POSIX, OS/2 et Windows. Cet discipline se révéla judicieuse lorsque Microsoft décida d'abandonner définitivement OS/2 et de développer Windows de façon totalement indépendante.

Si l'on dresse la liste des dispositifs qui figurent dans Windows NT et sont absents de Windows 95 et même Windows 98, on trouve tout ce qui touche à la sécurité, le support des multi-processeurs, un système de fichiers plus perfectionné. Le caractère préemptif et la gestion de mémoire virtuelle de NT sont dépourvus des compromis qui en font perdre une partie du bénéfice à 95 et 98.

Insuccès de Windows NT

Malgré ces qualités indéniables, le lancement de Windows NT fut un échec relatif. D'abord, ce nouveau système ne garantissait pas la compatibilité avec les vieux programmes MS-DOS. Ensuite il était cher.

Et puis Windows NT était (et est toujours) entaché de compromis douteux. Par exemple, parmi ses dispositifs de sécurité figure un vrai système d'enregistrement des utilisateurs autorisés et de contrôle des mots de passe. Mais comme il ne faut pas perturber les habitudes culturelles de la clientèle, l'usage de ce système d'identification et d'authentification est facultatif, ce qui lui retire toute efficacité réelle. De même, NT comporte un système de protection des fichiers et d'autres objets par listes de contrôle d'accès (ACL) ; ce système, directement hérité de VMS, est excellent, mais pour qu'il ne bloque pas irrémédiablement un trop grand nombre de vieux programmes hérités du passé, il est implémenté en mode utilisateur, ce qui le rend très vulnérable aux attaques et lui retire donc tout intérêt. Et pour couronner le tout, les premières versions de NT, jusqu'au Service Pack 3 de NT 4 en mai 1997 (en fait une nouvelle version), étaient gourmandes en mémoire, lentes et instables (les fameux écrans bleus qui s'affichaient lors des pannes système causaient le découragement des utilisateurs).

La désaffection qui accueillit Windows NT et la persévérance des clients à utiliser les vieux systèmes 16 bits basés sur MS-DOS conduisit Microsoft à prolonger leur vie sous les noms de Windows 98 et Windows Me. Espérons que c'en est fini maintenant de ces anciens systèmes, notoirement faibles du point de vue de la sécurité. En principe Windows XP devrait sonner l'heure de la réunification entre les systèmes grand public et les systèmes d'entreprise.



Windows 2000

On trouvera une description détaillée de Windows 2000 dans le livre de Solomon et Russinovich Inside Windows 2000 [64], mais l'exposé de Tanenbaum dans son livre Modern Operating Systems [68] constitue déjà une introduction substantielle.

Windows 2000, en fait la version 5 de Windows NT, est un système plein de bonnes résolutions. Le modèle de sécurité et son implémentation sont revus, conformes aux standards (IPSec, Kerberos, LDAP, X509), le service de noms est désormais fondé sur le DNS à la mode Internet, le système de fichiers NTFS a été doté de fonctions de chiffrement applicables aux fichiers individuels, aux répertoires ou à toute une partition. Chaque processus peut contrôler une ou plusieurs activités (threads), qui sont gérées par le noyau. En fait on pourrait plutôt reprocher à Windows 2000 sa profusion : plus de 30 millions de lignes de code, des centaines d'appels systèmes pour le système au sens restreint du terme (gestion des processus, de la mémoire, des I/O, de la synchronisation, des fichiers et de la protection), des milliers d'appels système pour l'interface graphique.

Autant dire que c'est un système peu intelligible, ce qui est parfois aussi gênant qu'un système indigent : ainsi l'implémentation des dispositifs de protection et de sécurité est obscure, ce qui ne donne à l'ingénieur de sécurité d'autre choix que de leur faire une confiance aveugle, avec les inconvénients que nous avons soulignés à la section 7.2.8.

Un des aspects intéressants de Window 2000 est sa couche d'abstraction du matériel (HAL, pour Hardware Abstraction Layer) située sous le noyau, et qui regroupe tous les aspects du système trop dépendants d'un matériel particulier, comme les interfaces avec les périphériques, la gestion de l'accès direct à la mémoire pour les opérations d'entrée-sortie, des interruptions, de l'horloge, des verrous de synchronisation des multi-processeurs, l'interface avec le BIOS, etc. Bref, Windows rejoint enfin le niveau d'abstraction de CP/M.

Symétriquement, l'accès des programmes en mode utilisateur aux services système se fait à travers une couche d'interface constituée de la bibliothèque dynamique NTDLL.DLL.

Windows 2000 dispose d'un système perfectionné de mémoire virtuelle, assez proche de celui de VMS.



François Anceau a publié une excellente synthèse de l'évolution du PC dans son article La saga des PC Wintel [4], où le lecteur pourra trouver de nombreuses données supplémentaires.



En cette fin d'année 2002 une proportion écrasante des ordinateurs en service dans le monde (il y en aurait un milliard) fonctionne avec une version ou une autre de Microsoft Windows. Est-ce une fatalité ? Est-ce éternel ?

11.2.3  Une alternative : MacOS

MacOS est apparu avec le Macintosh en 1984. Aujourd'hui (fin 2002) Apple est engagé dans un processus destiné à lui substituer MacOS-X, qui est en fait un système totalement nouveau bâti sur un micro-noyau Mach 3 surmonté d'un serveur Unix BSD (cf. section 10.3.2). Nul doute que ce changement soit bénéfique : un système Unix sur un micro-noyau représente une base architecturale solide, mais un changement de système est une opération lourde qui implique des modifications dans toute la gamme de logiciels disponibles.

MacOS (de version 9 ou antérieure, dans les lignes qui suivent c'est de ces versions que nous parlons, à l'exclusion de MacOS-X et des versions ultérieures) souffre des mêmes défauts architecturaux que Windows 95 ou 98, mais à un degré moindre de gravité. Comme ceux-ci il s'agit d'un système au caractère préemptif incertain et au code le plus souvent non réentrant, de ce fait sujet aux blocages et aux arrêts brutaux causés par des conflits ou des étreintes fatales entre processus, si ce n'est tout simplement par le déclenchement d'une interruption asynchrone à un moment où le système n'est pas dans un état convenable pour la recevoir. De fait, la « multiprogrammation coopérative » entre programmes pseudo-simultanés n'est possible de façon sûre que si la commutation entre processus a lieu à des emplacements bien déterminés du code, lors de l'appel au sous-programme de bibliothèque WaitNextEvent, et en effectuant à cette occasion des manipulations de données enfouies profondément dans le système. Bref, MacOS n'est pas un vrai système multi-tâches.

MacOS dispose d'un espace mémoire unique où cohabitent sans protection le système et les programmes lancés par l'utilisateur. Le système est accompagné d'une vaste bibliothèque de fonctions généralement connue sous le nom de Toolbox, et fonctionne en étroite symbiose avec des éléments codés en mémoire ROM (Read-Only Memory, une mémoire incorporée au matériel de telle sorte que le contenu en soit inaltérable) et protégés par des brevets, ce qui a empêché la production d'ordinateurs compatibles avec le Macintosh par d'autres industriels, sauf pendant la courte période où Apple a vendu des licences. La Toolbox n'est pas réentrante et fait un usage systématique de variables d'état globales, ce qui rend très problématique par exemple le développement d'applications en Java qui utiliseraient les possibilités de multi-activité (multithreading) de ce langage. D'ailleurs l'implémentation de Java sous MacOS a toujours été réputée problématique. Comme sous Windows 95 et 98, les développeurs ont tant bien que mal résolu ces problèmes en ayant recours à de longues sections critiques protégées par des verrous de contrôle exclusif.

Si la situation engendrée par ces lacunes des anciens MacOS a été moins calamiteuse que dans le cas de Windows 95 et 98, c'est pour une série de raisons contingentes. D'abord, le système MacOS et tous les Macintosh qu'il devait faire fonctionner étaient conçus par une seule entreprise en un seul lieu, Apple à Cupertino. Ceci permettait une grande cohérence dans les développements et évitait de livrer au client des systèmes trop incertains. Ensuite, Apple a su coordonner le travail de tous les développeurs de logiciels et de matériels extérieurs à la société de telle sorte qu'ils respectent tous les mêmes règles d'interface. C'est ce qui fait l'agrément d'usage du Macintosh : quel que soit le logiciel que l'on utilise, les mêmes fonctions sont toujours réalisées de la même façon, en cliquant au même endroit sur un article de menu qui porte le même nom. Microsoft est venu un peu tard à cette discipline. De ce fait le Macintosh doté de MacOS, même une version antique, est beaucoup plus agréable à utiliser et déclenche beaucoup moins d'appels au secours en direction du service d'assistance qu'un système sous Windows.

MacOS-X est un système entièrement nouveau qui repose sur d'excellentes fondations techniques : c'est un Unix BSD assis sur un micro-noyau Mach et surmonté d'une interface homme-machine aussi réussie que les précédentes versions de MacOS. Permettra-t-il à Apple de reconquérir sur les machines sous Windows un terrain aujourd'hui réduit à 2 ou 3% du marché ? Surmontera-t-il la concurrence des solutions à base d'Unix libres, moins onéreuses à l'achat ? Si la facilité d'usage par le naïf est un critère, la réponse devrait être oui. Parce qu'aujourd'hui, grâce à l'architecture du PC à processeur Intel et à Windows qui échoue à en dissimuler les détails intimes à l'utilisateur, le monde est plein de comptables qui potassent les niveaux d'interruption associés à leur cartes graphiques et de présidents d'universités qui expérimentent les combinaisons possibles de configurations de leurs disques IDE pendant les heures de travail, ce qui a indubitablement un coût très supérieur à la valeur ajoutée résultante.



11.2.4  Autre alternative : Unix

En fait pour être complet il faudrait dire « Unix libre sur PC de super-marché ». Microsoft et Intel, rendons leur cette justice, ont rendu possible le PC à 600 Euros. Rappelons-nous également qu'en 1980 Bill Gates pensait qu'Unix était le système d'avenir pour les micro-ordinateurs, et que pour cette raison il avait acquis une licence Unix pour lancer sa version de ce système : Xenix.

Maintenant sur une telle machine il est possible d'installer un autre système que Windows, Linux le plus souvent, en tout cas pour l'utilisateur final. Le principal avantage de Windows, c'est que lorsque vous achetez le PC il est déjà installé, avec en général quelques logiciels en plus, dont le traitement de texte habituel dont le lecteur n'imagine peut-être pas qu'il puisse être remplacé par autre chose. Il faut un coeur bien accroché pour formater son disque dur et entreprendre d'y installer un système distribué sur de mystérieux cédéroms, d'autant plus que le traitement de texte en question n'y est pas. Le particulier isolé hésitera sans doute, mais si son voisin d'amphithéâtre ou son collègue de laboratoire lui promettent aide ou assistance, il franchira peut-être le pas. En cette fin d'année 2002 on estime à vingt millions les ordinateurs qui fonctionnent sous Linux : ce n'est pas si peu. Des interfaces homme-machines qui rappellent celle de Windows apparaissent et ne fonctionnent pas plus mal que l'original. On pourrait préférer le modèle Macintosh...

Plus fondamentalement, la question est de savoir si le système d'exploitation payant a un avenir. Microsoft répond oui, bien sûr, et pour XP introduit de façon systématique des redevances périodiques pour qui veut disposer des nouvelles versions du système. Cette politique me rappelle l'IBM des années 1970, qui détenait plus de 90% du marché et ne connaissait pas de limite à la domination sur le client. On a vu la suite. Il est sûr en tout cas que le logiciel libre occupe aujourd'hui une place telle qu'il ne s'évaporera pas en une nuit, et que dans le domaine plus particulier du système d'exploitation il fait peser une hypothèque assez lourde sur l'avenir du logiciel privé.

La domination absolue et éternelle du marché par une seule firme est un fantasme propre au monde de l'informatique : IBM hier, Microsoft aujourd'hui, ou sur des secteurs plus spécialisés Oracle et Cisco. Même dans ses rêves les plus euphoriques le président de General Motors a toujours su qu'il y aurait Ford ou Toyota, celui de Boeing qu'il y aurait EADS. Michel Volle nous a bien expliqué le mécanisme de formation des monopoles dans l'industrie informatique, mais c'est dans l'illusion de leur pérennité que réside le caractère fantasmatique de la croyance. Parce que dans la réalité diachronique la vitesse de l'innovation technologique fait et défait les positions les plus solides, les plus monopolistes. Tôt ou tard Microsoft suivra la voie d'IBM, voire celle de Digital Equipment. Signalons d'ailleurs qu'IBM a encore réalisé en 2002 un chiffre d'affaires presque triple de celui de Microsoft, et qu'il est toujours le numéro 1 de l'industrie informatique.

Risquons l'hypothèse que ce fantasme (heureusement régulièrement démenti par les faits) est engendré par une proximité inquiétante (et d'ailleurs surestimée) entre l'esprit que nous prêtons à l'ordinateur et le nôtre. Toute pluralité du démiurge de cet esprit introduit une sensation d'insécurité semble-t-il intolérable. Nous aspirons à l'unité des processeurs et des mémoires. Que le voisin soit « sous un autre système » nous perturbe, nous le lui faisons savoir avec véhémence, parfois. Voici donc enfin l'explication des controverses lors des dîners en ville évoquées dans les premières lignes de ce livre : j'espère ainsi ne pas l'avoir écrit en vain.




1
Sur toute cette aventure de la naissance du micro-ordinateur, et plus particulièrement sur l'épisode français, on consultera avec profit le livre d'Henri Lilen [39].
2
Je me rappelle l'avoir vu apparaître dans la console d'un 370/155, où elle servait à charger le micro-code (voir section 9.2.4).
© copyright Éditions Vuibert et Laurent Bloch 2003
Page d'accueil de ce livre
Précédent Remonter Suivant