Page d'accueil de ce livre
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