Professional Documents
Culture Documents
ordinateurs
Histoire, fonctionnement, enjeux
Laurent Bloch
2 dcembre 2013
iii
Avant-propos
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5
5
6
7
8
9
11
11
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
15
15
19
20
21
21
23
23
24
24
25
25
26
26
27
28
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
31
32
33
34
34
36
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
iv
Notion de sous-programme . . . . . . . . . . . . . . . . .
Points de vue sur les programmes . . . . . . . . . . . . . .
Vision dynamique du programme : le processus . . . . . .
Attributs du systme dexploitation . . . . . . . . . . . . .
3.8.1 Mode dexcution privilgi . . . . . . . . . . . . .
3.8.2 Contrle des programmes . . . . . . . . . . . . . .
3.8.3 Contrle de lactivit de tous les processus . . . . .
3.8.4 Monopole dattribution des ressources . . . . . . .
3.8.5 Contrle de la mmoire . . . . . . . . . . . . . . .
3.8.6 Contrle des entres-sorties . . . . . . . . . . . . .
3.8.7 Contrle du temps . . . . . . . . . . . . . . . . . .
3.8.8 Contrle de larrt et du dmarrage de lordinateur
3.9 Notion dappel systme . . . . . . . . . . . . . . . . . . .
3.10 Lancement dun programme . . . . . . . . . . . . . . . . .
3.10.1 Shell . . . . . . . . . . . . . . . . . . . . . . . . . .
3.11 Synchronisation de processus, interruption . . . . . . . . .
3.11.1 Demande dentre-sortie . . . . . . . . . . . . . . .
3.11.2 Interruption de n dentre-sortie . . . . . . . . . .
3.12 Ordonnancement de processus . . . . . . . . . . . . . . . .
3.12.1 Stratgies dordonnancement . . . . . . . . . . . .
3.12.2 Interruptions et exceptions . . . . . . . . . . . . .
3.12.3 Premption . . . . . . . . . . . . . . . . . . . . . .
3.12.4 Systmes non-premptifs . . . . . . . . . . . . . . .
3.12.5 Synchronisation de processus et sections critiques .
4 Mmoire
4.1 Les problmes rsoudre . . . . . . . . . . . . . . . . . .
4.2 La mmoire du programme . . . . . . . . . . . . . . . . .
4.2.1 Les mots de mmoire . . . . . . . . . . . . . . . . .
4.2.2 Les adresses . . . . . . . . . . . . . . . . . . . . . .
4.2.3 Noms et variables . . . . . . . . . . . . . . . . . .
4.2.4 Protection de la mmoire . . . . . . . . . . . . . .
4.3 Partage de mmoire en multiprogrammation . . . . . . . .
4.3.1 Exemple : lOS/360 . . . . . . . . . . . . . . . . .
4.3.2 Translation des programmes . . . . . . . . . . . . .
4.4 Mmoire virtuelle . . . . . . . . . . . . . . . . . . . . . . .
4.4.1 Insusance de la mmoire statique . . . . . . . . .
4.4.2 Organisation gnrale . . . . . . . . . . . . . . . .
4.4.3 Pagination . . . . . . . . . . . . . . . . . . . . . .
4.4.4 Espaces adresse . . . . . . . . . . . . . . . . . . . .
4.4.5 Registres associatifs (Translation Lookaside Buer,
4.4.6 Tables de pages inverses . . . . . . . . . . . . . . .
4.4.7 Mmoire virtuelle segmente . . . . . . . . . . . .
4.4.8 Petite chronologie de la mmoire virtuelle . . . . .
4.5 Hirarchie de mmoire . . . . . . . . . . . . . . . . . . . .
4.5.1 Position du problme . . . . . . . . . . . . . . . . .
4.6 La technique du cache . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
37
38
38
39
39
40
40
40
40
41
41
41
42
42
43
44
45
46
48
49
49
49
50
51
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
TLB)
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
57
57
58
58
59
60
61
62
62
63
64
64
65
66
69
71
72
73
73
74
74
75
4.7
5 Persistance
5.1 Mmoire auxiliaire . . . . . . . . . . . . . . . . . .
5.1.1 Structure physique du disque magntique .
5.1.2 Visions de la mmoire auxiliaire . . . . . .
5.2 Systme de chiers . . . . . . . . . . . . . . . . . .
5.2.1 Structure du systme de chiers Unix . . .
5.2.2 Traitement de chier . . . . . . . . . . . . .
5.2.3 Fichiers, programmes, mmoire virtuelle . .
5.2.4 Cache de disque . . . . . . . . . . . . . . .
5.3 Systmes de chiers en rseau : NFS, SANs et NAS
5.3.1 Disques connects directement aux serveurs
5.3.2 Systmes de chiers en rseau . . . . . . . .
5.3.3 Architecture SAN . . . . . . . . . . . . . .
5.3.4 Architecture NAS . . . . . . . . . . . . . .
5.4 Critique des chiers ; systmes persistants . . . . .
5.4.1 Reprise sur point de contrle . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
75
76
77
77
78
78
79
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
83
84
84
86
88
88
96
97
97
98
98
99
100
101
102
105
6 Rseaux
109
6.1 Transmettre de linformation distance . . . . . . . . . . . . . . . . 110
6.1.1 Thorie de linformation . . . . . . . . . . . . . . . . . . . . . 111
6.1.2 Premires ralisations . . . . . . . . . . . . . . . . . . . . . . 112
6.1.3 Un modle pour les rseaux . . . . . . . . . . . . . . . . . . . 112
6.2 Couche 1, physique . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
6.3 Notion de protocole . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
6.4 Couche 2, liaison de donnes . . . . . . . . . . . . . . . . . . . . . . 116
6.4.1 Notion dadresse rseau . . . . . . . . . . . . . . . . . . . . . 117
6.4.2 Dtection et correction derreur pour la couche 2 . . . . . . . 118
6.4.3 Un exemple de liaison de donnes : Ethernet . . . . . . . . . 121
6.5 Couche 3, rseau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
6.5.1 Commutation de circuits . . . . . . . . . . . . . . . . . . . . . 124
6.5.2 Commutation de paquets . . . . . . . . . . . . . . . . . . . . 125
6.5.3 Le protocole IP et lInternet . . . . . . . . . . . . . . . . . . . 127
6.5.4 Exception lunicit des adresses : traduction dadresses (NAT)135
6.5.5 Une solution, quelques problmes . . . . . . . . . . . . . . . . 139
6.5.6 Traduction de noms en adresses : le DNS . . . . . . . . . . . 139
6.5.7 Mcanisme de la couche IP . . . . . . . . . . . . . . . . . . . 143
6.5.8 Nouvelles tendances IP . . . . . . . . . . . . . . . . . . . . . 153
6.6 Couche 4, transport . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
6.6.1 TCP (Transmission Control Protocol) . . . . . . . . . . . . . 154
6.6.2 UDP (User Datagram Protocol) . . . . . . . . . . . . . . . . . 157
vi
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
7 Protection et scurit
7.1 Protection . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.1.1 Un parangon de protection : Multics . . . . . . . . .
7.2 Scurit . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.2.1 Menaces, risques, vulnrabilits . . . . . . . . . . . .
7.2.2 Principes de scurit . . . . . . . . . . . . . . . . . .
7.2.3 Chirement . . . . . . . . . . . . . . . . . . . . . . .
7.2.4 Pretty Good Privacy (PGP) et signature . . . . . . .
7.2.5 Usages du chirement : IPSec et VPN . . . . . . . .
7.2.6 Annuaire lectronique et gestion de cls . . . . . . .
7.2.7 Scurit dun site en rseau . . . . . . . . . . . . . .
7.2.8 Les CERT (Computer Emergency Response Teams)
8 De
8.1
8.2
8.3
8.4
8.5
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
158
159
160
160
161
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
163
163
165
166
166
167
168
176
178
178
179
182
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
185
185
187
189
191
194
194
195
198
199
199
199
200
201
202
205
207
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
211
212
212
212
213
214
214
215
219
221
222
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
vii
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
229
229
230
231
231
232
233
233
234
236
236
237
238
238
239
239
240
240
240
241
242
243
243
244
246
247
248
11 Micro-informatique
11.1 Naissance et essor dune industrie . . . . .
11.2 Quel systme pour les micro-ordinateurs ?
11.2.1 lgie pour CP/M . . . . . . . . .
11.2.2 De MS-DOS Windows . . . . . .
11.2.3 Une alternative : MacOS . . . . . .
11.2.4 Autre alternative : Unix . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
251
251
254
255
257
261
263
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Conclusion
265
A Numration binaire
A.1 Dnitions . . . . . . . . . . . . . . . . . . . . . .
A.2 Petits exemples binaires . . . . . . . . . . . . . .
A.3 Conversion entre bases quelconques . . . . . . . .
A.4 Reprsentation informatique des nombres entiers
A.4.1 Notation hexadcimale . . . . . . . . . . .
A.5 Types fractionnaires . . . . . . . . . . . . . . . .
A.5.1 Les rels . . . . . . . . . . . . . . . . .
269
269
270
270
271
273
273
273
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
viii
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
277
277
278
280
280
280
280
281
281
283
Index
285
Bibliographie
293
Prface
de Christian Queinnec
Professeur lUniversit Pierre et Marie Curie
Prface
Avant-propos
Depuis que lordinateur a investi la vie quotidienne, chacun dcouvre son compagnon invisible, immatriel, omniprsent et tyrannique : le systme dexploitation.
Cette dcouverte dchane les passions, et les dners en ville sont le thtre dempoignades entre les acionados de Windows, de MacOS ou de Linux.
Ces passions sont dautant plus vives que peu informes. Sil existe des ouvrages
de vulgarisation pour expliquer le fonctionnement des ordinateurs, leur lecture est
souvent frustrante parce quelle se limite au matriel, dont le comportement observable est en fait une reprsentation mdiatise par le systme dexploitation. Si
lutilisateur plus ou moins consentant dun ordinateur veut comprendre ce qui se
passe sur son cran cest en fait le systme dexploitation quil faut expliquer. Cest
un des objectifs de ce livre.
Pour introduire le lecteur dans lunivers des systmes dexploitation, le prsent
ouvrage emprunte un itinraire gntique et historique qui part des problmes quont
voulu rsoudre les pionniers des annes 1950 pour parcourir les grands domaines que
doit grer un systme : les processus, la mmoire, le temps, la persistance des donnes, les changes avec lextrieur, la scurit, enn linterface personne-ordinateur,
la partie visible du systme quoi beaucoup croient quil se rduit. Cette visite historique se justie par la constatation que, derrire une extrme diversit extrieure
des ralisations proposes lutilisateur, les mcanismes choisis pour raliser le cur
du systme sont dune grande similitude.
Il est dicile de parler de systme dexploitation sans parler de rseau, et il en
sera question.
Alors, lordinateur a-t-il une me ? Au sens religieux, certes non, mais dans lacception tymologique de lanimus, oui, lordinateur est bien anim par le systme
dexploitation sans lequel il ne serait quun amas de ferraille.
Remerciements
Lauteur de ce livre doit ici manifester sa gratitude quelques personnes qui ont
bien voulu lencourager et laider. Dominique Sabrier ma incit crire cet ouvrage :
je crois quelle limaginait bien dirent ; en tout cas son soutien a t dterminant.
Christian Queinnec a bien voulu relire ce texte, lamliorer par ses critiques et le
doter dune prface lumineuse. Manuel Serrano, ric Gressier et Franois Bayen ont
relu le manuscrit et suggr des corrections et des amliorations importantes. Michel
Volle, expos quelques tats prliminaires du texte, a t un interlocuteur toujours
stimulant. Jean-Marc Ehresmann a fourni quelques aperus mathmatiques toujours
clairants. Marc Jammet et toute lquipe des ditions Vuibert ont fait en sorte que
ldition de ce livre soit un plaisir.
Avant-propos
Ce livre a t entirement ralis avec des logiciels libres : TEX et LATEX pour la
composition, BibTEX pour la bibliographie, (X)emacs pour la frappe, Xndy pour
lindex, xg pour les gures, HeVeA (http://pauillac.inria.fr/~maranget/
hevea/index.html) pour produire les pages Html, Linux pour la coordination de
lensemble. La communaut du logiciel libre en soit remercie ici.
Sommaire
1.1
1.2
1.3
1.4
1.5
1.6
1.7
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 5
. 6
. 7
. 8
. 9
. 11
. 11
un, de prfrence le plus simple, et sans entrer dans les dtails dimplmentation. Et
si le lecteur, passionn, veut en savoir plus, il trouvera dans la bibliographie quelques
rfrences douvrages sensiblement plus pais qui devraient satisfaire sa curiosit.
Dexcellents ouvrages accessibles un public de non-spcialistes ont dj t
consacrs lhistoire de linformatique ou des ordinateurs ainsi qu la sociologie et
la psychologie de leur usage, mais la question des systmes dexploitation y occupe
une place assez troite. Ce nest dailleurs pas anormal, puisque leur apparition est
assez tardive dans lvolution de linformatique, mais la faon dont ils en aectent
aujourdhui tous les usages avec une intensit croissante me semble justier une
approche qui les prenne comme axe. Cela dit, je nai pas la prtention de traiter
le sujet compltement, mais plutt de partir de quelques problmes choisis comme
exemples. Et pour dlasser le lecteur fatigu par des passages un peu techniques,
le dveloppement alternera descriptions dobjets techniques et analyses de certaines
attitudes sociales quils suscitent.
Cette invasion de nos activits par les systmes dexploitation, que chacun peut
vrier en observant la prolifration des titres informatiques dans les kiosques
journaux et les sujets de controverse dans les soires en ville, est un phnomne
rcent. Au dbut des annes 1970 lauteur de ces lignes tait ingnieur systme, cest-dire un spcialiste de ces objets techniques. Quand un convive dans un dner lui
demandait ce quil faisait dans la vie, il rpondait ingnieur systme , profession
de foi quil fallait faire suivre dune explication, parce que la teneur de cette activit
nallait pas de soi. Jy ai vite renonc.
ses tats successifs qui vont permettre dobtenir le rsultat voulu. Le programme
enchane les actions primitives qui vont aecter la mmoire pour instaurer les tats
voulus successivement. Un ordinateur est un automate tats ni.
Les trois caractristiques fondamentales dun ordinateur sont quil est programmable, automatique et universel :
programmable : la nature des oprations eectuer peut tre spcie compltement et exclusivement par le texte dun programme ;
automatique : une fois lance lexcution dun programme, lordinateur assure
cette excution sans intervention extrieure ;
universel : capable dexcuter nimporte quel programme, cest--dire tout enchanement dactions primitives dcrivant une procdure eective pour obtenir le rsultat voulu. Une procdure eective est lenchanement doprations
lmentaires qui permettront dexcuter les calculs ncessaires la solution
de problmes pour lesquels existent des solutions calculables (il y a des problmes sans solution et des solutions incalculables ; les mthodes apprises
lcole pour faire des additions ou des multiplications la main sont des procdures eectives). Traduire ces oprations lmentaires en termes dactions
primitives dun ordinateur, cest programmer.
Corollaire : si le programme lanc au dmarrage de lordinateur est un systme
dexploitation, conu comme dit ci-dessus pour dclencher lexcution dautres programmes, qui sont ainsi en quelque sorte des sous-programmes du systme dexploitation, les excutions de programmes dirents pourront senchaner. Nous y
reviendrons.
Contrairement aux logiciels dapplication, tels que traitement de texte, programme nancier ou de jeu, le systme dexploitation ne sert pas une tche particulire, mais il est dans la coulisse de toutes. Dans la coulisse, cest--dire que
lutilisateur peut ignorer jusqu son existence, et dailleurs cette ignorance est sans
doute mettre son actif. Beaucoup dutilisateurs de Macintosh ne savent rien de
MacOS, et cest la preuve que MacOS remplit sa mission sans faille. Quand le systme dexploitation (on peut dire simplement systme) se manifeste, souvent cest
pour signaler que quelque chose ne va pas.
Mais au-del de cet aspect immdiat, dont beaucoup de gens croient quil constitue le tout du systme, il y a encore beaucoup de choses quun systme dexploitation
fait pour son utilisateur. Nous avons dit que le systme dexploitation servait dintermdiaire, si possible facilitateur, entre lutilisateur et lordinateur. Dans cette
optique, le gestionnaire de fentres est la partie la plus tourne vers lutilisateur,
laspect le plus superciel du systme (ici le mot superciel ne dnote pas un jugement de valeur, mais qualie ce qui est la surface visible, par opposition ce qui est
enfoui dans la profondeur des entrailles de la machine). Cette partie qui est en surface, directement accessible la perception, nous pourrons lappeler interface (entre
la personne et lordinateur). Nous dirons que cest une interface de haut niveau, non
pas l encore par un jugement de valeur, mais parce quelle donne de lordinateur
et de son fonctionnement une reprsentation trs idalise, trs mtaphorique, en
un mot trs abstraite par rapport ce que serait une interface de bas niveau, plus
proche de lordinateur et moins parlante aux humains.
Couche 4, transport
protocole couche 4
interface
interface
Couche 3, rseau
protocole couche 3
interface
interface
Couche 2, liaison
de donnes
protocole couche 2
interface
interface
Couche 1, physique
Soit un systme dont les communications avec dautres systmes sont reprsentes par un modle n couches numrotes de 1 n. La rgle fondamentale du
modle en couche cest que la couche de rang i (1 < i < n) dun systme donn ne
peut communiquer concrtement quavec les couches i 1 et i + 1 du mme systme.
La couche 1 peut communiquer directement avec les couches 1 des autres systmes.
La couche n assure linterface avec lutilisateur. La couche i communique selon les
rgles du protocole qui lui correspond avec les couches i des autres systmes, mais
cette communication passe par la mdiation des couches infrieures. Ceci est illustr
par la gure 1.1.
10
Analyse
Linguistique
Statistiques
combinatoire
machine de
Turing
Linguistique
de la
Architecture
des
Rseaux
et
von Neumann
Intelligence
artificielle
Programmation
Systmes
Architecture
dExploitation
des
Donnes
Architecture
architecture de
informatique
Programmation
Algorithmique
Analyse
Numrique
Biologie molculaire
des
Machines
Thorie du
signal
Conception et
Thorie de
linformation
Ralisation de
lectronique
Circuits et Matriels
Figure 1.2 : Les disciplines de linformatique
croix jai mentionn ce qui me semblait constituer les sept disciplines majeures, et
la proximit dans le plan se veut reter la proximit des disciplines : vers le haut,
le plus abstrait, vers le bas, on se rapproche de la matire.
Jai mis l intelligence articielle entre guillemets et dans un cadre un peu
lcart parce que cette discipline me semble, au moins, trs mal nomme. Les ellipses
contiennent les noms des grands paradigmes qui donnent les cls de linformatique.
Flottant libres de cadres sont les noms de disciplines qui, pour avoir des proximits
avec linformatique, nen font pas partie, mme si parfois elles lui sont rattaches
par erreur.
Le lecteur familier dune autre science sera sans doute surpris par cette description, surtout sil vit et travaille en France. En eet, dans ce pays o linformatique
a du mal se faire reconnatre comme une discipline part entire par les institutions de llite, chacun limagine selon les applications (ou les reprsentations) qui
en sont faites dans son domaine. Ainsi le physicien a tendance la rduire au calcul,
tant cette activit est pour lui associe linformatique. Le biologiste stonnera de
labsence de lanalyse de squences dont il croit quelle est partie constituante de
linformatique, tandis que le mathmaticien imagine quelle se rduit lalgbre du
monode libre et que le statisticien ny voit que lanalyse en composantes principales.
Tous ces domaines sont lis dune faon ou dune autre linformatique, mais nen
Architectures
11
font nullement partie. Quant aux parties de linformatique qui sont indpendantes,
lorsque leur existence nest pas purement ou simplement ignore, elles sont considres comme des techniques rudimentaires, alors que ce sont souvent les domaines les
plus complexes.
1.6 Architectures
Les lignes qui prcdent recourent plusieurs reprises au terme architecture. Il
sagit de plus que dune commodit de langage, et dautre chose que dun fantasme
dinformaticien frustr de travailler toujours dans limmatriel et labstrait et envieux
du matriau concret palp par le btisseur.
Lorsque larchitecte conoit un btiment, ou lurbaniste un quartier, leur proccupation premire, avant de concevoir chaque pice, ou chaque pt de maisons,
porte sur les moyens de circuler entre ces lments : couloirs, escaliers, halls, vestibules, ou rues, alles, places, ponts, esplanades.
Il en va de mme pour le concepteur dun systme informatique, quil soit matriel ou logiciel. Comment linformation circule-t-elle entre le disque dur et la mmoire
centrale, de celle-ci au processeur ? Comment les dirents programmes dun logiciel
partagent-ils des donnes, ou au contraire en garantissent-ils laccs exclusif ? Voil
les grandes questions de la conception informatique, et au cur de ces questions
se trouve le grand aiguilleur, le grand rgulateur : le systme dexploitation. Louvrage de Hennessy et Patterson Architecture des ordinateurs [31] donnera au lecteur
une vision approfondie de ces questions et de certaines rponses qui leur ont t
apportes.
Le plan de masse des disciplines informatiques que nous avons dessin la
gure 1.2 renvoie cette analogie architecturale.
12
13
Sommaire
2.1
2.2
2.3
2.4
2.5
2.6
2.7
2.8
2.9
Modle de lordinateur . . . . . . . . . . . .
Traitement de linformation . . . . . . . . . .
Mmoire et action, donnes et programme .
quoi ressemble le langage machine ? . . . .
2.4.1 Premier programme . . . . . . . . .
2.4.2 Questions sur le programme . . . . .
Mot dtat de programme (PSW) . . . . . .
Premier mtalangage . . . . . . . . . . . . .
2.6.1 Vers un langage symbolique . . . . .
2.6.2 Adresses absolues, adresses relatives
2.6.3 Assembleur, table des symboles . . .
2.6.4 Traduction de langages . . . . . . . .
Comment cela dmarre-t-il ? . . . . . . . . .
Quel est le rle de la mmoire ? . . . . . . .
La machine de Turing . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
15
19
20
21
21
23
23
24
24
25
25
26
26
27
28
Introduction
Nous avons dni le systme dexploitation dabord comme un logiciel destin
faciliter lutilisation dun ordinateur, puis comme un programme dont la fonction
principale est de dclencher lexcution dautres programmes. Nous allons le dnir
maintenant comme un programme qui permet un ordinateur de faire plusieurs
choses la fois.
Pour pouvoir laborer et nuancer cette dnition, et comprendre notamment ce
quelle comporte de paradoxe, il nous faut approfondir un peu notre vision de lordinateur que nous avons dni comme un automate capable deectuer des actions
dites primitives (dtermines par ses concepteurs) selon lnumration quen donne
le texte dun programme.
16
Unit de
Contrle
Unit
Arithmtique
Unit
dEntre-Sortie
Accumulateur A
Registre R
Modle de lordinateur
17
18
Traitement de linformation
19
20
La description de la mthode, cest--dire lalgorithme, doit tre adapte lexcutant charg deectuer le traitement. Lexcutant sait eectuer un nombre ni
dactions, que lon nomme ses primitives (ce sont par exemple les instructions du
jeu dinstructions du processeur dcrit ci-dessus). Lalgorithme doit tre constitu
dune combinaison de ces primitives. Pour construire toutes les combinaisons possibles de primitives, Corrado Bhm et Giuseppe Jacopini ont dmontr dans un
article clbre des CACM en mai 1966 intitul Flow diagrams, Turing machines
and languages with only two formation rules [10] quil susait de savoir raliser
lenchanement de deux primitives (eectuer une action la suite dune autre), la
rptition dune primitive donne et le choix, pendant lexcution dun traitement,
entre deux primitives selon le rsultat dun test. Ce qui sait raliser ces combinaisons de primitives, cest en dernire analyse lunit de contrle du modle de von
Neumann.
Un algorithme fournit, pour un excutant donn, la dcomposition de la tche
raliser en primitives de lexcutant.
21
Unit
de
contrle
R
A
Unit
dentre
sortie
+
1
Mmoire
10
11
12
13
14
15
16
17
18
19
20
24
25
26
27
28
21
29
12
22
23
30
31
511
22
bit 5
numro du premier
registre concern
(0 pour R,
1 pour A)
bit 6
numro du second
registre concern
(0 pour R,
1 pour A)
instruction
code opration
00001
00010
00011
00100
00101
00110
bits 7 15
adresse
mmoire
nom
mnmonique
LOAD
STORE
ADD
PRINT
BZ
END
1er registre
2nd registre
1
1
1
1
1
1
0
0
0
0
0
0
adresse
(en binaire)
0 0001 0100
0 0000 0101
0 0001 0101
0 0001 0110
0 0001 0110
0 0001 0110
adresse
(en dcimal)
20
5
21
22
22
22
1100
1100
1100
0100
0100
0100
0001
0000
0001
0001
0001
0001
0100
0101
0101
0110
0110
0110
23
24
FIN
code op.
LOAD
BZ
ADD
STORE
PRINT
END
oprandes
1, 20
1, FIN
1, 21
1, 22
22
Premier mtalangage
tiquette
FIN
VAL1
VAL2
RESULT
code op.
LOAD
BZ
ADD
STORE
PRINT
END
...
18
42
0
25
oprandes
1, VAL1
1, FIN
1, VAL2
1, RESULT
RESULT
(dautres instructions ventuelles)
26
27
sur un disque dur, ou une disquette, ou un CD-ROM... bref sur 7 une mmoire
permanente externe (par opposition mmoire centrale) accessible par lUnit
dentre-sortie de larchitecture de von Neumann. Un programme stock sur
disque y rside sous forme dun chier ; nous navons pas encore tudi les
chiers, mais disons pour linstant quun chier est un ensemble de donnes
identi et dlimit sur un support externe.
Une mmoire permanente externe a les mmes proprits que la mmoire
centrale quant la capacit de contenir linformation, mais elle sen distingue
par la capacit la conserver aprs la coupure du courant. Il ya aussi une
dirence considrable de temps daccs. Pour que linformation contenue
dans une mmoire externe soit traite par lUnit centrale, il faut au pralable
la recopier dans la mmoire centrale. Cest le rle de lUnit dentre-sortie.
Tout ordinateur moderne possde un circuit spcial de dmarrage, constitu
en fait dun petit programme cbl une fois pour toutes. Ce programme spcial est, par construction, activ la mise sous-tension. Son action consiste
aller chercher sur une mmoire externe prpare cet eet un autre programme un peu moins petit, le recopier en mmoire centrale et en dclencher lexcution. Ce processus est connu sous le nom de boot-strap ou
simplement boot, mais il est permis de dire amorage. Le programme que le
circuit de dmarrage va chercher sur la mmoire externe sappelle programme
de boot. Une mmoire externe sur laquelle on aura enregistr un programme
de boot convenable sappelle un disque bootable, une disquette de boot, etc.
Que va faire le programme de boot ? Charger en mmoire centrale le programme qui lui aura t dsign lors de sa conception ; dans lexemple de la
section prcdente ce sera notre petit programmejouet, mais dans le monde
rel ce sera, vous lavez devin, le systme dexploitation, qui ensuite lancera
lui-mme dautres programmes, au fur et mesure des demandes qui lui seront adresses. Plus prcisment, la partie du systme qui est lance aprs
lamorage, et qui en est lme, est appele noyau (kernel) du systme.
28
La machine de Turing
29
0 1 1 1 0 1 1 1 1 0
30
Sommaire
3.1
3.2
Premiers essais . . . . . . . . . . . . . . . . . . . . . . . . .
Simultanit et multiprogrammation . . . . . . . . . . . . .
3.2.1 Chronologie dune entre-sortie . . . . . . . . . . .
3.3 Notion de processus . . . . . . . . . . . . . . . . . . . . . .
3.4 Rication du calcul . . . . . . . . . . . . . . . . . . . . . .
3.5 Notion de sous-programme . . . . . . . . . . . . . . . . . .
3.6 Points de vue sur les programmes . . . . . . . . . . . . . .
3.7 Vision dynamique du programme : le processus . . . . . . .
3.8 Attributs du systme dexploitation . . . . . . . . . . . . .
3.8.1 Mode dexcution privilgi . . . . . . . . . . . . .
3.8.2 Contrle des programmes . . . . . . . . . . . . . .
3.8.3 Contrle de lactivit de tous les processus . . . . .
3.8.4 Monopole dattribution des ressources . . . . . . .
treinte fatale . . . . . . . . . . . . . . . . . . . . .
3.8.5 Contrle de la mmoire . . . . . . . . . . . . . . .
3.8.6 Contrle des entres-sorties . . . . . . . . . . . . .
3.8.7 Contrle du temps . . . . . . . . . . . . . . . . . .
3.8.8 Contrle de larrt et du dmarrage de lordinateur
3.9 Notion dappel systme . . . . . . . . . . . . . . . . . . . .
3.10 Lancement dun programme . . . . . . . . . . . . . . . . .
3.10.1 Shell . . . . . . . . . . . . . . . . . . . . . . . . . .
3.11 Synchronisation de processus, interruption . . . . . . . . .
3.11.1 Demande dentre-sortie . . . . . . . . . . . . . . .
3.11.2 Interruption de n dentre-sortie . . . . . . . . . .
3.12 Ordonnancement de processus . . . . . . . . . . . . . . . .
3.12.1 Stratgies dordonnancement . . . . . . . . . . . .
3.12.2 Interruptions et exceptions . . . . . . . . . . . . . .
3.12.3 Premption . . . . . . . . . . . . . . . . . . . . . .
3.12.4 Systmes non-premptifs . . . . . . . . . . . . . . .
3.12.5 Synchronisation de processus et sections critiques .
Atomicit des oprations . . . . . . . . . . . . . . .
Masquage des interruptions . . . . . . . . . . . . .
Verrouillage de la section critique . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
32
33
34
34
36
37
38
38
39
39
40
40
40
40
40
41
41
41
42
42
43
44
45
46
48
49
49
49
50
51
53
54
54
32
Simultanit et multiprogrammation
33
limprimante, nutilisait les circuits de lunit arithmtique et logique que fort peu,
voire pas du tout si lon avait pris soin denregistrer avec les rsultats proprement
dits des codes de commande destins llectronique (rudimentaire) de limprimante
pour indiquer les sauts de ligne, de page, etc.
La ralisation de cet objectif apparemment modeste ncessitait encore un peu
de programmation : la n du programme de calcul il fallait quun programme
dclencht dune part le dmarrage du programme dimpression (destin vivre sa
vie indpendamment), dautre part le dmarrage du programme de calcul suivant.
Avant de lancer le programme dimpression il fallait aussi vrier que limpression
des rsultats prcdents tait bien termine. Pendant quon y tait, on procderait
une optimisation analogue en autorisant le recouvrement entre le temps de calcul
et le temps de lecture des donnes ncessaires au calcul suivant.
Il apparut vite assez logique de coner cette mission, organiser le recouvrement
dans le temps de plusieurs activits, un mta-programme , nomm moniteur,
charg de dclencher linstant convenable lexcution des programmes dapplication, qui pourraient tre considrs comme ses sous-programmes. Nous tions en
1955 et lanctre des systmes dexploitation tait n.
Nous allons dcrire les traits marquants de lvolution des systmes partir de cet
anctre rudimentaire, mais auparavant il convient de prciser un peu notre vision de
ce quest un programme : le chapitre 2 nous en a donn une vision statique, centre
sur le texte qui dcrit lalgorithme, les sections qui suivent insistent sur laspect
dynamique, ce qui se passe pendant lexcution du programme.
34
Notion de processus
35
36
Notion de sous-programme
37
Le -calcul se distingue des autres notations mathmatiques en ceci que les fonctions y sont des objets comme les autres, susceptibles dtre traits comme des variables dautres fonctions ou comme des termes dexpressions, des -termes dans des
-expressions. Pour cette raison LISP est appel un langage fonctionnel, ou encore
un langage applicatif, puisquaussi bien le propre dune fonction est de pouvoir tre
applique des arguments.
38
39
corollaire des deux points prcdents : empcher quun processus pathologique naccapare des ressources cruciales et ne rduise les autres la
famine ;
assurer chaque processus la jouissance paisible des ressources quil leur a
alloues, et pour cela tablir une protection tanche entre les domaines des
dirents processus, tout en leur permettant de communiquer entre eux sils
ont t programms cet eet. En dautres termes, cest au systme dexploitation que revient dassurer la scurit de lensemble du systme informatique.
Le processus runit deux types dattributs : certains sont de nature plutt statique, ce sont les ressources utilises (espace mmoire, chiers ouverts), et dautre
plutt dynamiques, cest essentiellement ce que nous pouvons appeler un l
dexcution pour un programme, au sens o lon dit le l de la conversation . Une
tendance rcente des architectes de systmes vise sparer les deux types dattributs, en considrant le processus comme un ensemble de ressources quutilisent un
ou plusieurs ls dexcution. Lambigut du pluriel de l en franais nous conduit
traduire le terme anglais thread par activit. Nous tudierons dans ce chapitre le
processus au sens classique. Ltude des activits ncessite lexamen pralable des
dirents types de ressources partager, elle trouvera sa place au chapitre 10 page
240.
40
41
Processus P2
...
...
Allocation de la ressource B
...
...
...
...
Tentative dallocation de la
ressource A : chec, blocage
...
...
...
...
Libration de la ressource B :
P2 ny arrivera pas.
Table 3.1 : treinte fatale (laxe du temps est vertical de haut en bas)
42
de larrt de lordinateur, du moins quand cest possible. Lorsquil reoit une commande darrt, le systme veille terminer les entres-sorties en cours et arrter
proprement les processus encore en cours dexcution. Quand cela nest pas fait,
par exemple lors dune coupure de courant, certains supports de donnes externes
peuvent rester dans un tat incohrent, avec le risque de destruction de donnes.
43
3.10.1
Shell
Cette section est consacre au programme qui est lintermdiaire principal entre
lutilisateur et le systme Unix. Cest la fois un interprteur de commandes qui
permet le dialogue avec le systme et le lancement de programmes, et un langage de
programmation. On peut crire en shell des programmes appels shell scripts constitus de squences de commandes agrmentes de constructions telles qualternative
ou rptition, ce qui permet dautomatiser des tches rptitives. Ces programmes
ne sont pas compils (traduits une fois pour toutes), mais interprts, cest--dire
que le shell traduit et excute les commandes une une comme si lutilisateur les
tapait sur son clavier au fur et mesure. Lutilisateur a ainsi lillusion davoir aaire
une machine virtuelle dont le langage machine serait celui du shell.
Incidemment, alors que Unix est n en 1969, le shell est plus ancien : il a t
invent en 1963 lors de la ralisation du systme dexploitation CTSS au Massachusetts Institute of Technology par Louis Pouzin, ingnieur franais qui sest galement
illustr en 1970 la direction du projet de rseau Cyclades, o il inventa notamment
le datagramme. CTSS, dont le dveloppement commena en 1961 sous la direction
de Fernando Corbat au MIT sur IBM 709, puis 7090, fut un systme dune grande
importance par le nombre de notions, de techniques et de ralisations novatrices
quil apportait. Ce fut le premier systme temps partag, cest--dire quil permettait lusage simultan de lordinateur par plusieurs utilisateurs qui entraient des
commandes et lanaient des programmes depuis des terminaux, en utilisant la disproportion entre le temps de calcul de la machine et le temps de raction humain
telle quexpliqu la section 3.2.1.
6. Les programmes concerns sont getty et login
44
Aprs CTSS, Corbat prit la tte du projet MAC 7 8 qui donna naissance au
systme dexploitation Multics sur General Electric GE-645, toujours au MIT. Ces
systmes ont inspir les auteurs de Unix, tant par ce quils en ont retenu que par ce
quils en ont rejet dailleurs. Nous y reviendrons.
De CTSS le shell passa en 1964 son successeur Multics, et de l Unix. Lutilisateur dUnix a dailleurs le choix entre plusieurs shells qui dirent par le style
plus que par les fonctions. La souplesse et la programmabilit du shell sont pour
beaucoup dans la prdilection que les dveloppeurs professionnels ont pour Unix. Les
utilisateurs moins spcialiss ont tendance lui prfrer les interfaces graphiques interactives oertes par le Macintosh ou Windows, et dailleurs disponibles galement
sous Unix grce au systme de fentres X complt plus rcemment par des environnements graphiques tels que Gnome ou KDE. Mais pour un utilisateur quotidien
taper des commandes au clavier est plus rapide que de cliquer avec une souris, et
surtout ces commandes peuvent tre enregistres pour devenir des shell scripts, ce
qui assure programmabilit, mmorisation et reproductibilit des actions. Avez-vous
dj essay de vous rappeler quelle squence de coups de souris avait produit tel
rsultat subtil et ardemment dsir dans Word ? ou de dicter au tlphone une telle
squence un collgue (sauf dans le cas o il est devant son cran et peut eectuer
les actions au fur et mesure de la dicte) ? Tandis quune srie de commandes du
shell, cela senvoie par courrier lectronique de faon sre.
Bref, muni du shell, rien nest plus simple lutilisateur que de lancer un programme : il sut de taper le nom du chier binaire excutable qui en contient le
texte en langage machine, ventuellement suivi de quelques paramtres, puis un retour chariot et lexcution commence... Il y aura cration dun nouveau processus
pour ce programme, un processus en gnral ls du processus li au shell. Unix
procure aussi des moyens de lancer lexcution dun programme en labsence dun
humain pour taper la commande, mais le principe reste le mme.
45
endormi. Comment cela peut-il se passer ? Nous allons pour lexposer prendre un
exemple particulirement signicatif et qui dcoule de la section 3.2 ci-dessus : le
droulement dune opration dentre-sortie, lecture ou criture sur support externe.
Systme
...
...
...
lancement dE/S
interruption dE/S
...
fin de traitement
dinterruption E/S
Contrleur dE/S
commande dE/S
_
_
_
_
travail dE/S
_
_
fin dE/S
46
47
o il faut dposer les donnes rsultant de la lecture. Il place donc les donnes
lemplacement convenu.
Comment le contrleur place-t-il les donnes en mmoire ? Par o passentelles ? Par le bus. Le bus comporte des lignes de donnes et des lignes de
signalisation (ou de commande). Les lignes de signalisation permettent aux
dirents lments de lordinateur de coordonner leurs actions, dchanger
des commandes ; les lignes de donnes leur permettent dchanger, donc, des
donnes. Le contrleur sait accder la mmoire et slectionner la bonne
adresse.
Une fois les donnes places au bon endroit en mmoire, il faut prvenir
le processeur. cette n le contrleur envoie sur une ligne de signalisation
particulire un signal qui va dclencher une interruption du processeur. Linterruption est un mcanisme capital pour la synchronisation des ordinateurs,
nous allons en exposer le principe.
Le signal dinterruption a deux eets :
il interrompt, donc, le programme en cours dexcution ;
le PSW courant (cf. section 2.5 pour la dnition du PSW et du PC) est
sauvegard en mmoire et remplac par un nouveau PSW qui comporte
une valeur de PC qui pointe vers une section particulire du systme, le
superviseur dinterruption ; cest donc ici que va se continuer lexcution.
La premire chose que fait le superviseur dinterruption est de dterminer
la nature de linterruption. Ici le signal lui donne la rponse : interruption
dentre-sortie, mais il y a dautres types (interruption volontaire par appel
systme, interruption dclenche par lhorloge interne, interruption provoque
par une condition particulire de programme comme dpassement de capacit
numrique...). Il se dbranche donc la section approprie, le superviseur
dinterruption dentre-sorties.
Le traitement des interruptions et le transfert du contrle la section adquate
du superviseur ou du noyau sont des lments de larchitecture de lordinateur et
du systme dexploitation cruciaux pour les performances et les possibilits de lensemble. Les lments matriels et logiciels sont troitement associs. Nous avons
dcrit une ralisation possible. Il en existe dautres, par exemple larchitecture Intel IA-64 utilise un vecteur dinterruptions : chaque lment matriel ou logiciel du
systme susceptible de dclencher une interruption, et notamment chaque contrleur de priphrique, est associ une structure de donnes rsidant une adresse
en mmoire xe au dmarrage du systme et qui contient elle-mme ladresse de
la section approprie du superviseur. Lensemble de ces adresses constitue le vecteur dinterruptions. Loccurrence dune interruption provenant de tel contrleur
dclenche automatiquement le transfert du contrle ladresse correspondante, qui
pointe sur la section approprie du superviseur. Ce dispositif, dit de vectorisation
des interruptions, est apparu sur les ordinateurs PDP 11 de Digital Equipment.
Une fois le contrle transfr au superviseur dinterruption dentre-sortie,
celui-ci retouve dans ses tables la rfrence du drapeau associ la demande
dentre-sortie concerne, par l il retrouve la structure de donnes qui la
dcrit, puis le processus dormant qui lavait mise.
48
Ordonnancement de processus
49
3.12.3 Premption
Ainsi que nous venons de le voir, le fonctionnement du processeur est cadenc
par des interruptions. Une interruption peut survenir du fait de la terminaison dune
entre-sortie, de lexpiration de la tranche de temps de processeur alloue un
processus, de loccurrence dune erreur du systme ou du matriel, ou simplement
la demande dun processus, comme lors dune demande dentre sortie.
chaque interruption, lordonnanceur prend la main. Cest pour cela que les
interruptions jouent un rle si important dans le fonctionnement du systme. Lordonnanceur examine la le dattente des processus prts (ligibles) pour lexcution
(dispatchable), comme dj dit. Souvent, et mme presque toujours, le dclenchement
dune interruption procde dun vnement la suite duquel cette le dattente est
50
modie : aprs une demande dentre-sortie, le processus qui la mise, et qui tait
donc actif, entre dans ltat non-prt (dormant) ; au contraire, aprs la terminaison
dune entre-sortie, le processus qui en attendait le rsultat redevient prt. Les interruptions sont les seules circonstances loccasion desquelles un processus peut
passer dun tat (prt, non-prt, actif, termin) un autre.
Dans tous les cas, lordonnanceur examine la le dattente sans prjug et donne
la main au processus prt de plus haute priorit, sans respect pour les positions
acquises. Il y a des exceptions : par exemple, si le systme est paramtr pour
une stratgie dordonnancement par tranches de temps, et si le processus le plus
prioritaire vient dpuiser la tranche prcdente, la rgle de rpartition interdit de
lui rendre la main. Mais de faon gnrale, tout processus de haute priorit redevenu
prt prendra la main au processus moins prioritaire qui sexcutait jusqualors. On
dit que le systme dexploitation qui permet ce transfert de contrle du processeur
est un systme premptif. Un vrai systme dexploitation doit tre premptif.
Ordonnancement de processus
51
52
sexcute peut tout moment tre interrompu, mme en plein milieu dune instruction en cas dinterruption asynchrone (et les interruptions asynchrones comportent,
dans le cas des multi-processeurs, les interruptions par un autre processeur accdant
la mmoire commune), le noyau du systme dexploitation va prendre la main
pour traiter linterruption, et lissue de ce traitement ce sera peut-tre un autre
processus qui recevra la main.
Ce risque dtre interrompu tout instant impose des prcautions. Les lments
essentiels du vecteur dtat du programme doivent pouvoir tre sauvegards, an de
permettre la reprise du traitement. Ces lments sont essentiellement la valeur du
PSW, qui permet notamment de retrouver linstruction en cours au moment de linterruption, et le contenu des registres, qui permet de retrouver les direntes zones
de mmoire utilises. Comme nous le verrons au chapitre 4, dans un systme mmoire virtuelle moderne chaque processus dispose de son espace de mmoire virtuelle
priv, ce qui simplie les choses. Cette opration de sauvegarde du contexte dexcution du processus interrompu et dinitialisation du contexte dexcution du processus
promu sappelle commutation de contexte (context switch). Selon les processeurs et
les systmes, ce peut tre une opration ge dans le matriel et invoque par une
instruction spcique unique, ou une squence dinstructions rptes comme un refrain au dbut de chaque section de programme, comme dans lOS 360/370. Nous
avons dj rencontr ce mcanisme aux sections 2.5 et 3.11.1.
Mais mme si ces prcautions ont t prises, il y a des oprations au cours
desquelles une interruption, suivie ou non dune commutation de contexte, risque
davoir des consquences catastrophiques. La squence des instructions qui constitue
le programme dune telle opration est appele section critique. Les sections critiques
sont gnralement dans le noyau du systme dexploitation. Le cas le plus courant
est celui dune allocation de ressource matrielle, ce qui suppose la mise jour de
tables : dans le cas de lallocation dune zone de mmoire relle, la table des cadres
de pages (ici nous anticipons sur le chapitre 4), dans le cas dune criture sur support
externe, la table des blocs libres sur le disque et la i-liste, qui dcrit la cartographie
des chiers et des blocs qui leur sont allous sur le disque (ce sera vu au chapitre 5).
Lorsquun processus veut acqurir une ressource contrle par le noyau, il met
un appel systme. Le traitement de cet appel systme va rsulter en lallocation de la
ressource, ce qui se traduit en mmoire par la modication des tables qui dcrivent
cette ressource. Lexcution de la squence des instructions du noyau qui eectuent
ce traitement est appele chemin de contrle du noyau. Tout ou partie du chemin
de contrle est une section critique.
La programmation dune telle section critique impose une protection particulire pour prserver lintgrit des donnes, il faut garantir une des deux conditions
suivantes :
Assertion 1 : Aucune interruption ne pourra avoir lieu pendant le droulement de
la section critique.
OU BIEN :
Assertion 2 : Si une interruption survient, elle peut avoir pour eet de rendre prt
un chemin de contrle du noyau qui tait dormant, par exemple dans le cas
dune interruption de n dentre-sortie. De ce fait, le chemin de contrle du
noyau qui tait en train dallouer des ressources cet instant peut perdre
la main au prot du nouveau concurrent, peut-tre dot dune priorit plus
Ordonnancement de processus
53
leve. Il faut alors garantir que les tables et les autres structures de donnes
en cours de modication ne pourront pas tre modies par ce nouveau chemin
de contrle.
Cest compliqu, et plusieurs mthodes peuvent tre employes selon les circonstances.
Nous avons introduit la notion de systme premptif, qui permet aux processus
de prendre la main des processus moins prioritaires lorsquils repassent ltat
prt. Lorsquun processus met un appel systme et quil excute des instructions
du noyau, en mode noyau (on dit aussi superviseur) donc, il nest par construction
pas premptible par un processus en mode utilisateur (qui excute des instructions
ordinaires crites par le commun des mortels). Mais ne risque-t-il pas la premption
par un autre processus en mode noyau ? Cela dpend du systme. Les premires
versions du noyau Linux ntaient pas premptives, un processus en mode noyau
ne pouvait pas subir la premption. Mais mme un noyau non premptif doit tenir
compte des interruptions et des systmes multi-processeurs. Les moyens dassurer la
vracit dune de ces deux assertions sont examines ci-dessous.
Le noyau Linux version 2.4 a vu apparatre un patch dvelopp par Robert
Love, destin le rendre premptif. Le rsultat est une amlioration assez spectaculaire des temps de rponse des processus. Le prix payer est une complexit
accrue, mais avec lavantage associ dun code 12 de meilleure qualit, intrinsquement adapt aux multi-processeurs.
Atomicit des oprations
Le premier moyen qui vient lide pour interdire la premption dun processus
en section critique dans le noyau, cest dassurer lininterruptibilit de la section
critique. Le moyen le plus radical, cest que cette section critique soit rduite une
instruction unique. Mme cela ne sut pas, puisquune instruction qui consomme
plusieurs cycles de processeurs (cas courant pour les processeurs CISC 13 tels que
le Pentium) peut tre interrompue par une interruption asynchrone mise par un
organe priphrique ou en provenance dun autre processeur sur un systme multiprocesseur. Il faut donc que la section critique soit compose dune instruction unique
sur un cycle unique. L on est sr que le systme reste dans un tat o la section
critique est excute soit totalement soit pas du tout : cette proprit dune opration
est nomme atomicit, et elle garantit que :
si le systme tait dans un tat cohrent avant lopration ;
si lopration nintroduit pas dincohrence ;
12. Le terme code est employ ici dans lacception de texte du programme . On parle de code
source pour dsigner le texte du programme tel quil a t crit par le programmeur dans le langage
de dveloppement, le code objet est le programme traduit en langage machine par le compilateur,
le code excutable est le programme sous forme binaire auquel ldition de liens a ajout tous les
sous-programmes compils sparment et les rfrences aux bibliothques partages ncessaires
lexcution. On notera que les dtracteurs de linformatique utilisent de faon pjorative la srie de
termes code, coder, codage pour dvaluer lactivit de programmation en suggrant que ce serait
une activit triviale, lapplication mcanique dun code.
13. Les abbrviations CISC (pour Complex Instruction Set Computer), RISC (pour Reduced Instruction Set Computer) et VLIW (pour Very Long Instruction Word) dsignent des classes dans la
zoologie des processeurs, dont la signication est donne la section 9.2.3.
54
Ordonnancement de processus
55
56
Chapitre 4 Mmoire
Sommaire
4.1
4.2
4.3
4.4
4.5
4.6
4.7
.
.
.
.
.
.
.
.
.
.
.
.
.
.
57
58
58
59
60
61
62
62
63
64
64
65
66
69
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
71
72
73
73
74
74
75
75
76
77
77
78
78
79
79
80
81
58
Mmoire
La mmoire du programme
59
toutes les donnes ne sont pas des nombres, il y a aussi des chanes de caractres,
du texte, des images et des sons reprsents de faon code. Et nous avons vu quil
fallait aussi stocker les instructions, qui souvent occupent chacune un mot 1 .
60
Mmoire
La mmoire du programme
61
1. possder un nom ;
2. possder une valeur ;
3. le langage permet, par le nom, de connatre la valeur de la variable ;
4. une variable a une dure de vie (une persistance), qui est souvent gale la
dure pendant laquelle le programme sexcute, mais qui peut tre plus courte
(variable locale un sous-programme) et que lon peut souhaiter plus longue
(les moyens de satisfaire ce souhait feront lobjet du chapitre suivant) ;
5. une variable a une visibilit, qui peut stendre lensemble du programme,
mais qui peut tre limite par exemple un sous-programme ;
6. il est possible par le langage de modier la valeur de la variable. Lopration
de modication de la valeur dune variable sappelle laectation (notons que
certains langages de haut niveau tels que ML et Haskell nautorisent pas cette
opration daectation).
Ne perdons pas de vue quen dernier recours ce que nous appelons valeur sera
une conguration de bits contenue dans un ou plusieurs mots de mmoire. La valeur
a donc une existence physique, elle est un lment de ltat de la mmoire.
Le nom sera en dernire analyse traduit en une adresse, ladresse du premier mot
de la rgion de mmoire o est stocke la valeur. Le nom nest quun objet du langage,
un objet symbolique destin disparatre au cours du processus de traduction de
langage volu en langage machine. Nous avons ainsi une chane de noms, depuis
lidentiant du langage volu jusqu ladresse mmoire physique en passant par
dventuelles adresses indirectes (des noms de noms) ou indexes, qui tous mnent
la mme donne. Cette chane parcourt en fait les dirents niveaux dabstraction
qui mnent de la description formelle dun traitement par le texte dun programme
jusqu son excution par un ordinateur matriel.
Revenons un instant sur laectation, qui est la proprit numro 6 de ce que
nous avons appel variable. Si nous en tions rests aux trois proprits prcdentes,
ce que nous appelons variable serait grosso modo la mme chose que ce que les mathmaticiens appellent variable. Mais laectation opre une rupture radicale entre
vision mathmatique et vision informatique du calcul, elle y introduit un aspect
dynamique, actif et concret qui est tranger aux mathmaticiens.
Or cette rupture, si elle est radicale, nest susceptible ni de suture ni de rduction.
Laectation est vraiment au cur de la problmatique informatique, cest elle qui
permet de modliser un calcul par des tats de mmoire successifs, bref cest elle qui
permet de raliser des machines de Turing.
62
Mmoire
celui dun collgue innocent cest trop injuste. Et si ce sont les donnes ou le texte
du systme, alors la catastrophe est gnrale.
Les premiers systmes de multiprogrammation abordaient ce problme par le ct
du matriel. Larchitecture 360 dcoupe (elle existe encore...) la mmoire en groupes
de 2 048 octets qui constituent lunit non partageable (le quantum) dallocation un
processus donn. Chacun de ces groupes possde une cl physique de quatre chires
binaires pouvant donc prendre 16 valeurs. Par ailleurs le PSW comporte un champ
de quatre bits qui contient la cl attribue son dmarrage au processus courant.
Lors de tout accs mmoire, le processeur vrie que la cl de la zone concerne est
bien gale la cl du processus courant, sinon le processeur provoque une erreur
fatale et le processus concern est interrompu. Bien sr le systme dexploitation
qui sexcute en mode privilgi bncie dune cl particulire, la cl zro, qui lui
donne accs toute la mmoire.
Ce systme est un peu rudimentaire : il nautorise que quinze processus concomitants et le systme. Le dveloppement des systmes mmoire virtuelle permettra
des dispositifs bien plus rans.
63
64
Mmoire
Mmoire virtuelle
65
les unes contre les autres. Mais une solution bien plus radicale allait advenir : la
mmoire virtuelle. La voici.
66
Mmoire
Les emplacements en mmoire virtuelle sont dsigns par des adresses virtuelles,
qui ressemblent comme des surs aux adresses relles que nous avons vues jusqualors. Les adresses multiples de 4 096 (selon notre exemple) sont des frontires de
pages, et les multiples de 32 4 096 = 131 072 des frontires de segments, mais cela
ne change pas grand-chose. La table des pages aura une entre par page, indexe
par ladresse virtuelle de la page, qui sera le numro dordre de loctet frontire de
page dans lespace virtuel, soit un multiple de 4 096, cest--dire un nombre binaire
se terminant par douze 0.
4.4.3 Pagination
Que dit la table des pages ? Dabord, pour chaque page virtuelle elle indique o
elle se trouve rellement. Selon les trois tats de mmoire voqus ci-dessus, il y a
trois situations possibles pour une page virtuelle :
1. elle peut avoir une incarnation en mmoire relle, physique, et la table indique alors ladresse relle de cette incarnation ; la zone de mmoire relle qui
accueille une page de mmoire virtuelle est appele cadre de page (page frame) ;
2. si elle correspond une adresse qui na encore jamais t invoque par le
programme, elle reste purement virtuelle et elle nexiste physiquement nulle
part, son existence est limite une entre vierge dans la table des pages ;
3. si cette page a t utilise un moment donn mais que lexcution du programme ne ncessitait pas son usage cet instant et quil ny avait pas assez de
place en mmoire centrale, elle peut avoir t place sur disque dans ce que lon
appellera mmoire auxiliaire de pages, et la table indiquera son emplacement
dans cette mmoire auxiliaire.
MMU (Memory Management Unit)
Comment fonctionne la mmoire virtuelle ? Les programmes ne connaissent que
la mmoire virtuelle, et des adresses virtuelles. Chaque fois quune instruction fait
rfrence une donne, cette rfrence est une adresse virtuelle. Il faut donc traduire
la vole ladresse virtuelle en adresse relle : lobtention dune vitesse raisonnable
impose un circuit logique particulier cet eet, appel DAT (Dynamic Address
Translation). Avec les autres fonctions de gestion de la mmoire virtuelle que nous
allons dcrire il constitue la MMU (Memory Management Unit).
Le DAT fonctionne de la faon suivante, illustre par la gure 4.1. Ladresse (24
bits dans notre exemple) est dcoupe en trois parties : les 12 derniers bits (si nous
poursuivons notre exemple avec des pages de taille 212 ), dits bits de poids faible, sont
considrs comme une adresse relative par rapport la frontire de page prcdente,
soit un dplacement dans la page. Les 5 bits de poids le plus fort sont un numro
de segment, index dans la table de segments du processus, qui permet de trouver
la table des pages du segment. Les 7 bits de poids intermdiaire sont un numro
de page, index dans la table des pages qui permet de trouver la page concerne.
La partition des 12 bits de poids fort en numro de segment et numro de page
nest quun artice pour hirarchiser la table des pages, ils peuvent tre considrs
globalement comme le numro de page.
Mmoire virtuelle
67
1234
N de page
Emplacemnent de la
table des pages
1
2
50 000
3
4
Emplacement du cadre
de page
Bit dinvalidit
1
Le bit dinvalidit
indique que la page
nest pas dans la
mmoire relle
Process
N de page et
de segment
tat
1
1
0
1
Emplacement de la case
4
Le systme rouve un
cadre de page libre
dans la mmoire relle
3
4
5
Cet lment
situe la page
dans la mmoire
auxiliaire de
pages
Figure 4.1 : Pagination : cas o la page demande nest plus en mmoire relle (exemple de lOS/370)
Comment obtient-on une page relle neuve ? Le systme gre une table des
cadres de pages en mmoire relle, cette table garde pour chaque cadre de
68
Mmoire
page un certain nombre dinformations, et notamment sil est libre. Deux cas
peuvent se prsenter :
a. Si le parcours de la table des cadres de pages rvle un cadre libre il est
allou la page vierge, son adresse est place dans la table des pages et
le programme peut poursuivre son excution.
b. Sil ny a aucun cadre de page libre, il faut en librer un. En premire
approximation nous dirons que le systme dexploitation procde ainsi
(nous verrons plus tard quelques ranements techniques qui amliorent
les performances sans bouleverser le schma de principe) : chaque entre
dans la table des cadres de pages comporte une estampille qui indique la
date du dernier accs dun programme une adresse comprise dans la page
qui rside dans ce cadre. Lestampille de plus faible valeur dsigne le cadre
de la page la moins rcemment utilise. Cette page est donc candidate
lviction : son contenu est recopi en mmoire auxiliaire de pages, son
cadre libr et allou notre page vierge. La table des pages est mise
jour et le programme continue comme dans le cas prcdent.
Cet algorithme qui consiste vincer la page la moins rcemment utilise
est appel LRU (Least recently used) et nous le retrouverons pour dautres
usages.
Voyons enn le cas 3 : la page a t utilise, elle a un contenu, mais elle ne
rside plus en mmoire relle, elle a t dplace sur disque en mmoire auxiliaire de page. Cette condition dclenche comme la prcdente une exception
de dfaut de page et le transfert du contrle au gestionnaire de dfaut de
page. Il faut pour pouvoir utiliser la page la ramener en mmoire relle, et
pour cela il faut quun cadre de page soit libre, ou en librer un : ceci est
fait selon le mme mcanisme qu lalina ci-dessus. Une fois le cadre de
page obtenu, le contenu de la page virtuelle qui tait en mmoire auxiliaire
est recopi dans ce cadre, la table des pages est mise jour et lexcution du
programme peut continuer. Cest le mcanisme illustr par la gure 4.1.
Mmoire virtuelle
69
70
Mmoire
3me espaceadresse
2me espaceadresse
Mmoire
virtuelle
5me espaceadresse
1er espaceadresse
4me espaceadresse
Mmoire
virtuelle
Mmoire
virtuelle
Mmoire
virtuelle
Mmoire
virtuelle
Mmoire relle
Cadres de pages
Noyau
La solution imagine par les auteurs de VMS est la suivante : les adresses sont sur
32 bits, ce qui autorise des espaces adresse de 232 octets, soit plus de quatre milliards
(4 294 967 296). Les 231 octets qui constituent la premire moiti de cet espace (avec
des adresses dont le bit de poids le plus fort est 0) sont dvolus au programme et
ses donnes. Les 231 octets suivants (avec des adresses dont le bit de poids le plus fort
est 1) sont dvolus au systme dexploitation, cest--dire que ces pages sont dcrites
par la table des pages du systme. Naturellement pour tous les programmes la table
des pages du systme est la mme, cest--dire que tous les programmes voient le
mme systme dexploitation avec les mmes adresses virtuelles, et ny ont bien
sr droit qu un accs en lecture mais pas en modication. On dit que le systme
dexploitation est mapp (de langlais mapped) dans lespace adresse du programme,
les adresses virtuelles des pages du systme sont superposes des adresses virtuelles
de lespace de chaque programme.
Les auteurs de Unix 4.4 BSD ont recours un dcoupage analogue, mais ils sont
moins gnreux pour le systme dexploitation (le noyau) et le programme reoit la
plus grande part de lespace adresse. Il est vrai que 4.4 BSD est moins volumineux
que VMS.
Aprs cet loge des systmes espaces adresse multiples, il convient de signaler
que les processeurs 64 bits semblent remettre la mode lespace adresse unique.
En eet lespace oert par une telle taille dadresse est susant pour les usages
actuels, et la conception du systme sen trouverait simplie. Larchitecture IA-64
Mmoire virtuelle
71
(Itanium) prvoit le support des deux types de gestion de mmoire virtuelle, et les
manuels Intel prsentent lespace adresse unique comme la voie de lavenir...
72
Mmoire
circuit. Les premiers architectes risquer cette audace furent ceux des processeurs
MIPS, et comme les rsultats furent excellents ceux des SPARC, des Alpha et des
HP PA leur embotrent le pas. Sur ces processeurs le seul matriel spcialis pour
la mmoire virtuelle est le TLB et sa logique de consultation.
Nous retrouverons dautres dispositifs doptimisation btis sur le mme principe : un dispositif rapide (et donc cher) pour traiter une petite quantit de cas
trs frquents, un dispositif plus lent pour traiter la grande masse des cas faible
occurrence. Cest notamment sur ce principe que reposent les dispositifs de cache,
qui constituent la hirarchie de mmoire, et que nous verrons bientt. Ce qui est
frustrant, cest quaucune modlisation mathmatique ne rend compte ce jour des
optimisations considrables quils procurent.
Mmoire virtuelle
73
Reste les cas rsiduels des rfrences non rsolues par le TLB : leur traitement
doit tre trait par le logiciel (systme dexploitation), mais ces cas sont si rares que
cela reste acceptable. Des mthodes telles que les tables associatives (hash tables)
sont de nature diminuer la pnalit qui en rsulte.
74
Mmoire
La technique du cache
75
cette ide de working set se marie bien avec la constatation note plus haut de la
localit des traitements.
Le chapitre 2 nous a dj procur un tel exemple, un peu particulier, de hirarchie de mmoire : les registres du processeur ne sont rien dautre que des cases
de mmoire incorpores lunit centrale pour pouvoir tre atteintes et modies
plus rapidement. Les sections prcdentes nous ont permis den voir deux autres
exemples :
lorganisation de la mmoire virtuelle vise ne maintenir en mmoire relle
que les pages actives un instant donn, (le working set) et relguer en
mmoire auxiliaire les pages inactives ;
le TLB conserve dans une toute petite table les traductions des adresses en
cours dusage, ce qui satisfait plus de 99% des demandes de traduction.
Le cas du TLB est spectaculaire parce que le rapport entre le nombre dadresses
virtuelles possibles et le nombre de celles quil conserve est norme : pour un processeur 32 bits (quasiment une antiquit...) chaque espace adresse comporte 220 pages
de 4 096 octets et le TLB en indexe 64 = 26 , soit si nous avons un instant donn
20 espaces adresse actifs (valeur trs modeste) une sur 20 16 384 = 327 680, et il
rsout nanmoins plus de 99% des dfauts de pages.
76
Mmoire
processeur
registres
Chip
cache L1
16K/16K
cache L2 92K
Mmoire
virtuelle
bus
systme
bus interne
Cache L3
cache disque
4 Mo
Mmoire relle
bus
Fichiers
Mmoire
de pages
8. Cf. note 6.
9. http ://www.sigops.org/sosp/sosp09/ladis.html
Langage et mmoire
Numbers Everyone Should Know
L1 cache reference
Branch mispredict
L2 cache reference
Mutex lock/unlock
Main memory reference
Compress 1K bytes with Zippy
Send 2K bytes over 1 Gbps network
Read 1 MB sequentially from memory
Round trip within same datacenter
Disk seek
10
Read 1 MB sequentially from disk
20
Send packet CA->Netherlands->CA
150
77
3
20
250
500
000
000
000
0.5
5
7
25
100
000
000
000
000
000
000
000
ns
ns
ns
ns
ns
ns
ns
ns
ns
ns
ns
ns
78
Mmoire
Langage et mmoire
79
80
Mmoire
Pourquoi se compliquer la vie faire tout cela, qui prend du temps, diront les
adeptes de Fortran, les physiciens ? Pour avoir une organisation plus ne et plus sre
de linformation, pour faciliter le travail du programmeur et lui viter des risques
derreur, notamment par les traits suivants :
1. Direntes activations dun sous-programme peuvent coexister, avec chacune
son vecteur dtat distinct, ce qui permet notamment un sous-programme
dtre rcursif, cest--dire de sappeler lui-mme.
2. La taille dune structure de donnes locale peut dpendre des arguments passs
au sous-programme.
3. Les valeurs, associes aux noms locaux, contenues dans le vecteur dtat stock
sur la pile, sont dtruites la n de lactivation, ce qui limine une cause
derreur de programmation.
4. Le vecteur dtat dun sous-programme appel ne peut plus exister aprs la
terminaison de lappelant.
Allocation de mmoire sur le tas
La plupart des systmes orent un appel systme pour obtenir une allocation
de mmoire, dune taille quelconque dtermine par le programme lexcution,
prise parmi les pages disponibles de lespace adresse du processus. Pour lOS 360 il
sagit de GETMAIN, pour UNIX de brk(), plus connu sous son habillage grand public
malloc(). La mmoire demande est prise dans une zone de lespace adresse du
processus appele le tas(heap), par opposition la pile et le systme renvoie au
programme un pointeur sur la zone alloue, qui, lui, rside gnralement dans la
pile.
Lassembleur et les langages de bas niveau comme C et C++ utilisent des fonctions explicites comme malloc() pour obtenir de la mmoire dans le tas et lui faire
correspondre les structures de donnes que le programmeur veut y placer, cependant que des langages dots dun plus haut niveau dabstraction font ce travail en
coulisse linsu du programmeur. Les cadres de pages ne sont eectivement aects
au processus que lorsque celui-ci gnre une exception en essayant daccder lune
de leurs adresses virtuelles.
Si lallocation est explicite, la libration doit ltre aussi : imaginons un sousprogramme appel dans une boucle et qui chacune de ses excutions demande
une allocation de mmoire dans le tas ; le pointeur qui permet dy accder est sur
la pile et il sera donc libr chaque terminaison, mais il nen va pas de mme
pour la mmoire obtenue sur le tas, dont rien ne permet de justier la libration
si le programme ne fait pas appel explicitement la fonction free(), qui remet le
pointeur de dbut de la mmoire libre sa valeur antrieure. Et il est parfois dicile
de savoir sil est lgitime de le faire.
En eet dans un programme complexe plusieurs sous-programmes peuvent faire
rfrence la mme zone de mmoire alloue. Imaginons un sous-programme qui
obtient une zone de mmoire, y place des donnes et renvoie comme rsultat
lappelant, en se terminant, la valeur du pointeur sur cette zone : le pointeur sur la
zone obtenu initialement tait sur la pile et disparat avec le sous-programme, mais
lappelant en a rcupr la valeur, quil peut alors passer en argument de nombreux
autres sous-programmes, ce qui fait qu un instant donn un nombre indtermin
Langage et mmoire
81
de sous-programmes possdent dans leur vecteur dtat un pointeur sur cette zone
dynamique. Quand pourra-t-on la librer ? Quand plus aucun pointeur actif ny fera
rfrence. Comment le saura-t-on ? Cest un problme dicile, dpourvu de solution
simple, pour lequel existent plusieurs algorithmes heuristiques.
Gestion de la mmoire dynamique
Les langages volus contemporains peuvent au bout du compte tre classs en
deux catgories : les langages gestion de mmoire explicite comme C, C++, Pascal,
o le programmeur est responsable de lallocation et de la libration des zones de
mmoire obtenues dynamiquement sur le tas, et les langages gestion de mmoire
automatique, comme Lisp, Smalltalk, Scheme, Caml ou Java, o la mmoire est
alloue implicitement quand la cration dun objet le ncessite. Les langages de la
seconde catgorie mettent en uvre un algorithme heuristique de libration des
zones de mmoire alloues et devenues inutiles ; ces algorithmes sont connus sous le
nom de ramasse-miettes, ou glaneur de cellules (garbage collector), en abrg GC ;
ils sexcutent priodiquement, de manire asynchrone par rapport au programme
lui-mme. Il existe une ralisation de Scheme pour Macintosh, MacGambit, qui ore
au programmeur une prsentation visuelle trs suggestive du dclenchement et de
lexcution du GC.
Signalons le cas intressant du langage Ada, dont toute la logique interne suggre
la prsence dun GC, prvu dailleurs par les concepteurs, mais le langage a trouv
son public dans la communaut du temps rel, cest--dire des ingnieurs qui crivent
des systmes pour piloter Ariane V ; les auteurs de tels systmes sont trs rtifs
lide du dclenchement asynchrone du GC, par exemple au moment de la mise feu
du second tage de la fuse lanceuse. Cette rticence a toujours retenu les auteurs et
ralisateurs dAda, qui na jamais eu de GC mais la place la procdure gnrique
UNCHECKED_DEALLOCATION, ce qui veut tout dire.
Les langages gestion de mmoire explicite (C, C++) sont des langages de bas
niveau, qui donnent au programmeur le contrle dobjets trs proches du matriel,
en loccurrence des pointeurs qui sont en fait des adresses mmoire. Ce contrle est
indispensable pour crire des systmes dexploitation, des pilotes de priphrique,
des programmes trs dpendants du matriel. Mais pour crire des programmes
de rsolution de systmes dquations, de comparaison de squences dADN ou de
construction darbres gnalogiques, cela ne se situe pas au niveau dabstraction appropri et oblige le programmeur (qui est peut-tre un mathmaticien, un biologiste
ou un gnalogiste) acqurir des comptences dont un langage mieux adapt devrait le dispenser, dautant plus que lexprience tend montrer que ces comptences
sont acquises incompltement et que la matrise des programmes qui en rsulte est
approximative.
Les langages GC comme Scheme ou Java sont des langages plus abstraits (par
rapport au rel, lordinateur) et de ce fait plus expressifs et plus utilisables pour des
tches moins tournes vers le systme dexploitation. Largument de la performance
est rgulirement avanc en faveur des langages gestion de mmoire explicite : outre
que cet argument est loin dtre prouv, il apparat que les deux langages qui ont eu,
et de loin, le plus de succs au cours des cinq dernires annes du second millnaire
sont Java et Perl, deux langages connus pour leur grande lenteur, ce qui montre que
la rapidit na, la plupart du temps, aucune importance avec les processeurs actuels.
Chapitre 5 Persistance
Sommaire
5.1
5.2
5.3
5.4
Mmoire auxiliaire . . . . . . . . . . . . . . . . . . .
5.1.1 Structure physique du disque magntique .
5.1.2 Visions de la mmoire auxiliaire . . . . . . .
Systme de chiers . . . . . . . . . . . . . . . . . .
5.2.1 Structure du systme de chiers Unix . . .
Notion de systme de chiers . . . . . . . .
La i-liste . . . . . . . . . . . . . . . . . . . .
Rpertoires de chiers . . . . . . . . . . . .
Cration dun systme de chiers . . . . . .
5.2.2 Traitement de chier . . . . . . . . . . . . .
Ouverture de chier . . . . . . . . . . . . .
5.2.3 Fichiers, programmes, mmoire virtuelle . .
5.2.4 Cache de disque . . . . . . . . . . . . . . . .
Systmes de chiers en rseau : NFS, SANs et NAS
5.3.1 Disques connects directement aux serveurs
5.3.2 Systmes de chiers en rseau . . . . . . . .
5.3.3 Architecture SAN . . . . . . . . . . . . . . .
5.3.4 Architecture NAS . . . . . . . . . . . . . . .
Critique des chiers ; systmes persistants . . . . . .
5.4.1 Reprise sur point de contrle . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 84
. 84
. 86
. 88
. 88
. 88
. 89
. 91
. 94
. 96
. 96
. 97
. 97
. 98
. 98
. 99
. 100
. 101
. 102
. 105
Introduction
Les chapitres prcdents nous ont montr lactivit frntique des processus qui
se bousculent pour obtenir le contrle dun processeur dsesprment squentiel et
de lespace mmoire qui pour tre virtuel nen est pas moins irrmdiablement ni.
De cette activit rsulte la construction de structures qui peuvent tre grandioses,
mais qui resteraient jamais imperceptibles aux humains si lordinateur ne comportait des dispositifs destins communiquer avec le monde extrieur : crans,
claviers, haut-parleurs, joysticks, imprimantes etc. Nous ne nous attarderons pas
sur le fonctionnement de ces appareils et sur la faon dont le systme dexploitation
les actionne, non que ce sujet soit ddaignable, mais parce quil est tout compte fait
assez peu dirent (en plus simple) du fonctionnement des mmoires auxiliaires sur
disque magntique que nous allons examiner maintenant.
84
Persistance
Mmoire auxiliaire
85
jusqu survoler la piste voisine. Cest dirent des platines de lecture des disques
vinyle : la tte ne touche pas le disque. Et contrairement aux CD-ROMs et aux
disques vinyl, il ny a pas une piste en spirale mais plusieurs, concentriques.
Sens de rotation
Vue de dessus
Secteur
Piste
Tte de lecturecriture
Vue de profil
Plateau
Surfaces
Cylindre
Chaque piste est dcoupe en secteurs. Une donne est repre par son numro
de piste depuis la plus extrieure (appel numro de cylindre, parce que lensemble
des pistes de mme rang, situes la verticale lune de lautre, constitue un cylindre),
son numro de plateau (ou de tte de lecture, ce qui revient au mme), le numro
du secteur qui la contient et le rang de loctet dans le secteur. Chaque opration
daccs physique au disque transfre un ou plusieurs secteurs dun coup, cest le
logiciel (du contrleur ou du systme dexploitation) qui dcoupe ou assemble les
donnes lintrieur des secteurs.
Les plateaux et les ttes de lecture-criture sont enferms dans une enceinte
scelle, le HDA (Head-Disk Assembly), mais jusque dans les annes 1970 les piles de
disques taient amovibles, ce qui diminuait beaucoup la abilit.
Le disque dur est un support de donnes accs direct, par opposition une
bande magntique par exemple qui est un support accs squentiel, cest--dire que
les blocs de donnes enregistrs sur une bande sont accessibles les uns aprs les autres
dans lordre selon lequel ils ont t crits ; tandis que sur un disque chaque secteur
est accessible individuellement. Le logiciel (en loccurrence le systme) donne au
contrleur un numro de secteur ou de bloc, le contrleur place les ttes magntiques
86
Persistance
Mmoire auxiliaire
87
ses calculs il constituerait en sortie un chier davis dimposition, avec un avis par
contribuable. Ce chier en sortie serait transmis en entre au service du courrier,
lequel aprs mise sous pli et aranchissement le transmettrait la poste, etc. On
voit que le contenu des chiers na pas grand-chose de commun avec le contenu de la
mmoire de lemploy, qui incidemment pour faire son travail a recours une autre
chier, le volume du Code gnral des Impts.
Cette seconde vision introduit donc un type dobjet supplmentaire, le chier.
La naissance de la notion de chier sexplique historiquement pour deux raisons.
Incarner dans un ordinateur rel la vision de la mmoire auxiliaire comme extension
de la mmoire centrale butait jusqu tout rcemment sur des obstacles techniques
importants ds la dicult de raliser des mmoires et des disques de capacit
susante et de sret de fonctionnement assez stable pour y conserver de grands
volumes de donnes. Ensuite, lorsque dans les annes 1960 linformatique a commenc tre utilise pour la gestion des entreprises et des administrations, elle a
rencontr des habitudes de travail o les donnes taient justement organises sous
forme de chiers de cartes perfores traites par des machines mcanographiques 1 ,
et cest assez naturellement que la notion de chier sest transpose linformatique.
Dexprience la notion de chier nest pas dune intuition facile. Les dicults
qui laccompagnent ne sont pas uniquement pdagogiques, en tmoignent le soin que
mettent les informaticiens thoriciens viter den parler et la grande htrognit
des errances qui caractrisent ses ralisations techniques.
Considrer la mmoire auxiliaire comme un prolongement persistant de la mmoire centrale, conformment la premire vision voque ci-dessus, est beaucoup
plus simple tout point de vue. Qui na eu loccasion, en portant secours un utilisateur nophyte, de lentendre parler de son document en mmoire sans pouvoir
distinguer la mmoire centrale du disque dur ? Ds les annes 1960 les auteurs du systme Multics avaient choisi de doter leur systme dune mmoire virtuelle de grande
taille, dont une partie tait constitue de donnes persistantes sur disque magntique, charges en mmoire centrale en tant que de besoin. Ctait trs lgant et
simple, mais la technologie lectronique de lpoque condamnait un tel systme
la lenteur et une relative inecacit, et de surcrot cette solution contrariait les
habitudes dj prises par la corporation des informaticiens.
Au cours des annes 1970 sont apparus les systmes de gestion de bases de donnes (SGBD), destins perfectionner la notion de chier en dotant une collection
de chiers dun ensemble de logiciels et dindex qui en permettent une vision et
une gestion logiques, globales et cohrentes. Lide gnrale est simple : imaginons
le systme de gestion dune bibliothque, autre monde de chiers. Nous aurons un
chier des auteurs, un chier des ouvrages, un chier des diteurs, un chier des
sujets, etc. Un ouvrage peut avoir plusieurs auteurs, plusieurs diteurs, plusieurs
sujets, mais chaque information nest enregistre quune fois et les logiciels et les
index permettent de retrouver, en balayant les chiers, tous les livres de tel auteur
ou sur tel sujet, sans avoir crire un programme spcial cet eet. Lunicit den1. Une erreur historique assez rpandue situe lorigine de linformatique dans la mcanographie.
Cette thse a pris naissance dans lentourage des grandes entreprises mcanographiques qui se sont
converties linformatique de gestion, comme IBM et Bull.
88
Persistance
Systme de chiers
89
rsident sur le mme disque, celui-ci sera partag en partitions, chacune constitue
de cylindres contigus et vue par le systme comme si elle tait un disque physique.
Chaque partition reoit un systme de chiers. Il existe aujourdhui pour Unix des
systmes de chiers (au sens : principe dorganisation et logiciels pour lincarner) qui
permettent une partition de stendre sur plusieurs disques et de changer de taille
dynamiquement, mais nous nous en tiendrons ici au systme de chiers classique
de Unix, tel ext2 pour Linux 2 . Il faut aussi mentionner le fait que les contrleurs
de disques modernes dissimulent de plus en plus au systme la structure physique
du disque : ils font leur aaire de la gestion des pistes et des cylindres, quils optimisent, et prsentent le disque au systme comme une squence de blocs logiques
simplement reprs par leur numro dordre (pour les PCs cette faon de voir les
disques se nomme LBA, comme Linear Block Addressing). Pour complter cet assaut
dabstraction en marche, les Unix modernes comme Linux permettent lutilisation
simultane de systmes de chiers dirents, comme par exemple les systmes VFAT
de Windows 98 ou NTFS de Windows 2000, dont les particularits sont caches par
un systme de chiers virtuel (VFS) qui prsente aux autres lments du systme
une interface uniforme, manipule par des commandes identiques que VFS excute
au moyen doprations adaptes chaque systme de chiers particulier, dont le dtail est dissimul lutilisateur. On dit que le traitement de ces systmes de chiers
conformment leur organisation particulire est pour lutilisateur rendu transparent , terme dont on observera quen informatique il est synonyme dopaque.
La i-liste
Lorigine de toute information sur le contenu dun systme de chiers est le
super-bloc, qui comporte notamment les donnes suivantes : taille du systme de
chiers, nombre de blocs libres, dbut de la liste des blocs libres. Comme le superbloc contient des informations vitales pour la validit du systme de chiers, il est
reproduit en plusieurs exemplaires des emplacements convenus. La structure dun
systme de chiers ext2 est reprsente par la gure 5.2.
Le super-bloc pointe sur une autre structure de donnes cruciale, la i-liste (i pour
index), qui est en quelque sorte une carte du systme de chiers, permettant dy
retrouver les chiers. Pour les utilisateurs de tel ou tel autre systme dexploitation,
la i-liste correspond la FAT-table de Windows 98 ou la MFT de NTFS, le systme
de chiers de Windows 2000, ou encore la VTOC (Volume table of contents) des
grands systmes IBM. Les lments de la i-liste sont appels i-nuds. La i-liste doit
reter chaque instant la structure logique et le contenu du systme de chiers, et
comme celui-ci change tout moment, au fur et mesure que des chiers sont crs,
dtruits, agrandis ou rtrcis, la i-liste doit possder une structure trs exible.
Chaque chier est dcrit par un i-nud, qui doit permettre den retrouver tous
les fragments, puisque, comme nous lavons dit plus haut, les blocs qui constituent un
chier ne sont pas forcment contigus, et comment en serait-il autrement dailleurs,
2. Les systmes de chiers tels que ext2 sont classiques au sens o ils dirent aussi bien de
larchaque UFS que des systmes plus modernes qui permettent la journalisation des oprations
(cf. ci-dessous section 5.4.1) et lextension dynamique de partitions tendues sur plusieurs disques
physiques. Lanctre commun des systmes classiques est FFS (Fast File System), cr pour Unix
BSD par Marshall Kirk McKusick .
90
Persistance
Bloc
damorage
Groupe de blocs n 0
Super
Descripteurs
bloc
du groupe
Bitmap du
Groupe de blocs n n
Bitmap
Table
dinoeuds
Blocs de donnes
Figure 5.2 : Structure dun systme de chiers Ext2 et dun groupe de blocs
puisque lorsquon agrandit un chier les blocs qui viennent la suite ont pu tre
utiliss entre-temps. Un i-nud comporte :
douze pointeurs directs, qui donnent lemplacement sur le disque de douze
blocs de donnes (cas de Linux, pour dautres Unix ce peut tre dix) ;
un pointeur indirect, qui pointe sur un bloc de pointeurs directs, qui euxmmes pointent sur des blocs de donnes ;
un pointeur double indirect, qui pointe sur un bloc de pointeurs indirects,
qui eux-mmes pointent sur des blocs de pointeurs directs, qui eux-mmes
pointent sur des blocs de donnes ;
un pointeur triple indirect, qui pointe sur un bloc de pointeurs doubles indirects, qui eux-mmes pointent sur des blocs de pointeurs indirects, qui euxmmes pointent sur des blocs de pointeurs directs, qui eux-mmes pointent
sur des blocs de donnes.
Si le chier tient dans moins de douze blocs (et cest le cas de la majorit des
chiers), il sera dcrit par les pointeurs directs du i-nud, et les pointeurs indirects
ne seront pas utiliss, mais on voit que cette structure gomtrique permet de dcrire
un trs grand chier (voir gure 5.3).
Avec des blocs de 4 kibioctets 3 (4 096 octets), chaque pointeur tient sur quatre
octets, et nous pouvons avoir :
direct : 12x4Ki = 48 kibioctets ;
indirect : 1024x4Ki = 4 mbioctets ;
double indirect : 1024x1024x4Ki = 4 gibioctets ;
triple indirect : 1024x1024x1024x4Ki = 4 tbioctets.
Outre ces pointeurs qui permettent, partir du i-nud, de retrouver les blocs
de donnes, le i-nud contient aussi dautres informations capitales, qui sont les
attributs du chier :
les droits daccs au chier ;
lidentiant numrique du propritaire du chier ;
sa taille ;
la date du dernier accs au chier ;
3. Voir note 6.
Systme de chiers
91
Bloc de
donnes
Bloc de
donnes
12 blocs adressage
direct
Bloc
indirect
Bloc de
donnes
Bloc de
donnes
Bloc de
donnes
Bloc de
donnes
Bloc de
donnes
Bloc de
donnes
Bloc de
donnes
Bloc de
donnes
Bloc de
donnes
Bloc de
donnes
Bloc de
donnes
92
Persistance
20
fichier1
numro
dinoeud
44
33
un_fichier_avec_un_nom_assez_long
numro
dinoeud
27
16
unautrefichier
4
2
dplacement jusqu lentre suivante
longueur de ce nom
Figure 5.4 : Entres de rpertoire dun systme de chiers Unix (format classique)
Systme de chiers
93
rpertoire
bin
racine (root)
fichier
home
tmp
usr
martin
bloch
date
brouillon.txt
var
passwd
vmlinuz
etc
hosts
Travaux
livre.tex
photo1.jpg
94
Persistance
la racine du systme : /
/bin
/etc
/usr
/home
...
sarraute
mahfouz
kawabata
bloch
/home/mahfouz
Impasse2Palais
...
/home/bloch/Travaux
LivreProgrammation
LivreSysteme
/home/kawabata
/home/bloch/Mail
Amis
Editeurs
Programmation
recursivite.tex
Une procdure
qui sinvoque
ellemme...
/home/bloch/Images
tanteLeonie
voyageVenise
...
PaysdeNeige
GrondementMont
...
brouillon.txt
Longtemps je me
suis couch de
bonne heure...
.../LivreProgrammation
.../LivreSystme
introduction.tex
recursivite.tex
algorithmes.tex
...
introduction.tex
processus.tex
memoire.tex
...
processus.tex
Lide de
rification du
processus...
.bashrc
PATH=...
export PATH
VISUAL=...
memoire.tex
La mmoire, terme
dun anthropomorphisme
quelque peu abusif...
Systme de chiers
95
96
Persistance
install sur une partition. La i-liste dcrit physiquement les chiers situs
dans la partition considre. Le rpertoire est une structure logique qui sert
en dcrire le contenu du point de vue de lutilisateur.
Systme de chiers
97
98
Persistance
donne de meilleures performances, mais le laps de temps durant lequel les donnes
ne sont quen mmoire volatile donne des frissons dans le dos des mes pusillanimes.
Pour expliquer la dirence entre les deux politiques de gestion de cache, risquons
une comparaison. Je reois chaque jour une masse de courrier qui sempile sur mon
bureau : ce sont des rsultats doprations dentre-sortie. La plupart de ces courriers
ne me concernent pas directement, mais je dois les conserver dans mes dossiers, pour
un ventuel usage futur. Jai le choix entre deux mthodes :
chaque jour, ouvrir le courrier, reprer pour chaque message de quoi il sagit
an de dterminer le dossier qui laccueillera dans mes placards, et ranger
chaque document sa place ainsi choisie : cest la mthode write-through ;
laisser pendant des mois le courrier non ouvert sempiler sur mon bureau ;
quand linvasion rend la situation intenable, trois ou quatre fois par an, ranger : cest la mthode write-back.
Il va sans dire que jai recours la seconde mthode, write-back, bien plus ecace : ainsi quand jouvre le courrier, une proportion importante des lettres, notes
et autres convocations concerne des vnements rvolus depuis longtemps, et peut
donc aller directement la corbeille papiers, sans passer par ltape fastidieuse et
coteuse du rangement en dossiers. Les adeptes du write-through sont condamns
devenir de purs bureaucrates force de prendre au srieux des messages dont lexprience prouve que les ignorer purement et simplement ne cause aucun dommage.
Et, a priori, jaurai choisi comme date de rangement un jour tranquille o dautres
obligations plus urgentes ne seront pas dires cause de cette activit subalterne.
Le rle de la mmoire persistante est tenu par les dossiers dans les placards ;
le plateau de mon bureau joue le rle de cache. Un long entrainement me permet
de savoir assez bien ce que contiennent les piles apparemment anarchiques qui encombrent mon bureau, et je suis capable daccder assez vite un document si le
besoin sen fait sentir, en tout cas beaucoup plus vite que si je dois fouiller dans mes
beaux dossiers bien rangs mais dont jai oubli depuis longtemps ce que jy ai mis.
99
aux congurations envisages ici, aussi nous limiterons-nous aux interfaces SCSI,
non sans avoir signal quand mme quIDE a connu des volutions (ATA comme
AT Attachment et SATA comme Serial ATA) qui pourraient un jour en faire des
concurrents srieux de SCSI. Il existe dj des armoires de disques SATA pour faire
des NAS de second niveau bon march.
La connexion dun disque SCSI un ordinateur suppose linstallation dans le
fond de panier de lordinateur dune carte contrleur SCSI qui comporte linterface
adquate, appele bus. Il faudra aussi congurer le systme dexploitation pour y
inclure les pilotes SCSI adquats. un bus SCSI on pourra raccorder, selon les
versions, huit ou seize appareils SCSI, disques ou autres (le contrleur compte pour
un), qui seront connects en chane les uns derrire les autres. Retenons que toute
raccordement dune chane SCSI un ordinateur ncessite une intervention avec ouverture du botier de la machine. Il sagit dune connexion de bas niveau, troitement
couple un ordinateur donn.
contrleur
SCSI
Intrieur de
lordinateur
100
Persistance
101
Serveurs
Disques
Commutateur SAN
HBA
HBA
HBA
Disques
Tte du NAS
Carte
Ethernet Commutateur
Gigabit SAN incorpor
Carte
Ethernet
Gigabit
Carte
Ethernet
Gigabit
Carte
Ethernet
Gigabit
Rseau
Ethernet
Gigabit
Figure 5.9 : Topologie dun NAS
La gure 5.9 reprsente larchitecture dun NAS. Lobjet appel tte du NAS
est en fait un ordinateur quip dun systme dexploitation spcialis qui ne fait
102
Persistance
que du service de chiers. En gnral cest un systme Unix dpouill de toutes les
fonctions inutiles pour le systme de chiers, et spcialement optimis pour ne faire
que cela. Le plus souvent, la faon dont le NAS eectue la gestion de bas niveau de
ses disques est... un SAN en Fibre Channel.
Quelle est la dirence entre un NAS et un serveur de chiers ordinaire ? Fonctionnellement, on pourrait rpondre : aucune. En fait, tout est dans le systme
dexploitation spcialis. Les protocoles de partage de chiers mis en uvre sur des
systmes ordinaires ont la rputation de performances mdiocres et de robustesse
problmatique. Les NAS de fournisseurs srieux ont rsolu ces dicults et orent
des performances excellentes.
Quel est lavantage du NAS par rapport au SAN ? Les serveurs de calcul sont totalement dcoupls des serveurs de donnes, il nest plus ncessaire de les quiper du
matriel et des pilotes ncessaires laccs physique aux disques, une carte Ethernet
Gigabit (quelques dizaines dEuros) et la pile TCP/IP standard font laaire et on
ne soccupe plus de rien. Il est prudent de prvoir un rseau rserv lusage du
NAS et de ses clients.
Quelles sont les limites de larchitecture NAS ? Cest du service de chiers, donc
les accs de bas niveau ne sont pas disponibles (cest dailleurs le but). Dans lantiquit, les SGBD utilisaient souvent un mode daccs aux disques qui court-cicuitait
le systme de chiers (raw device), pour des raisons de performances. Aujourdhui
lamlioration des caractristiques du matriel a fait que cette approche nest plus
gure utilise. Les bases de donnes Oracle de lInserm sont installes en mode systme de chiers . Les base de donnes Oracle chez Oracle, Inc. sont installes sur
des NAS de la maison Network Appliance.
Quels sont les autres services disponibles avec un NAS ?
mirroring de systmes de chiers distance, par exemple duplication des
donnes de Vilejuif sur le site dAuteuil ;
gestion du cycle de vie des donnes : on peut prvoir un stockage de second
niveau pour les donnes inactives mais quil faut garder, sur des disques plus
lents et moins chers ;
sauvegarde des donnes autonome, sans intervention des serveurs de calcul :
la tte de NAS est un ordinateur, capable de piloter une sauvegarde selon
le protocole NDMP (Network Data Management Protocol) support par le
logiciel de sauvegarde Time Navigator utilis par lInserm.
Dernier avantage : les solutions NAS sont moins onreuses que les solutions SAN,
parce quau lieu de mettre de la quincaillerie partout, le matriel destin au stockage
de donnes est concentr dans une seule armoire (un rack pour les petits NAS comme
celui que nous avons Auteuil).
103
ver pour un usage ultrieur. La dirence entre les deux rside nalement dans les
circonstances qui dans lun et lautre cas amnent les donnes cesser de rsider
en mmoire, et cest cette dirence qui est lorigine de ralisations techniques
dont la ressemblance ne saute pas aux yeux. Mais au fond, la mmoire virtuelle et
le systme de chiers font la mme chose, avec des dirences dinterface plus que
de fonctionnement, et lon peut dire que si la mmoire virtuelle tait venue plus tt
les chiers nauraient sans doute pas vu le jour.
Dailleurs, des prcurseurs ont choisi de sen passer. Dans Multics, dj voqu
la section 3.10.1, la mmoire virtuelle est dcoupe en segments de taille variable.
Cest une structure de mmoire virtuelle plus complexe que celle que nous avons
dcrite, mais elle remplit les mmes fonctions. Eh bien, pour Multics on dit simplement que certains segments sont persistants et rsident de faon permanente sur
disque. Cest un attribut dun segment : la persistance ! Et pour savoir quels segments sont prsents tel ou tel emplacement de la mmoire persistante, on utilise
une commande de liste des segments, en abrg ls, que les Unixiens reconnatront.
Nous avons dj mentionn le systme Pick et celui de lIBM AS400, construits
autour dune base de donnes. Le choix est surtout clair avec Pick : chaque donne
individuelle porte un nom utilisable dans lensemble du systme, et ce systme de
nommage est uni. Par exemple, si le systme est utilis pour une application de
paie dans un organisme public, il y a une variable et une seule pour donner la valeur
du point dindice des fonctionnaires. Cette variable a un propritaire (sans doute le
Secrtaire dtat la Fonction Publique), qui dispose seul du droit den modier la
valeur. Tous les programmes qui doivent connatre cette valeur peuvent y accder.
Lors de la parution au Journal Ociel dune modication de la valeur du point
dindice, une seule opration garantit la justesse de tous les calculs.
Incidemment, cette architecture de donnes procure aux utilisateurs profanes
(et aux autres !) une vision considrablement simplie de lensemble du processus
de traitement et de stockage de linformation. Une grande partie de la complexit
de ces choses pour le nophyte tient la dicult davoir une vision densemble
dun systme qui runit et coordonne des objets qui ltat actif sont en mmoire
et qui au repos sont disperss dans une foule de chiers aux statuts varis. Avoir
un concept unique de mmoire pour tous les objets, persistants ou non, et une
dsignation unique pour tout objet quels que soient son tat et son activit, ce sont
des amliorations intellectuelles considrables. Le corporatisme informatique en a eu
raison, provisoirement souhaitons-le.
La recherche sur les systmes persistants continue, mme si elle reste assez condentielle. Laugmentation des performances des processeurs et des mmoire devrait
lencourager en abolissant les obstacles de cet ordre qui ont eu raison des prcurseurs.
Le principe de persistance orthogonale est apparu la n des annes 1970, dans
le domaine des langages de programmation. Il proclame que toute donne doit tre
habilite persister pendant un dlai aussi long quil est utile, et que la mthode
daccs une donne doit tre indpendante de la nature de sa persistance. Dans les
systmes classiques il en va tout autrement : les donnes volatiles en mmoire centrale
sont invoques par leur nom, les donnes persistantes sur mmoire externe sont
accueillies en mmoire centrale comme le rsultat de linvocation dune commande
dentre-sortie. Un systme persistant relguera ces dirences techniques dans les
couches basses du systme et prsentera une interface uniforme daccs aux donnes.
104
Persistance
105
Ctait ce que faisait sa faon Pick, et que fait encore en 2013 le System i dIBM
(prcdemment AS400).
Les principaux projets de recherche en persistance au dbut de ce millnaire sont
les suivants :
Le projet MONADS a dmarr en 1976 lUniversit Monash (Australie).
Labstraction de base est le segment, la Multics : persistance gros grain.
Clouds vient du Georgia Institute of Technology (1988). Les abstractions
sont lobjet et lactivit (thread). Repose sur le micro-noyau Ra.
Eumel et ses successeurs L3 et L4 ont leur origine en 1977 lUniversit de
Bielefeld, puis au GMD ( Gesellschaft fr Mathematik und Datenverarbeitung , quivalent allemand de lINRIA), et sont principalement luvre du
regrett Jochen Liedtke. Eumel fut le premier systme persistance orthogonale. Il sagit aussi dun systme micro-noyau (voir chapitre 10).
Grasshoper est un systme persistance orthogonale dvelopp lUniversit de Saint Andrews, cosse. Les entits persistantes sont des containers, des
loci et des capabilities. Dans les systmes classiques la notion despaceadresse
est inextricablement mle celle de processus. Les containers et les loci sont
des entits analogues mais mieux distingues (pardon : orthogonales), qui
ont vocation persister. Le noyau du systme lui-mme est persistant (il y
a quand mme toujours une partie non persistante, ne serait-ce que pour le
boot).
Charm est le successeur de Grasshoper. Le noyau de Charm nexporte aucune
abstraction pour le support de la persistance, mais uniquement des domaines
de protection capable de communiquer avec le noyau.
Charm appartient une nouvelle tendance parmi les systmes dexploitation : au lieu de cacher le matriel derrire des abstractions, il lexpose an
que les stratgies de gestion des ressources soient implmentes en mode
utilisateur . Cela suppose des dispositions favorables de larchitecture matrielle.
Le motif est de sparer :
les rgles de gestion des ressources de bas niveau ;
des mcanismes qui les implmentent.
Lauteur du systme de haut niveau est libre dimplmenter rgles et mcanismes par une bibliothque.
Incidemment, on peut signaler quil existe un systme dexploitation universellement rpandu et qui possde beaucoup de caractristiques persistantes : PalmOS,
qui anime les ordinateurs de poche PalmPilot et Handspring Visor. Chaque programme reste en mmoire dans ltat o lutilisateur labandonne, et o il peut le
retrouver lorsquil rallume lengin. Il ny a pas de vrai systme de chiers. Cest assez
surprenant quand on est habitu aux ordinateurs classiques.
106
Persistance
dun point en amont pas trop loign. La dicult principale rside bien sr dans
la restauration de ce que nous avons appel le vecteur dtat du programme : valeur
des variables, et contenu des chiers.
Ce problme nest pas propre aux systmes persistants, et il a dj t abord et
rsolu. Ds les annes 60 lOS 360 orait une possibilit de checkpoint-restart pour
les programmes utilisateur. Cette possibilit consistait enregistrer priodiquement
sur disque une copie de la mmoire et un relev de ltat des chiers ouverts. En cas
dincident le programme repartait automatiquement du dernier point de contrle. Ce
mcanisme entranait une consommation despace disque considrable pour lpoque
et surtout une organisation rigoureuse du lancement et de lexcution des chanes
de programmes, ce qui en restreignait lusage.
Aujourdhui une fonction analogue existe pour les ordinateurs portables : une
combinaison de touches de commande permet de sauvegarder le contenu de la mmoire sur disque et de mettre lordinateur en veille, puis de le ractiver plus tard,
ce qui permet par exemple de changer de batterie sans passer par la procdure
darrt du systme et de redmarrage, elle-mme grosse consommatrice de temps et
dlectricit.
Les SGBD convenables orent la possibilit de dclarer des transactions, cest-dire de dclarer un ensemble doprations, par exemple une mise jour complexe
de la base, comme une mta-opration atomique. Conformment ltymologie une
mta-opration atomique est inscable : soit toutes les oprations de la transaction
sont accomplies correctement, soit elles sont toutes annules. Ceci est destin
viter de laisser la base dans un tat incohrent, voire inconnu. Les transactions
sont gnralement associes un dispositif de roll in-roll out qui permet dentriner
une transaction (roll in) ou de ramener la base de donnes ltat antrieur la
transaction (roll out).
Depuis les annes 1980 sont apparus sur les systmes en production, issus de la
recherche, les systmes de chiers journaliss tels Andrew File System de lUniversit
Carnegie-Mellon, ADVFS driv du prcdent dans les laboratoires Digital Equipment (DEC), JFS dvelopp par IBM, XFS ralis par Silicon Graphics (SGI), et
plus rcemment sous Linux Ext3fs et Reiserfs. Le principe de la journalisation est le
suivant : avant toute opration de modication du systme de chiers par une opration dentre-sortie, on enregistre dans un chier spcial (journal, en anglais log) la
description de lopration, et aprs lopration on enregistre quelle sest bien passe.
Ainsi, aprs un incident qui aurait corrompu une partie du systme de chiers, il
sut de rejouer les oprations enregistres dans le journal pour restituer un tat
cohrent, ce qui est inniment plus sr et plus rapide que de recourir un logiciel de
contrle et de restauration de la cohrence interne du systme de chiers tels fsck
sous Unix ou SOS Disk sur Macintosh.
Avec les systmes persistants, le problme est simpli autant que gnralis. Un
systme persistant digne de ce nom na ni chiers ni a fortiori systme de chiers.
Il est de ce fait indispensable de garantir tout prix le maintien de la cohrence du
contenu de la mmoire virtuelle, seul lieu de conservation des donnes, et ce quel
que soit lincident, y compris une coupure de lalimentation lectrique. Les systmes
persistants disposent donc dun systme denregistrement de points de contrle, qui
permet de sauvegarder priodiquement le contenu de la mmoire, et de reprise sur
incident partir du dernier point de contrle. Ce mcanisme nest pas une option
107
Chapitre 6 Rseaux
Sommaire
6.1
6.2
6.3
6.4
6.5
6.6
. 110
. 111
. 112
. 112
. 113
. 115
. 116
. 117
. 118
. 118
. 119
. 119
. 121
. 124
. 124
. 125
. 127
. 129
. 130
. 131
. 135
. 135
. 136
. 136
. 137
. 139
. 139
. 143
. 145
. 147
. 149
. 152
. 153
. 154
. 154
. 154
110
Rseaux
6.7
6.8
6.9
.
.
.
.
.
.
.
.
.
. 155
. 156
. 156
. 157
. 158
. 159
. 160
. 160
. 161
Introduction
La question des rseaux informatiques et celle des systmes dexploitation sont en
principe distinctes, et elles forment dans les cursus universitaires des disciplines particulires, mais les ordinateurs contemporains sont pratiquement toujours connects
des rseaux de quelque sorte, et les techniques qui leur permettent dy accder sont
tellement intimement enfouies au cur du systme quil nest gure possible de parler
de celui-ci sans aborder ceux-l. De surcrot, des systmes sont apparus qui mettent
prot le rseau pour regrouper plusieurs ordinateurs et les considrer comme un seul
multi-ordinateur, ou systme distribu. Bref, sil est de bonne mthode de distinguer
larchitecture des ordinateurs, qui traite de lorganisation des lments matriels des
machines, larchitecture des systmes dexploitation, qui envisage la couche logiciel
dinterface entre le matriel et les programmes de lutilisateur, et larchitecture des
rseaux, consacre aux moyens de communication entre ordinateurs distants, il est
clair quaucun de ces domaines ne pourra tre trait srieusement sans quil soit fait
appel aux deux autres.
111
Linvention du tlphone a conduit le formaliser sous le nom de communication sur un canal bruit . En eet il y a du bruit, cest--dire quaucun canal
de communication nest parfait, certains lments du message sont altrs ou perdus. Dans le cas du tlphone cest tolrable jusqu un certain point, il en rsulte
quelques grsillements et bourdonnements ; Henrik Nyquist, ds les annes 1920, et
Claude Shannon [67] en 1948 ont pos les bases thoriques prcises de ce que veut
dire ici jusqu un certain point , et ces bases constituent la thorie dite de linformation 2 . Il va sans dire que pour transmettre de linformation code sous forme
numrique, les altrations des messages sont beaucoup moins tolrables. Nous allons
dire quelques mots trs sommaires de la thorie de linformation.
112
Rseaux
quantit dinformation
I(m1 ) = log10 (1/p1 ) = log10 1 = 0
I(m2 ) = log10 (1/p2 ) = log10 101 = +1
I(m3 ) = log10 (1/p3 ) = log10 102 = +2
...
H(S) =
pi log pi
i=1
qui permet dvaluer a priori la quantit moyenne dinformation que peut fournir un
message ; sa valeur est maximale pour des messages quiprobables. Cette grandeur
a la mme forme que lentropie thermodynamique et on lappelle entropie de S.
Lentropie permet dvaluer la richesse informationnelle dun texte ; Shannon a
montr que si linformation moyenne dun alphabet de 27 signes quiprobables tait :
log2 27 = 4, 75 bits/lettre, le contenu dun texte anglais ordinaire ntait que de 1
1
, ou 80% de signes inutiles.
bit/lettre, soit une redondance de : 1 4,75
Couche 1, physique
113
C
D
G
E
F
114
Rseaux
E
F
Figure 6.2 : Graphe simplement connexe
Notion de protocole
115
116
Rseaux
Couche 4, transport
protocole couche 4
interface
interface
Couche 3, rseau
protocole couche 3
interface
interface
Couche 2, liaison
de donnes
protocole couche 2
interface
interface
Couche 1, physique
La liaison peut tre tablie de deux faons. La plus simple est la liaison point
point, cest celle que vous utilisez quand vous vous connectez de votre domicile
5. Sans trop entrer dans les dtails, signalons que la couche de liaison de donnes comporte deux
sous-couches, dont lune est la couche MAC (Medium Access Control, ou commande de laccs au
support physique). Dans le cas des rseaux locaux (Local Area Networks, LANs), la couche 2 se
rduit pratiquement la sous-couche MAC, et de ce fait on rencontre les expressions couche MAC,
adresse MAC etc.
117
lInternet avec un modem. Le chemin entre votre modem et le modem de votre fournisseur daccs est une liaison point point, dailleurs gre par le protocole PPP
(Point to Point Protocol, comme son nom lindique), cest dire que vous pouvez
considrer ce lien logiquement comme un l unique, mme si le rseau tlphonique
travers est, du point de vue tlphonique, complexe. Derrire le modem du fournisseur daccs (FAI), il y a bien sr un rseau complexe qui nest sans doute plus
point point. La liaison point point est gnralement le procd utilis pour les
liaisons longue distance qui constituent un rseau tendu, ou WAN (pour Wide
Area Network), par opposition un rseau local (LAN, pour Local Area Network),
cest--dire cantonn un immeuble ou un campus. Ces notions de longue distance
et de localit sont toutes relatives, par exemple les rseaux daccs lInternet des
distributeurs de tlvision par cble sont des rseaux locaux lchelle dune ville
comme Paris (on parle alors de rseau mtropolitain).
Un rseau local est constitu diremment : un assez grand nombre de nuds
partagent une mme infrastructure de cblage 6 , par exemple dans un btiment Cette
infrastructure constitue un unique rseau dacheminement, qui ore notamment un
service de couche 2. Le rseau dacheminement runira un ou plusieurs rseaux de
couche 2 et accdera un rseau plus vaste de couche 3, par exemple lInternet,
par lintermdiaire dun ordinateur spcialis appele passerelle de couche 3, ou plus
souvent routeur. Mais examinons pour linstant les rseaux de couche 2. Nous pouvons les considrer comme des graphes connexes complets conformes la gure 6.1,
cest--dire que chaque nud peut parler directement tous les autres nuds du
mme rseau (de couche 2). Ces rseaux utilisent gnralement la diusion (broadcast), cest--dire que lmetteur envoie les signaux tous les nuds du rseau,
charge pour le destinataire de reconnatre ceux qui lui sont destins par un procd dadressage dcrit la section suivante. Cest le cas des rseaux locaux de type
Ethernet.
118
Rseaux
Pour quun ordinateur puisse tre connect un rseau Ethernet, il faut quil
possde une interface matrielle qui se prsente gnralement sous la forme dune
carte dite carte rseau, ou NIC (Network Interface Card). Un ordinateur peut possder plusieurs cartes rseau, pour tre reli plusieurs fois au mme rseau, ou
plusieurs rseaux de couche 2 dirents, ce qui lui permet ventuellement de jouer
le rle de routeur, cest--dire de faire passer les donnes dun rseau un autre.
Chaque interface rseau reoit sa fabrication une adresse de couche 2, dite
adresse MAC (MAC pour Medium Access Control) ou adresse Ethernet, ou
encore adresse physique (parce quassocie un dispositif matriel), de 48 bits de
longueur. Lunicit lchelle mondiale des adresses MAC est assure par lIEEE, qui
attribue chaque industriel producteur un prxe, charge lui de grer lunicit des
chires suivants. Ainsi ladresse MAC de lordinateur que jutilise en ce moment est
00:48:54:C0:C9:04, o chaque groupe de deux caractres isol par : reprsente
un octet cod en hexadcimal, soit une valeur dcimale comprise entre 0 et 255 (voir
annexe A section A.4.1 pour les dtails de cette reprsentation). Ceci assure en
principe quil ny aura pas sur le rseau de dysfonctionnements provoqus par deux
interfaces ayant la mme adresse, mais en fait il est possible de modier une adresse
MAC dynamiquement par logiciel. Cela dit les logiciels raisonnables (et non pirats)
ne font pas cela.
119
120
Rseaux
erreur
Ac
k
Ac
k
Ac
k1
1
k0
Ac
121
122
Rseaux
stations reoivent toutes les trames, identient celles qui leur sont destines, jettent
les autres.
La communication par radio entre sites distants interdit toute ide de contrle
centralis : ALOHA doit prvoir le cas o deux stations (ou plus) voudraient commencer mettre en mme temps. Cette circonstance est nomme collision, et rsulte
en trames brouilles, incomprhensibles, en un mot perdues. Il va falloir rmettre
ces trames perdues, et si possible en vitant de provoquer une nouvelle collision,
sinon le protocole naboutira jamais.
Pour diminuer le risque de nouvelle collision, ALOHA utilise un algorithme probabiliste : chacune des stations qui a mis une trame perdue cause de la collision
calcule un nombre alatoire, en dduit un intervalle de temps et rmet. La probabilit que deux stations aient calcul le mme dlai est trs faible ; si nanmoins cest
le cas une nouvelle collision a lieu, et il faut ritrer le calcul. La probabilit que
deux stations calculent trois fois de suite le mme dlai est tellement faible que cet
algorithme, en pratique, fonctionne trs bien. Il peut tre encore amlior au moyen
dune horloge centrale qui met un signal dont la priode est gale au dlai de transmission dune trame travers le rseau : les trames ne peuvent tre mises quau
top dhorloge donn par ce signal. Cette discrtisation des missions amliore
lecacit du rseau en diminuant lintervalle de temps minimum avant rmission
en cas de collision.
Ethernet utilise le mme principe quALOHA : le support physique du rseau
est accessible par toutes les stations simultanment, quil sagisse dun cble coaxial
comme dans les annes 1980, de liaisons en paires torsades dans les annes 1990, de
bre optique, dun rseau hertzien, comme la mode (fort pratique mais avec quelques
problmes de scurit induits) sen rpand en ce dbut de millnaire, de liaisons infrarouges, etc. Il y a donc des collisions. Ethernet apporte deux perfectionnements par
rapport ALOHA :
les stations coutent le trac sur le cble avant dmettre et, si le cble est
occup, observent un dlai avant de ressayer ;
si une collision se produit, les metteurs la dtectent immdiatement et
cessent dmettre.
Ces amliorations confrent au protocole Ethernet le qualicatif CSMA-CD (Carrier Sense Multiple Access with Collision Detection, ou accs multiple avec coute
de la porteuse et dtection de collision).
Les aspects non dterministes, probabilistes, du protocole Ethernet ont pu inquiter : et sil y a sans arrt des collisions, alors le rseau sera bloqu ? Les concurrents
ont bien sr mis prot ces angoisses pour faire la promotion de leurs protocoles
dterministes, beaucoup plus lourds et moins ecaces, tel Token ring dIBM, aujourdhui bien oubli. Le succs dEthernet, qui a t total, est un argument de plus
pour croire aux rsultats du calcul des probabilits.
La convergence des algorithmes dEthernet impose un certain nombre de
contraintes sur la topologie et lorganisation physique des rseaux. Il faut notamment
quune trame puisse traverser le rseau aller et retour selon son diamtre (cest-dire entre les deux nuds les plus loigns lun de lautre) dans un dlai aller et
retour de 51,2 s. Pour la premire version dEthernet sur coaxial 10 Mbps (mbibits par seconde), dite 10Base5, cette condition imposait quil ny ait pas plus de
2,5 km de cble et pas plus de 4 rpteurs entre les nuds. Un rpteur est un ma-
123
124
Rseaux
Couche 3, rseau
125
Circuits virtuels
Pensons maintenant la circulation de wagons de marchandises dans un rseau
ferr : ils sont accroch des locomotives pour former des trains. Soit par exemple un
wagon acheminer de Lille Nice. Il va dabord tre accroch un train LilleParis.
Paris, le train va tre dmembr dans une gare de triage et notre wagon accroch
un nouveau train Paris-Marseille, en compagnie de nouveaux compagnons wagons.
Marseille un nouveau triage aura lieu lissue duquel un train venant par exemple de
Perpignan mnera notre wagon jusqu Nice. Ces trois trains successifs auront roul
des vitesses direntes en comportant des wagons dirents, mais nous pouvons
dire, du point de vue de lentreprise lilloise qui envoyait le contenu dun wagon de
Lille Nice, quils ont constitu un unique train virtuel LilleNice pour le wagon
qui nous intresse. Sur aucun des trois segments de la ligne virtuelle LilleNice, le
wagon na eu besoin dun conducteur inform de la destination et de litinraire
dtaill pour y parvenir : le conducteur de la locomotive et les oprateurs des postes
daiguillage ont assur son acheminement. Il fallait juste une tiquette (sans doute
126
Rseaux
code barre ou lectronique) Nice sur le wagon pour quil soit correctement
aiguill lors des opration de triage.
Les rseaux informatiques conformes la norme X25, dont lexemple en France
est le rseau Transpac, popularis en son temps par le Minitel dont il tait le support,
fonctionnent selon un principe conforme la mtaphore du train de marchandises.
Le ux dinformations est dcoup en paquets de taille plus ou moins xe, quelques
centaines quelques milliers de caractres, et ces paquets vont tre achemins par
un circuit virtuel. Lorsque lon veut tablir une communication entre deux nuds
du rseau, on commence par dterminer un circuit virtuel qui passe par dirents
quipements intermdiaires que nous appellerons concentrateurs. Un concentrateur
est un ordinateur spcialis qui dispose dun certain nombre de lignes de communications, dune mmoire et dun logiciel. Le logiciel du concentrateur de Paris est
capable de dterminer que pour contribuer ltablissement du circuit virtuel Lille
Nice il faut envoyer les paquets en provenance de Lille et destins Nice sur la ligne
qui se dirige vers le concentrateur de Marseille, qui fera suivre. Le concentrateur
gardera en mmoire une table (dite table de routage) qui associera un circuit virtuel LilleNice un numro didentication et une sortie vers le concentrateur de
Marseille. Chaque paquet expdi sur ce circuit virtuel comportera comme une tiquette le numro didentication de circuit virtuel qui permettra au concentrateur
de lexpdier dans la bonne direction.
Lensemble de ces conventions format et contenu des tables de routage et des
paquets, format des adresses (analogues des numros de tlphone) qui identient
de faon unique chaque nud et chaque extrmit du rseau, procdure dtablissement du circuit virtuel, structure de son numro didentication, rgles dacheminement des paquets, procdure daccus de rception par laquelle lextrmit destination avertit lextrmit origine de la bonne n de lchange constituent un
protocole de communication, ici en loccurrence le protocole X25, protocole de couche
3 pour les rseaux commutation de paquets par circuits virtuels.
Le progrs par rapport la commutation de circuits est considrable : plusieurs
circuits virtuels peuvent partager, pour une partie de leurs trajets respectifs, la
mme infrastructure physique. Les tronons trs frquents peuvent tre quips de
lignes plus haut dbit que ceux qui le sont moins. Les concentrateurs ralisent
ladaptation de dbit entre les liaisons de caractristiques direntes. Ce modle a
beaucoup plu aux oprateurs tlphoniques traditionnels parce quil permettait un
mode de tarication conforme leurs habitudes : une fois le circuit virtuel tabli,
tous les paquets empruntent le mme itinraire et il sut de les compter dans un
concentrateur quelconque pour pouvoir facturer au bit prs.
Nous allons voir mieux. Le modle que nous venons de dcrire a des limites :
ltablissement dune communication exige que soit constitu ds auparavant un
circuit virtuel de bout en bout. Cela ne pose pas de problme particulier au sein dun
rseau dot dune administration unique et centralise, par exemple Transpac. Il est
la rigueur concevable dorganiser une coordination entre quelques grands oprateurs
nationaux, conformment encore une fois au modle familier France Tlcom et
ses homologues dans dautres pays, quoique lexprience ait prouv le caractre
laborieux (et onreux) dune telle coordination. Mais nous allons voir un principe
plus souple, celui de lInternet, qui permet lacheminement sr des communications
parmi un univers de rseaux multiples au foisonnement anarchique.
Couche 3, rseau
127
128
Rseaux
Donnes utilisateur
Segment TCP
Entte
Entte
transport (TCP) application
Donnes utilisateur
Entte
rseau (IP)
Entte
Entte
transport (TCP) application
Donnes utilisateur
Datagramme
(ou paquet) IP
Entte
Entte
transport (TCP) application
Donnes utilisateur
Ainsi, un message lectronique sera dabord dot par votre logiciel de courrier
des en-ttes applicatives, en loccurrence telles que dcrites par le RFC 822 (ce sont
les lignes From:, To:, Subject:, etc. que vous lisez en haut des messages). Puis
ce message conforme au RFC 822 se verra dcoup en segments TCP, chacun dot
de len-tte convenable (dcrite plus bas). Chaque segment TCP sera empaquet
dans un datagramme IP qui possde lui aussi une en-tte. Et chaque datagramme
sera expdi sur la couche liaison de donnes qui correspond au support physique,
Ethernet par exemple.
Le protocole rseau IP fournit la couche transport un service non able non
connect de datagrammes. Le terme datagramme signie que le ux de bits remis
par la couche transport (TCP) est dcoup en paquets achemins indpendamment
les uns des autres. Par non able nous entendons que la couche IP ne fournit aucune
garantie de remise des datagrammes ni aucun contrle derreur, et par non connect
nous entendons que la couche IP ne maintient aucune information dtat sur une
transmission de donnes en cours, et notamment quelle ne garantit pas la remise
des datagrammes dans lordre dans lequel ils ont t mis.
Ces caractristiques sont de nature inquiter les nophytes, et semblent curieuses, dautant plus que la couche de liaison de donnes fournit la couche rseau,
8. ... ou UDP, lautre couche transport disponible au-dessus dIP.
Couche 3, rseau
129
pour chaque segment physique dun chemin de donnes utilis par un datagramme,
un service able de ux de bits remis dans le bon ordre.
En fait, la couche IP ne fournit pas de contrle derreur parce que de toute faon
la couche TCP devra en eectuer, ainsi que la vrication du bon ordre de remise
des datagrammes au terminus de la transmission, et que de tels contrles au niveau
de la couche 3 seraient redondants. Son asctisme et sa dsinvolture confrent la
couche IP la simplicit, la lgret et la souplesse qui font son ecacit. Mais avant
den dcrire plus prcisment les principes techniques, il nous faut donner quelques
informations sur lorganisation du plus grand rseau IP : lInternet.
Organisation administrative de lInternet
Une chose que les nophytes ont souvent du mal comprendre, cest que lInternet ne soit la proprit de personne ni daucune institution. Saisissons cette occasion
de dmentir la lgende rpte ad nauseam qui voudrait que lInternet ait t invent la demande des militaires amricains selon un cahier des charges rdig en
vue de prserver une capacit de communication aprs une frappe nuclaire. Il ny
a jamais rien eu qui ressemble de prs ou de loin un cahier des charges de lInternet . Cette thse tlescope plusieurs vnements lis mais distincts. Paul Baran,
de la rme RAND, contractant du DoD (Department of Defense), avait pos les
principes dun tel systme de communications dpourvu de point de centralisation
unique an de maintenir certaines liaisons mme si certains nuds venaient tre
dtruits. Les travaux de Baran furent publis entre 1960 et 1964. Le mme DoD,
plusieurs annes plus tard, en 1969, a impuls par son agence lARPA (Advanced
Research Projects Agency) la cration du rseau ARPANET, qui ntait pas destin aux communications militaires mais faciliter la collaboration entre centres
de recherches universitaires et industriels sous contrat avec lARPA. BBN (Bolt,
Baranek & Newman) a t trs impliqu dans le dveloppement dARPANET, o
se retrouvent certaines ides de Paul Baran ; ce rseau fut un des premiers (avec
Cyclades en France) utiliser la technique de commutation de paquets. En 1976, la
clairvoyance de Vint Cerf et de Robert Kahn, le nancement de BBN et les contrats
de lARPA devenue entre temps la DARPA donnrent naissance au protocole rseau
de lInternet, TCP/IP. Un peu plus tard, en 1979, le groupe de recherche en systme
(Computer Systems Research Group, CSRG) de lUniversit de Californie Berkeley allait incorporer TCP/IP une nouvelle version de Unix, dite BSD (Berkeley
Software Distribution). Tous ces lments marinaient dans une soupe originelle qui a
donn naissance lInternet la n des annes 1970, quand les centres de recherche
connects ARPANET ont voulu communiquer avec les universits de leur choix et
que la NSF (National Science Foundation) a entrepris de leur en donner les moyens.
Le fonctionnement de lInternet, limage de sa construction, repose sur la coopration volontaire. Les dcisions organisationnelles et techniques sont prises par
des instances aux sances desquelles tout un chacun peut assister et participer.
LInternet Architecture Board (IAB) (IAB) est responsable des grandes orientations et de la coordination.
LInternet Engineering Task Force (IETF) se charge de la normalisation
court terme et met les Requests for Comments (RFC), qui sont les documents
de rfrence pour le fonctionnement du rseau. Citons ici le nom de Jon
Postel, diteur des RFC depuis la premire en 1969 jusqu sa mort en 1998,
130
Rseaux
et auteur ou coauteur de 204 dentre elles, ce qui lui a confr une inuence
considrable sur la physionomie du rseau. Toutes les RFC sont accessibles
par lURL (Universal Resource Locator) http://www.ietf.org/rfc/ ou sur
de nombreux sites miroirs. Nous ne saurions trop en conseiller la lecture,
mme si leur qualit littraire est ingale elles fournissent sur lInternet une
information de premire main, souvent expose trs clairement, et dont la
citation dans les dners en ville vous assurera une rputation de guru du
rseau.
LInternet Steering Group (IESG) coordonne lIETF, dont leectif est devenu
trs important.
LInternet Assigned Numbers Authority (IANA) centralise et contrle les
conventions relatives lidentication des objets du rseau, et notamment
veille lunicit des adresses.
LInternet Corporation for Assigned Names and Numbers (ICANN) supervise
lattribution des noms de domaines et des adresses.
Cette organisation cooprative ne signie pas labsence de rapports de force marchands ou politiques, mais elle exclut (au moins court terme) la prise de contrle
par une entreprise unique.
Organisation topographique de lInternet
La gure 6.6 donne une reprsentation schmatique de la topographie de lInternet. Cette reprsentation est simplie, notamment elle est purement arborescente,
alors que rien nempche une entreprise davoir plusieurs FAI, ni un FAI dtre
connect plusieurs centres dinterconnexion de niveau suprieur, ce qui complique
le schma et le transforme dun arbre en un graphe connexe quelconque. Lessentiel
dans ltablissement dune communication, cest, chaque nud, de savoir quel est
le prochain nud sur litinraire, et par quelle liaison latteindre. Les nuds terminaux, origines ou destinations des communications, sont au sein des rseaux locaux
de campus ou dentreprise. Les routeurs sont des nuds particuliers, dots de plusieurs adresses rseau (une par interface raccorde une ligne de communication)
et possdant des tables de routage.
La gure 6.7 reprsente un gros plan sur un rseau local simple, raccord lInternet par un routeur, et constitu dun unique segment de couche 2, en loccurrence
un rseau Ethernet.
La double ligne horizontale symbolise le bus, ou graphe connexe complet, qui
stipule quune trame mise par une des stations atteindra toutes les stations du
rseau. Les rseaux Ethernet contemporains ont une topologie physique assez dirente de ce schma, surtout sils utilisent les transmissions sans l, mais ce schma
correspond toujours bien la structure logique de la communication.
Les stations ordinaires ont une seule interface rseau, et donc une seule adresse
de couche 2 et une seule adresse de couche 3 (dans les deux couches les adresses sont
associes aux interfaces). Dans notre exemple les adresses (de couche 3) des stations
vont de 192.168.2.101 192.168.2.105. Le routeur, par dnition, possde au
moins deux interfaces et donc deux adresses, ici vers le rseau local et vers le FAI
et lInternet. Dans notre exemple ladresse intrieure est 192.168.2.1 et ladresse
extrieure 171.64.68.22.
Couche 3, rseau
131
vers routeur
dun client
Un rseau local
sur un
campus
171.64.68.22
192.168.2.105
192.168.2.103
192.168.2.101
192.168.2.104
192.168.2.102
Ladresse et le datagramme IP
Comme nous lavons vu plus haut, la couche rseau a sa propre vision de la
topologie du rseau, et partant son propre systme dadressage.
Il faut tout dabord rappeler que les adresses de couche 3, comme celles de couche
2, sont attribues aux interfaces et non aux machines. Une machine qui a trois
132
Rseaux
cartes rseau aura au moins trois adresses ; chaque interface peuvent correspondre
plusieurs adresses.
Comme nous allons le voir, ladresse a deux fonctions : lidentication dun nud
et sa localisation ; elle est en cela analogue au numro de tlphone. On aurait pu
imaginer quil en soit autrement : notre numro de scurit sociale nous identie
sans nous localiser, ce qui nous vite davoir en changer chaque dmnagement.
Mais cest ainsi et la nouvelle version du protocole IP, IPv6, reste en gros dle
ce principe ; la dissociation de ces deux rles de ladresse aurait des avantages
indniables pour les stations mobiles, de plus en plus nombreuses, et des recherches
se poursuivent dans cette direction.
Chaque adresse IP est unique 9 dans tout lInternet, ce qui lui permet dassurer
sa fonction didentiant. Quant la fonction de localisation elle est assure par les
mcanismes complexes du routage.
La faon dont une station (terme qui dsigne un nud vu du point de vue de
celui qui sen sert) reoit son adresse IP est variable. LICANN distribue des tranches
dadresses des organismes rgionaux (pour lEurope, cest RIPE, pour Rseaux IP
Europens), qui les redistribuent des organismes qui peuvent tre nationaux (pour
la France cest lassociation AFNIC), qui eux-mmes les attribuent aux fournisseurs
daccs lInternet (FAI). Lorsquune entreprise ou un particulier veut obtenir un
accs lInternet, il sadresse un FAI, qui lui attribue, selon limportance de son
rseau et de son abonnement, une ou plusieurs adresses IP. En gnral, les particuliers
nont pas besoin dune adresse xe permanente : lorsquils allument leur ordinateur
et leur modem, le routeur du FAI le dtecte et leur envoie une adresse temporaire,
aecte dynamiquement partir dun pool dadresses, qui servira le temps de la
session de travail. Cette adresse peut dailleurs tre prive (voir plus haut).
Depuis une dizaine dannes, IP est en pleine transition : les adresses couramment
utilises sont celles dIP version 4 (spci par le RFC 791 de septembre 1981), qui
comportent 32 chires binaires (bits), ce qui autoriserait thoriquement un maximum
de 4 milliards de nuds, en fait moins, cause de la structure de ladresse. Cette
valeur qui semblait astronomique dans les annes 1970 est en passe dtre atteinte
par le dveloppement de lInternet. Les organismes qui coordonnent lInternet ont
dni une nouvelle version du protocole, IP version 6, et sont en train de planier son
dploiement, ce qui ne sera pas une mince aaire. Ladresse IPv6 comporte 128 bits.
Cette nouvelle version du protocole apporte dautres innovations, dans le domaine
de la scurit et dans celui de lauto-conguration des nuds qui rejoignent le rseau
notamment.
Ladresse IPv4 est structure en deux parties : les chires les plus signicatifs
dsignent le numro de rseau, ou adresse de rseau, les moins signicatifs ladresse
locale, qui identie une interface dun nud dans le rseau (une machine peut avoir
9. Il y a une exception lunicit des adresses IP : sur un rseau connect lInternet, on
peut dcider que certaines machines ne seront pas visibles de lextrieur, cest--dire quelles
ne pourront pas tre directement atteintes par une communication en provenance de lInternet.
Les communications quelles entameront se feront par lintermdiaire dun routeur qui, lui, sera
visible . Ces machines non visibles pourront recevoir des adresses dites prives, pour lesquelles la
contrainte dunicit sera limite au rseau local considr. Le moyen par lequel elles communiquent
avec lInternet, que nous dcrirons plus en dtail un peu plus loin (cf. section 6.5.4), repose sur une
traduction dadresse (NAT, pour Network Address Translation) eectue par le routeur.
Couche 3, rseau
133
vers.
identifiant
TTL
protocole
suprieur
flags
position du
fragment
somme de contrle
Actuellement ce systme assez rigide est souvent contourn et les classes sont de
fait abolies par le systme CIDR (Classless Interdomain Routing), qui instaure une
situation hirarchique plus simple o, une feuille de larborescence, ladministrateur
dun rseau local xe les quelques bits les plus droite de ladresse dune interface,
puis le FAI rgional xe quelques bits un peu plus gauche, puis un organisme
national encore quelques bits supplmentaires, et ainsi de suite jusqu lICANN qui
134
Rseaux
distribue les bits de gauche toute la plante, tout ceci en essayant de sorganiser
pour que des machines topologiquement proches les unes des autres aient le plus de
bits de gauche en commun an de simplier et dabrger les tables de routage. Mais
comme le RFC 791 est toujours en vigueur et que la plupart des adresses que vous
rencontrerez au cours des prochaines annes lui obiront, autant comprendre cette
syntaxe curieuse.
La partie adresse de rseau de ladresse joue le rle de prxe : ainsi, dans
un rseau local de campus ou dimmeuble tel que reprsent par la gure 6.7, tous
les nuds du rseau ont le mme prxe, qui caractrise le rseau. Dans notre cas,
ladresse de rseau est 192.168.2, ce qui incidemment est un prxe dadresse rserv
aux rseaux privs, non visibles de lInternet. lintrieur du rseau, les nuds sont
distingus par le suxe de leur adresse. De lextrieur du rseau, pour envoyer un
message un de ses nuds, il sut de lenvoyer ladresse extrieure du routeur
dentre (dans notre exemple 172.64.68.22), ce routeur dtiendra linformation
propre acheminer le message la bonne adresse. Quand une machine du rseau
souhaite expdier un datagramme une machine extrieure, elle lenvoie ladresse
intrieure du routeur (192.168.2.1), qui joue le rle de passerelle de sortie et qui
sait (nous allons bientt le savoir nous aussi) comment le faire parvenir destination.
Pour donner une meilleure vision du datagramme (ou paquet) IPv4, la gure
6.8 en donne le diagramme complet. Le champ protocole suprieur permet de
connatre la nature des donnes, en gnral soit un segment TCP, soit un segment
UDP. Les informations de la seconde ligne (identiant, ags, position du fragment)
servent dans le cas suivant : tous les segments dun itinraire dans un rseau nont
pas forcment les mmes caractristiques techniques, et notamment certains peuvent
naccepter quune taille maximum de paquet infrieure la taille fournie par le nud
prcdent, ce qui oblige le routeur fragmenter le paquet, qui devra bien sr tre
rassembl un moment ou un autre, grce ces informations. Cette possibilit
de fragmentation est un dispositif souvent utilis par les pirates pour leurrer les
logiciels de scurit qui analysent les paquets de donnes, parce que les algorithmes
de fragmentation et de rassemblage sont compliqus et donc souvent mal raliss
par certains fournisseurs.
Le paquet IPv4 comporte beaucoup dinformations en fait inutiles et parfois
gnantes, en particulier la somme de contrle qui doit tre recalcule chaque fois
que len-tte du paquet est modi (elle ne contrle lintgrit que de len-tte). Le
paquet IPv6 est beaucoup plus simple, comme en tmoigne la gure 6.9.
Ladresse IPv6, de 128 bits donc, est note de la faon suivante : elle est dcoupe
en tranches de 16 bits, reprsente chacune par quatre chires hexadcimaux, les
tranches spares les unes des autres par le signe : , ainsi :
0123:4567:89ab:cdef:0123:4567:89ab:cdef
Il y a des rgles assez subtiles pour abrger cette reprsentation lorsquelle comporte de longues suites de bits zro, dont lexpos ne nous semble pas indispensable, sachant que le lecteur curieux en trouvera le dtail dans le RFC 2373
(http://www.ietf.org/rfc/rfc2373.txt).
IPv6 introduit dautres modications dans le traitement des adresses : si une
adresse est toujours attribue une interface (plutt qu un nud), cette attribution
est temporaire et les adresses sont rputes changer. Les chires les moins signicatifs
Couche 3, rseau
135
32 bits
vers. prio.
tiquette de flux
entte
nombre max.
de sauts
suivant (*)
136
Rseaux
Figure 6.10 : Rseau sans NAT : les adresses des htes sont des adresses uniques et routes sur
Internet.
chambre a un numro local, usage strictement interne, et qui peut trs bien tre
le mme que celui dune chambre dans un autre htel : cela na aucune consquence
fcheuse parce que le numro de la chambre nest pas visible de lextrieur ; ceci
permet parfaitement loccupant de la chambre dappeler lextrieur en donnant un
code particuler ( composer le 0 pour avoir lextrieur ), et de recevoir des communications en passant par le standard qui eectue la commutation vers la ligne de la
chambre.
Adresses non routables
Le systme NAT repose sur un principe analogue : dans un rseau local, seuls
les serveurs qui ont vocation abriter des serveurs vus de tout lInternet, comme le
serveur WWW de lentreprise ou sa passerelle de messagerie, doivent recevoir des
adresses reconnues universellement, et donc uniques et conformes au plan dadressage
de lInternet. Les postes de travail ordinaires peuvent recevoir des adresses purement
locales, qui ne sont pas routables, cest--dire quun paquet destination dune telle
adresse peut circuler sur le rseau local et atteindre sa destination, mais ne peut pas
franchir un routeur, parce que ces classes dadresses sont explicitement dsignes
pour que les routeurs les oublient. Sont dites non routables toutes les adresses appartenant aux blocs dadresses dnis cet eet par le RFC 1918 [61] : 192.168.0.0
192.168.255.255 (prxe 192.168/16), 172.16.0.0 172.31.255.255 (prxe 172.16/12)
et 10.0.0.0 10.255.255.255(prxe 10/8).
Accder lInternet sans adresse routable
Si la gestion des adresses non routables sarrtait l, ces malheureux ordinateurs
dots dadresses de seconde zone ne pourrait jamais naviguer sur lInternet : en
eet, une communication aussi simple que laccs un serveur WWW demande que
les paquets comportent une adresse source et une adresse destination valides, ne
serait-ce que pour que le serveur puisse renvoyer au client le contenu de la page
quil a voulu consulter. Dailleurs dans un rseau ferm sans connexion lInternet
Couche 3, rseau
137
les possibilits de communication sont limites au rseau local, et cest pour de tels
rseaux quavaient t cres lorigine les classes dadresses non routables, que
NAT a ensuite astucieusement dtournes de leur destination, si jose dire.
Sur un rseau connect lInternet qui ne contient que des postes de travail dots
dadresses non routables, il y a au moins un nud qui possde une adresse routable,
cest le routeur dentre du rseau, puisque justement il est connect. Alors il y a
au moins un moyen de faire communiquer un poste du rseau local avec lextrieur :
il faut pour cela que le routeur soit dot de la capacit de traduction dadresses,
justement ; ainsi il pourra jouer vis--vis des nuds du rseau local le mme rle que
le standard de lhtel vis--vis des postes tlphoniques des chambres, en passant
les communications . Le principe de NAT est de remplacer une adresse interne non
routable par une adresse routable.
Ralisations
La faon la plus simple de raliser la traduction dadresse est la mthode statique : chaque adresse interne non routable on fait correspondre, bijectivement,
une adresse routable qui la remplace. Le routeur contient la table de correspondance
et fait la traduction, sans autre forme de procs.
Figure 6.11 : Rseau avec NAT : les adresses des htes sont des adresses rutilisables. Le routeur
dentre fait la traduction dadresse. On notera que la modication du plan dadressage alloue
dsormais un rseau /16 par sous-rseau, saranchissant de la limite des 254 adresses possibles avec
un /24.
138
Rseaux
cf. Wikipdia [81]). Avec NAT et le masquage dadresse IP, seul le routeur possde
une adresse routable, toutes les communications des nuds internes sont vues de
lextrieur comme issues de cette adresse ou destines elle, et le tri est fait par
le routeur au moyen dune manipulation des numros de port, de faon tout fait
analogue au travail du standardiste de lhtel que nous voquions ci-dessus.
Figure 6.12 : Rseau avec NAT et masquage dadresse IP : seule ladresse de linterface externe du
routeur est utilise ; le multiplexage/dmultiplexage des adresses IP internes se fait grce aux numros
de ports (modis par le routeur).
En anticipant sur la section suivante, disons quune connexion TCP est identie
par la quadruplet {adresse IP de destination, numro de port de destination, adresse
IP dorigine, numro de port dorigine} 11 . En gnral, dans le paquet qui initie la
connexion, le numro de port de destination obit une convention (par exemple
80 pour laccs un serveur WWW), et le numro de port dorigine est quelconque,
suprieur 1024, et choisi de faon former un couple unique avec ladresse dorigine.
Lorsque le routeur recevra un tel paquet, o ladresse dorigine sera une adresse
11. En prcisant quun port (en franais sabord, orice destin laisser passer un ux) dans
la terminologie TCP/IP est un numro conventionnel qui, associ une adresse IP, identie une
extrmit de connexion, ou en termes plus techniques une socket, que lon pourrait traduire par prise.
Par convention certains numros de ports sont rservs aux serveurs de certains protocoles ; ainsi le
port 80 est rserv au protocole HTTP (WWW), le port 25 SMTP (courrier lectronique), les ports
no 137, 138 et 139 au protocole de partage de chiers Netbios, cest--dire quun serveur Netbios sera
en coute sur le rseau et attendra des tentatives de connexion sur ces numros de port, cependant
que les clients Netbios essaieront de sy connecter. lextrmit ct client, le numro de port est
quelconque, en gnral suprieur 1024, et choisi de faon former un couple unique avec ladresse
dorigine. Incidemment, il est possible, lors de linitiation dune connexion rseau, de dterminer
un tel couple {adresse,port}, nomm socket, dot de la proprit dunicit, parce que ce nest pas
le logiciel client qui tablit la connexion, mais le noyau du systme dexploitation, du moins dans
les systmes srieux. La connexion est ainsi identie de faon unique par le quadruplet {adresse
IP dorigine, port dorigine, adresse IP de destination, port de destination}. Cette abstraction
permet un nud unique du rseau dtre simultanment serveur pour plusieurs protocoles, et
galement dtre la fois serveur et client. Les pirates recherchent activement sur lInternet les
machines accessibles qui laissent ouverts des ports de protocoles rputs vulnrables pour essayer
de compromettre le serveur lcoute.
Couche 3, rseau
139
NAT non routable, il remplacera cette adresse par sa propre adresse, ventuellement
il remplacera le numro de port dorigine par un autre, sil a dj utilis ce couple {
adresse, numro de port} pour une autre traduction, et il conservera dans une table
la correspondance entre ce couple {adresse, port} envoy sur lInternet et celui du
poste metteur, ce qui permettra, au prix donc dune traduction, dacheminer les
paquets dans les deux sens.
140
Rseaux
les adresses des machines avec lesquelles nous voulons communiquer ? Ce que nous
voulons faire, le plus souvent, cest envoyer un courrier lectronique France.Gall@
freesurf.fr, ou consulter le serveur http://www.sncf.fr pour connatre lhoraire
du train pour la rejoindre. www.sncf.fr nest pas une adresse, mais un nom qui
dsigne la machine qui abrite le serveur dsir. freesurf.fr nest pas une adresse
mais un nom qui dsigne un domaine au sein duquel se trouvera une machine nomme
par exemple mail.freesurf.fr, qui abritera le serveur de courrier lectronique qui
dtient la bote aux lettres lectronique de France Gall (nessayez pas, cette adresse
est ctive). Mais la couche rseau IP na que faire des noms, elle ne connat que des
adresses.
Incidemment, avant mme de rsoudre cette embarrassante aaire de noms et
dadresses, ce que nous voulons envoyer ce ne sont pas des datagrammes IP, mais des
courriers lectroniques ou des interrogations au serveur. Mais l, la rponse est aise. Notre logiciel de courrier lectronique donnera notre message la mise en forme
convenable (dnie par un RFC fameux entre tous, le RFC 822), puis le transmettra
un logiciel serveur de messagerie (couche application) conforme au protocole de
transport de courrier lectronique SMTP (Simple Mail Transfer Protocol) tel que
Sendmail ou Postx, qui soccupera de dterminer comment atteindre le destinataire, et transfrera toutes les informations et donnes ncessaires au protocole de
transport TCP (couche 4 de lOSI), qui lui-mme entamera les manuvres ncessaires en envoyant des ux de bits la couche IP (couche 3 de lOSI), qui dcoupera
tout cela en datagrammes avec les bonnes donnes et les bonnes adresses, et les
enverra la couche liaison de donnes (couche 2 de lOSI).
Revenons maintenant la question initiale, nous connaissons le nom dun serveur
(de courrier lectronique, WWW, etc.) et ce quil faut la couche IP cest son
adresse. Dans la vie courante, pour rpondre ce genre de question il y a des
annuaires, eh bien sur lInternet cest la mme chose. Lannuaire qui permet, si
lon connat le nom dun serveur, de trouver son adresse, et vice-versa, sappelle
le DNS (Domain Name System). Cest une immense base de donnes distribue
sur lensemble de la plante, peut-tre la plus grande qui existe. Ce processus de
rsolution de noms en adresses est complt par un autre service, qui publie les
noms des serveurs de courrier lectronique qui desservent un domaine. Mais questce quun domaine ?
Lespace des noms de lInternet (il est important de garder lesprit que les
schmas qui vont suivre dcrivent un espace abstrait de noms de serveurs et de
domaines, et pas la topologie du rseau physique qui les relie) est organis de faon
hirarchique, selon un schma calqu sur lorganisation du systme de chiers Unix
que nous avons vu la section 5.2.1 illustr par la gure 5.6. Ce systme gnial,
dont le fonctionnement nest pas trs intuitif, a t grav dans le marbre des RFC
1034 et 1035 par Paul Mockapetris, actuel prsident de lIAB.
La gure 6.13 montre lorganisation hirarchique de lespace de noms de lInternet. Chaque nud de larbre, reprsent par un cercle, comprend un label, qui peut
avoir jusqu 63 caractres de long, et pour lequel les lettres minuscules et majuscules
ne sont pas distingues. Le nom de domaine dun nud sobtient en construisant
la squence de tous les labels des nuds compris entre le nud considr et la racine
inclus, spars par des points, comme par exemple vera.sophia.inria.fr.
Couche 3, rseau
141
racine sans
nom
arpa
inaddr
sales
eva
com
edu
ibm
intel
tech
market
louise
(alias www )
org
net
fr
inserm
inria
nancy
sophia
asja
(alias www )
vera
ca
cnam
rocq
salome
be
surcouf
grenoble
electre
Sous une racine sans nom se trouvent un certain nombre de domaines de premier
niveau (TLD, pour Top Level Domains). Chaque entreprise, association, universit
ou autre entit dsireuse daccder lInternet appartiendra un de ces domaines.
Ceux qui ont des noms trois lettres sont dits domaines gnriques : com, edu, net,
gov, respectivement pour les activits commerciales, ducatives, lies au rseau ou
rattaches au gouvernement amricain. Les TLD deux lettres sont des domaines
gographiques : fr, ca, be, de, dz respectivement pour la France, le Canada, la
Belgique, lAllemagne et lAlgrie. Le domaine arpa a un rle particulier, il sert
la rsolution inverse, cest--dire la traduction des adresses en noms.
Au niveau infrieur, au sein du TLD, on trouve gnralement les domaines qui
correspondent aux universits, entreprises, etc. qui se sont connectes lInternet.
Elles ont choisi elles-mmes leur nom de domaine, avec la contrainte que le nom
complet doit tre unique : il ne peut y avoir quun domaine inria.fr, mais il
peut y avoir ibm.com, ibm.fr, ibm.be, etc. Ces domaines peuvent tre eux-mmes
subdiviss : ainsi lINRIA (Institut National de la Recherche en Informatique et en
Automatique) aura sans doute un domaine pour chacune de ses units de recherche,
Rocquencourt, Sophia-Antipolis, Nancy, Grenoble, etc., qui sappelleront peut-tre
sophia.inria.fr, nancy.inria.fr, grenoble.inria.fr, etc.
Cette subdivision peut atteindre des niveaux encore plus ns, mais nous allons
supposer que lINRIA en est rest l, et quau sein du domaine sophia.inria.fr au
niveau juste infrieur se trouvent les noms des nuds du rseau, qui sont des stations
ou des serveurs auxquels leurs utilisateurs ont donn les noms asja, vera, salome,
electre. Leurs noms complets, uniques pour tout lInternet et auxquels le DNS aura
pour mission de faire correspondre leur adresse IP, seront asja.sophia.inria.fr,
vera.sophia.inria.fr, salome.sophia.inria.fr, electre.sophia.inria.fr.
142
Rseaux
Une station sur le rseau peut avoir, outre son nom propre tel que nous venons
de le voir, un ou plusieurs alias. Ainsi il est de coutume que le serveur WWW
dun organisme soit connu sous le nom www.quelquechose.fr. Alors si le serveur
WWW de lINRIA Sophia est hberg sur la machine asja, celle-ci recevra un
alias, www.sophia.inria.fr. Les deux noms dsigneront la mme machine, ou plus
exactement la mme interface sur le rseau.
Il serait possible dimaginer une administration centralise de larbre des domaines, mais une fraction de seconde de rexion rvlerait limmensit des dicults qui en rsulteraient. Aussi cet arbre est-il dcoup en sous-arbres appels zones,
administres sparment. Ainsi en France lassociation AFNIC administre-t-elle tous
les domaines dont le nom se termine par .fr : on dit que lAFNIC a reu dlgation
pour la zone fr. De mme lAFNIC dlguera ladministration de la zone inria.fr
lINRIA, qui lui-mme dlguera une quipe de son unit de Sophia-Antipolis
ladministration de sophia.inria.fr.
Ds lors quun organisme a reu dlgation de ladministration dune zone, il a
le devoir de mettre en service des serveurs de noms pour cette zone, au moins
deux, un primaire et un secondaire. Un serveur de noms est un logiciel que lon peut
interroger : si on lui fournit le nom dune machine il renvoie son adresse, et vice-versa.
Ds quun nouvel ordinateur est mis en service dans une zone, ladministrateur du
DNS de cette zone doit lui aecter un nom et une adresse et les ajouter la base
de donnes du serveur de noms primaire local. On dit que ce serveur de noms a
lautorit sur la zone.
Un serveur primaire obtient les informations relatives sa zone en accdant
directement les bases de donnes locales. Un serveur secondaire (il peut y en avoir
plusieurs, et il est recommand quils soient physiquement distincts et redondants)
obtient ces mmes informations en les demandant au serveur primaire. Lopration
par laquelle un serveur secondaire reoit du serveur primaire linformation qui dcrit
la zone est nomme transfert de zone. La pratique courante est de demander un
collgue sur un autre site dtre secondaire pour votre zone, charge de revanche.
Donc tout systme install dans la zone, lorsquil voudra traduire un nom en
adresse, posera la question au serveur de la zone. Plus prcisment, le logiciel dapplication qui a besoin de ladresse (par exemple votre navigateur WWW ou le logiciel
de transfert de courrier lectronique) fait appel un rsolveur, qui va dialoguer avec
le serveur de noms qui lui aura t dsign.
Si le nom traduire dsigne une machine locale, le serveur interrogera directement sa base. Sinon, il doit interroger un autre serveur de noms, qui, lui, connatra
la rponse. Comment trouver un tel serveur de noms, en possession de la rponse
la question pose ? Chaque serveur connat (il en possde les adresses dans sa base
de donnes) la liste des serveurs de noms racines, ce jour au nombre de treize,
disperss la surface de la plante mais surtout aux tats-Unis qui en abritent dix.
Ces serveurs racines dtiennent la liste des serveurs de noms qui dtiennent lautorit pour tous les domaines de second niveau (dans notre schma de la gure 6.13,
la ligne ibm.com, inria.fr, etc.).
Notre serveur va donc interroger un serveur racine. Celui-ci rpondra en donnant ladresse du serveur qui dtient linformation autorise relative au domaine de
second niveau dont relve le nom de domaine que nous cherchons rsoudre ; ce
troisime serveur, interrog, donnera soit la rponse, soit ladresse dun quatrime
Couche 3, rseau
143
serveur plus proche du domaine concern, etc. Le serveur interrog initialement peut
soit transmettre la premire rponse au rsolveur, charge ce dernier dinterroger le
serveur de noms suivant, et ainsi de suite : une telle interrogation est dite itrative.
Le rsolveur peut au contraire demander au serveur de faire son aaire des interrogations des autres serveurs de noms impliqus, une telle interrogation sera dite
rcursive.
Toute cette subtile conversation entre serveurs sera bien sr ignore de lutilisateur. Les logiciels de courrier lectronique ou de navigation sur le WWW savent
faire appel au rsolveur. Lorsquun abonn individuel lInternet allume son modem, la plupart du temps le routeur de son FAI lui envoie, grce au protocole DHCP
(Dynamic Host Conguration Protocol), en mme temps que son adresse IP dynamique, ladresse du ou des serveurs de noms auxquels le rsolveur pourra sadresser.
Mais ainsi vous saurez quoi correspond la case la plus perturbante du menu de
conguration de votre accs au rseau : celle o on vous demande ladresse de votre
serveur DNS. Heureusement vous naurez presque plus jamais la remplir.
144
Rseaux
dans le cas dun rseau auquel la station est directement connecte, le moyen
de latteindre est le nom de linterface qui assure cette connexion ;
pour tout autre rseau, le moyen de latteindre est ladresse du routeur qui y
mne.
Fonctionnellement, la dirence entre une station ordinaire et un routeur, cest
que le routeur est programm pour recevoir des paquets sur une interface et les
rmettre sur une autre, alors que la station sait juste mettre et recevoir. Lorsquun
routeur rmet un paquet, il ne modie pas ladresse de lmetteur, qui reste celle
de lmetteur original.
Une fois obtenue ladresse IP de destination au moyen du DNS (voir section
6.5.6), lalgorithme dmission dun datagramme est le suivant :
Extraire de ladresse de destination la partie adresse de rseau.
Chercher dans la table de routage cette adresse de rseau. Quatre cas sont
possibles :
1. ladresse du rseau de destination gure dans la table de routage et y
correspond un rseau directement connect : il y a remise directe du
datagramme sur ce rseau par linterface dsigne et le routage est fait (il
faudra encore traduire ladresse IP en adresse MAC par le protocole ARP
(Address Resolution Protocol) 12 ;
2. le rseau de destination gure dans la table de routage et le moyen de
latteindre qui y est mentionn est ladresse dun routeur : le datagramme
est transmis ce routeur selon le procd vu pour le cas prcdent ;
3. le rseau de destination ne gure pas dans la table de routage, mais la
table mentionne un routeur par dfaut : le datagramme est transmis ce
routeur ;
4. tout autre cas dclenche une erreur de routage (le trop clbre message
Network is unreachable).
Le cas le plus frquent est bien sr le cas 3 ! Si nous imaginons le rseau comme
un ocan qui reoit des euves eux-mmes dots dauents, le rseau local de notre
campus ou de notre universit est un peu comme le bassin dune rivire et de ses
auents : litinraire par dfaut pour nos bouteilles la mer, cest daller vers laval
et de tomber dans le euve qui gure le rseau de notre FAI. Mais une fois dans
locan, il va bien falloir trouver lembouchure du euve quil faudra remonter pour
arriver nalement au ruisseau sur la berge duquel repose le serveur WWW que nous
voulons atteindre. Y a-t-il un gigantesque routeur central qui possderait dans ses
tables de routage les adresses de tous les rseaux de lunivers ? Ce serait une solution
thorique, mais ce que nous avons dj dit de lInternet et ce que nous savons de sa
vitesse dvolution nous suggre que cela ne fonctionne pas ainsi : la solution est
la section suivante.
12. Le principe du protocole ARP est le suivant : la station qui possde une adresse IP et veut
connatre ladresse MAC correspondante (cela ne marche quau sein dun mme rseau local, de type
Ethernet par exemple) envoie en diusion gnrale toutes les stations du rseau un message qui
comporte ladresse IP en question. La station qui possde cette adresse IP se reconnat et rpond
Cest moi, et voici mon adresse MAC .
Couche 3, rseau
145
Algorithmes de routage
La solution hypothtique voque ci-dessus, dun routeur central de lInternet
distribuant les datagrammes tous les rseaux, et que lon peut raner en dcoupant lInternet en plaques organises chacune autour dun routeur possdant toutes
les adresses rseau de la plaque et communiquant avec un routeur central moins
monstrueux, possdant les adresses des plaques et le moyen dattribuer un rseau
une plaque, cela sappellerait le routage statique. Ctait la solution retenue par les
rseaux X25 du bon vieux temps du minitel et du monopole des rseaux, et cest
une solution utilisable une chelle pas trop grande, pour un rseau dentreprise
par exemple. Mais pour un rseau de grande taille et dpourvu dadministration
centralise, comme lInternet, ce ne serait gure raliste. Ce qui a fait la force de
lInternet, cest sa capacit acheminer les paquets destination dans un rseau
en volution permanente et sans administration centrale, bref le routage dynamique
dont nous allons tudier maintenant les principes.
Pour poursuivre notre mtaphore uviale et maritime, les rseaux locaux et de
FAI correspondent aux ruisseaux, rivires et euves et possdent tous un routage
par dfaut simple : si la destination nest pas locale, elle sera, le plus souvent vers
lInternet, cest--dire au-del des mers, donc vers lembouchure (respectivement,
vers le routeur de sortie du rseau local).
leur embouchure sur locan de lInternet, nous pouvons nous imaginer que
chaque rseau de FAI possde un routeur, ou plusieurs dans le cas de deltas, chargs
de trouver les bons itinraires pour les paquets qui sortent du rseau ou qui veulent
y entrer. Il pourra y avoir aussi des routeurs en pleine mer, chargs dorienter de
grands ux maritimes, vers le Cap Horn ou le dtroit de Gibraltar... Les routeurs du
delta du Gange ignorent bien sr le dtail des rseaux du bassin de la Mditerrane,
dtail qui devra en revanche tre connu du routeur du dtroit de Gibraltar. Lide
du routage dans lInternet, cest que tous ces routeurs sont capables dchanger
des informations, et que plus prcisment ils informent leurs voisins des rseaux
auxquels ils sont directement connects. Ainsi, une fois notre datagramme 13 tomb
dans locan, il va aller de routeur en routeur, aucun ne connaissant sa destination
nale, mais chacun tant capable de trouver un itinraire qui len rapproche. Cest
ce que lon appelle le routage dynamique.
Le routage dynamique, pour tre ecace dans un rseau aussi vaste que lInternet, met en uvre des protocoles complexes. En fait lInternet est une confdration
de rseaux IP, mais il existe pour lorganisation du routage un niveau dagrgation
intermdiaire, le Systme Autonome (Autonomous System, AS), qui est un regroupement de rseaux qui peuvent tre vus de lextrieur comme une entit pourvue
dune autorit administrative unique. Ainsi, sauf pour ceux qui nont pas bien compris le fonctionnement de lInternet, chaque FAI et ses clients apparatront comme
un seul AS. Des tables de routage globales seront changes entre AS. Au sein dun
AS seront utiliss des protocoles plus simples et des tables de routage plus petites,
tant donn quun client dsireux denvoyer un paquet une adresse extrieure
lAS la remettra un routeur de son FAI, qui, lui, possdera les tables de routages
globales. Aprs tout, lorsque nous mettons une carte postale la bote, nous nous
13. Rappelons quun datagramme IP cest un paquet, la fragmentation prs : si un datagramme
est fragment, cest chaque fragment qui est un paquet. La fragmentation tombe en dsutude.
146
Rseaux
Couche 3, rseau
147
B
2
4
C
5
D
Figure 6.14 : Un rseau cinq routeurs.
Chaque arc du graphe est anqu dun numro didentication de liaison. Nous
supposons le graphe non orient, et la distance de A B gale la distance de B
A. Chaque arc correspond une liaison dont la distance entre extrmits vaut
1. Examinons maintenant les tables de routage de chaque routeur linitialisation
du systme, par exemple lors de la mise sous tension des cinq routeurs. Soit par
exemple la table de routage de A :
de A vers
A
liaison
locale
distance
0
148
Rseaux
A=0
Peu complex par lindigence de cette information, A va lmettre sur toutes
ses interfaces lusage de ses voisins immdiats, en loccurrence B et E. Ainsi B
reoit ce vecteur par la liaison 1, et ajoute toutes les distances reues le cot de la
liaison 1, que nous avons suppos gal 1, ce qui transforme le message en A=1.
Puis B examine sa table pour voir sil dispose dj dune information de liaison
vers A ; comme ce nest pas le cas il va juste introduire cette nouvelle donne. La
table de routage de B, qui avant de recevoir le message de A tait ceci :
de B vers
B
liaison
locale
distance
0
liaison
locale
1
distance
0
1
devient cela :
de B vers
B
A
liaison
locale
1
3
distance
0
1
1
liaison
locale
2
2
distance
0
1
2
Couche 3, rseau
149
D aura reu de B le mme message que C par la liaison 4, puis par la liaison
6 un message de E. Ces messages comportent chacun une destination vers A,
avec des distances quivalentes ; nous supposerons que la premire information est
retenue et la table de D devient :
de D vers
D
B
A
E
liaison
locale
4
4
6
distance
0
1
2
1
B
2
4
C
5
D
Figure 6.15 : Rupture de liaison !
150
Rseaux
de A vers
A
B
C
D
E
de B vers
A
B
C
D
E
liaison
locale
1
1
1
3
liaison
1
locale
2
4
1
distance
0
1
distance
0
1
1
liaison
3
3
6
6
locale
distance
1
2
1
0
de C vers
A
B
C
D
E
liaison
2
2
locale
5
5
distance
1
0
1
2
de D vers
A
B
C
D
E
liaison
4
4
5
locale
6
distance
1
1
0
1
Couche 3, rseau
de A vers
A
B
C
D
E
de B vers
B
A
C
D
E
de D vers
D
A
B
C
E
de E vers
E
A
B
C
D
151
liaison
locale
1
3
3
3
liaison
locale
1
2
4
4
liaison
locale
6
4
5
6
liaison
locale
3
6
6
6
distance
0
3
2
1
distance
0
1
1
2
distance
0
2
1
1
1
distance
0
1
2
2
1
liaison
locale
3
3
3
3
liaison
4
locale
2
4
4
distance
0
3
3
2
1
distance
3
0
1
1
2
152
Rseaux
de C vers
A
B
C
D
E
liaison
5
2
locale
5
5
distance
3
1
0
1
2
Ces nuds vont nouveau mettre des vecteurs de distance, mais qui
napporteront aux destinataires aucune distance vers un nud plus courte que
celles quils possdent dj, et qui donc ne dclencheront aucune modication des
tables. Cet exercice inspir de Christian Huitema conduit un nouvel tat stable
qui assure la connectivit gnrale, ce que nous promettaient MM. Bellman, Ford
et Fulkerson.
Problmes de routage
Couche 3, rseau
153
2
A
154
Rseaux
Le support des nuds mobiles est un autre problme apparu aprs la conception
dIPv4, et qui avait d tre rsolu par des adjonctions plus ou moins satisfaisantes. La
question intervient au stade du routage : la station mobile tablit une communication
avec une station xe, qui nest par dnition pas toujours la mme. Lmission
depuis la station mobile vers une adresse IP quelconque ne pose aucun problme
particulier, ce qui est indit cest la faon datteindre la station mobile depuis un
point quelconque de lInternet. La solution utilise sous IPv4, nomme mobile IP,
assez exprimentale, est incorpore IPv6 et gnralise.
La conguration dune station sous IPv4 tait souvent une opration manuelle
laborieuse par manque de possibilits dauto-conguration. Quel utilisateur na pas
blmi devant un cran o un logiciel lui demandait son adresse IP et, pire, celle
de son serveur de noms ? Le dploiement de DHCP (Dynamic Host Conguration
Protocol) a contribu rsorber ce problme, et cette solution sera gnralise avec
IPv6.
Couche 4, transport
155
32 bits
Port dorigine
Port de destination
Numro de squence
Numro dacquittement
UAPRSF(*)
Taille de la fentre
somme de contrle
Options
Donnes
ments TCP. Lassociation dune adresse IP et dun numro de port sur le mme
nud constitue une extrmit de connexion.
En fait le mcanisme des sockets rseau repose sur le mcanisme des sockets
du noyau, qui est un mcanisme de communication entre processus. Mais il nest
pas illogique quun mcanisme de communication en rseau se traduise au bout du
compte par une communication entre processus.
Modle client-serveur et numros de port
Les numros de port sont des identiants conventionnels. Selon le modle clientserveur implicite dans ce type daccs au rseau, un client actionn par un utilisateur
(navigateur WWW, logiciel de courrier lectronique) demande un service un serveur distant (serveur WWW, serveur de courrier, serveur de chiers...). Du ct du
serveur, le service demand est identi par un numro de port conventionnel, connu
et habituel, en un mot rserv : 80 pour un serveur WWW, 25 pour un serveur de
courrier lectronique, 53 pour un serveur de noms). Du ct du client, TCP attribue
la demande de connexion un numro de port arbitraire, non encore utilis. Ainsi,
il est possible dtablir entre deux nuds plusieurs connexions vers un mme service
sans quelles se confondent : elles auront mme adresse de serveur, mme adresse de
client, mme port de serveur, mais des ports de client dirents.
le protocole SMTP de courrier lectronique, port 80 pour le WWW, port 22 pour le protocole de
communication chire SSH. En anglais port signie sabord, lumire dans le piston dun moteur
deux-temps, bref un orice par lequel peut scouler un ux. Comme le ux des donnes dune communication selon un protocole donn. Un port est choisi lors de louverture dune socket (douille,
ou prise), ce qui complte la mtaphore de ltablissement dun tuyau entre deux systmes communicants, comme le camion citerne et la cuve mazout. Voir aussi la note 11.
156
Rseaux
Serveur
(WWW par
exemple)
Couche 4, transport
157
analyse le mme type de sret que le protocole de liaison de donnes assure entre
deux nuds adjacents.
Pour garantir labsence de pertes et le bon ordre de remise des segments, TCP
utilise un algorithme de fentre glissante tout fait similaire celui que nous avons
dcrit pour la couche liaison de donnes la section 6.4.2, que nous vous invitons
de ce fait relire.
Nous avions dit en dcrivant cet algorithme de fentre glissante pour la couche
2 quil permettait un contrle de ux, cest--dire ladaptation mutuelle du dbit
dmission de lmetteur et du dbit de rception du rcepteur par laccroissement ou
la diminution de la largeur de la fentre dmission. Cette proprit de lalgorithme
est bien sr conserve si on lapplique la couche transport, mais au lieu dagir
sur une liaison entre deux nuds adjacents, le contrle agit dsormais travers tout
lInternet. Dailleurs, comme TCP est un protocole bi-directionnel, chaque extrmit
de la connexion possde deux fentres, une en mission et une en rception.
Lapplication du contrle de ux grande distance produit des eets puissants
mais manier avec prcautions : les implmentations modernes de TCP utilisent la
technique dite du dmarrage lent pour viter de saturer un routeur surcharg
un point quelconque de litinraire. La connexion dmarre avec une fentre dont la
largeur correspond un seul segment. Si tout se passe bien (les acquittements ACK
arrivent), la fentre dmission est largie progressivement. Si une fois la connexion
tablie en rgime permanent des pertes de segments sont constates, ce qui indique
une congestion quelque part sur le trajet, la fentre sera nouveau rtrcie.
Cette politique de dmarrage lent et dvitement de la congestion joue un rle
capital dans le fonctionnement gnral de lInternet, qui sinon se serait eondr
depuis longtemps. Linventeur de cette innovation de grande valeur est Van Jacobson.
Nous invitons le lecteur quelques secondes de rexion admirative devant un
dispositif technique conu lorigine pour une centaine de nuds et qui a pu rsister
une croissance de six ou sept ordres de grandeur, dautant plus que cette conception
ntait le fait ni dun grand groupe industriel ou nancier, ni dun gouvernement, ni
dun conglomrat de telles puissances. Mais peut-tre tait-ce l le secret ?
158
Rseaux
Call), crent, modient et dtruisent des chiers, bref ils donnent accs tous les
outils dont peut rver un pirate sur une machine distante quil se propose dattaquer.
159
dans chaque cellule une information complte dorigine et de destination (il ne resterait plus gure de place pour les donnes utiles), et maintenir des paramtres de
qualit de service, essentiellement dbit et isochronie. Prfrer le dbit la abilit
des donnes, cest une attitude de tlphoniste ou de tlvidaste : une cellule corrompue dans une conversation tlphonique ou une image, ce nest pas grave. Mais
une cellule corrompue dans une transmission de donnes, cest tout le message retransmettre, et comme les cellules ne contiennent aucune information qui permette
de les identier, il faut retransmettre toute la transaction, ventuellement un grand
nombre de cellules. Le numro de circuit virtuel est x lors dune procdure dappel
qui recourt des cellules au format particulier, dites de signalisation, comme avec
X25.
Beaucoup des ides labores pour permettre ATM de grer des communications avec des qualits de services diverses, appropries des applications telles
que le transport de la voix et de limage, ou le contrle en temps rel de dispositifs
matriels (machines, robots, dispositifs de scurit), ont trouv leur chemin dans les
recherches actuelles sur le dveloppement de TCP/IP.
160
Rseaux
Une autre direction importante o les protocoles peer to peer joueront un rle
est celui du calcul en grille (grid computing) : un calcul important, tel que ceux
eectus en dynamique des uides ou en analyse de gnomes, est partag entre
de nombreux ordinateurs en rseau. Si le problme et ses donnes sont faciles
subdiviser, les communications entre les nuds de calcul ne seront pas intenses, mais
si ce nest pas le cas le rseau sera soumis une forte charge et la coordination par un
serveur central constituerait un goulot dtranglement insupportable. Lutilisation
dalgorithmes distribus et de communications bilatrales indpendantes entre les
nuds simposera. Ces questions sont encore du domaine de la recherche, mme si
des ralisations oprationnelles existent dj.
Signalons que ce type de service a eu un prcurseur trs prcoce, le protocole
NNTP de diusion des News du rseau (des forums, en fait), qui est dot de primitives dont les noms disent tout : ihave, post, takethis, check. Les articles des
News se propagent de site en site, sans arbre hirarchique prdni.
161
Pour surmonter les dicults numres plus haut et atteindre ces objectifs, un
systme pair pair comporte quatre composants fondamentaux :
1. une passerelle, qui publie ladresse IP dautres nuds et permet lutilisateur
de choisir une communaut au sein de laquelle il va changer des donnes,
comme reprsent par la gure 6.21 ;
162
Rseaux
Figure 6.21 : Une passerelle (gateway) va permettre au nouvel arrivant de dcouvrir ladresse IP dun
membre dj connect.
Figure 6.22 : Ici deux nuds conns par des coupe-feux (rewalls) essaient nanmoins de construire
une voie de communication entre eux, mais le procd retenu est rudimentaire et peu ecace.
Sommaire
7.1
7.2
Protection . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.1.1 Un parangon de protection : Multics . . . . . . . .
Les dispositifs de protection de Multics . . . . . . .
Scurit . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.2.1 Menaces, risques, vulnrabilits . . . . . . . . . . .
7.2.2 Principes de scurit . . . . . . . . . . . . . . . . .
7.2.3 Chirement . . . . . . . . . . . . . . . . . . . . . .
Chirement symtrique : DES . . . . . . . . . . . .
Die, Hellman et lchange de cls . . . . . . . . .
Le chirement asymtrique : algorithme RSA . . .
7.2.4 Pretty Good Privacy (PGP) et signature . . . . . .
Lattaque par le milieu (Man in the middle) . . . .
Signature . . . . . . . . . . . . . . . . . . . . . . .
7.2.5 Usages du chirement : IPSec et VPN . . . . . . .
7.2.6 Annuaire lectronique et gestion de cls . . . . . .
7.2.7 Scurit dun site en rseau . . . . . . . . . . . . .
Dcoupage et ltrage . . . . . . . . . . . . . . . . .
7.2.8 Les CERT (Computer Emergency Response Teams)
Organisation des CERT . . . . . . . . . . . . . . .
Faut-il publier les failles de scurit ? . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 163
. 165
. 165
. 166
. 166
. 167
. 168
. 168
. 170
. 174
. 176
. 176
. 177
. 178
. 178
. 179
. 179
. 182
. 182
. 183
7.1 Protection
Un systme dexploitation digne de ce nom doit comporter des dispositifs et des
procdures de protection des objets quil permet de manipuler. Les objets protger
appartiennent deux grandes catgories : les objets persistants tels que les chiers,
et les objets phmres crs en mmoire pendant lexcution dun processus et
destins disparatre avec lui. Les objets matriels, tels que priphriques physiques,
interfaces rseau, etc., sont assimils des objets persistants. La protection consiste
empcher quun utilisateur puisse altrer un chier qui ne lui appartient pas et
dont le propritaire ne lui en a pas donn lautorisation, ou encore empcher quun
processus en cours dexcution ne modie une zone mmoire attribue un autre
processus sans lautorisation de celui-ci, par exemple.
De faon trs gnrale la question de la protection dun objet informatique se
pose dans les termes suivants, inspirs des concepts mis en uvre par le systme
Multics :
164
Protection et scurit
Protection
165
166
Protection et scurit
Pouvoir croissant
1
7
Anneaux
Parenthse dcriture
Parenthse de lecture
Finalement il apparat que les plus dles disciples de lquipe Multics furent les
ingnieurs dIntel. Depuis le modle 80286 jusqu lactuel Itanium les processeurs de
la ligne principale dIntel disposent dune gestion de mmoire virtuelle adressage
segment. Aucun systme dexploitation implant sur ces processeurs, que ce soient
ceux de Microsoft ou les Unix libres FreeBSD, NetBSD ou Linux, ne tire parti
de ce dispositif pour unier les gestions de la mmoire virtuelle et de la mmoire
persistante (le systme de chiers) ; les premiers sont contraints la compatibilit
avec leurs anctres... et les Unix aussi.
Les processeurs Intel disposent dun systme de protection quatre anneaux,
typiquement destins respectivement au noyau du systme pour lanneau 0, aux
fonctions auxiliaires du systme pour les anneaux 1 et 2, et aux programmes en
mode utilisateur pour lanneau 3. Le VAX disposait aussi dun tel systme
quatre anneaux. Sur les Intel ces possibilits ne sont gure utilises par les systmes
dexploitation. Les systmes conventionnels comme Unix possdent un systme danneaux dgrad seulement deux anneaux (le mode superviseur et le mode utilisateur)
et un systme de listes daccs dgrad avec pour chaque chier des droits daccs en
lecture, en criture et en excution pour trois ensembles dutilisateurs : le propritaire du chier, les membres de son groupe, tous les autres utilisateurs. Linux utilise
lanneau 0 comme mode noyau et lanneau 3 comme mode utilisateur et cest tout.
Ces systmes plus rudimentaires ont (avaient ?) lavantage dtre moins lourds.
7.2 Scurit
7.2.1 Menaces, risques, vulnrabilits
La scurit des systmes informatiques (et de faon plus large celle des systmes
dinformation) est un vaste problme dont les aspects techniques ne sont quune
partie. Les aspects juridiques, sociaux, ergonomiques, psychologiques et organisationnels sont aussi importants, mais nous ne les aborderons pas ici. Nous laisserons
galement de ct les aspects immobiliers de la scurit, qui ne doivent bien sr pas
tre oublis mais sont loin de notre propos.
Les problmes techniques actuels de scurit informatique dcoulent directement
ou indirectement de lessor des rseaux, qui multiplie la quantit et la gravit des menaces potentielles. Ces menaces entrent dans une des catgories suivantes : atteinte
Scurit
167
168
Protection et scurit
authentier sans chirer laisse la porte ouverte au vol de donnes. Mais ces deux
mthodes de scurit ne susent pas, il faut en outre se prmunir contre les intrusions
destines dtruire ou corrompre les donnes, ou en rendre laccs impossible. Les
techniques classiques contre ce risque sont lusage de coupe-feux (rewalls) et le
ltrage des communications rseaux, qui permettent de protger la partie prive
dun rseau dont les stations pourront communiquer avec lInternet sans en tre
visibles. Entre le rseau priv et lInternet les machines publiques seront places
dans une zone dmilitarise (DMZ), o elles hbergeront par exemple le serveur
WWW et le relais de messagerie de lentreprise. Ces machines exposes au feu de
lInternet seront appeles bastions.
Certains auteurs considrent que ces techniques de scurit par remparts, pontslevis et chauguettes sont dignes du Moyen-ge et leur prfrent les systmes de
dtection dintrusion (IDS), plus subtils. Cela dit, dans un paysage informatique
o les micro-ordinateurs prolifrent sans quil soit raliste de prtendre vrier la
conguration de chacun, le ltrage et le coupe-feu sont encore irremplaables.
Nous allons examiner un peu plus en dtail chacune de ces collections de techniques, en commenant par la cryptographie parce que les techniques de lauthentication en sont drives.
7.2.3 Chirement
Nous ne saurions tracer ici une histoire complte des codes secrets, pour laquelle
le lecteur pourra se reporter au livre de Simon Singh [69] par exemple. Tout ce qui
est antrieur 1970 a un intrt essentiellement historique, bien que passionnant
et riche denseignements, comme par exemple le rle rcemment mis en lumire
dAlan Turing dans le droulement de la Seconde Guerre mondiale, voqu dans la
biographie dAndrew Hodges [33].
Chirement symtrique : DES
De lpoque de Jules Csar la n des annes 1970, un grand nombre de systmes
de chirement ont t invents, qui consistaient faire subir un texte clair une
transformation plus ou moins complexe pour en dduire un texte inintelligible, dit
chir. La transformation repose sur deux lments, une fonction mathmatique (au
sens large) et une cl secrte. Seule une personne connaissant la fonction et possdant
la cl peut eectuer la transformation inverse, qui transforme le texte chir en texte
clair.
La science de linvention des codes secrets sappelle la cryptographie. La science,
adverse, du dchirement de ces codes est la cryptanalyse. Si le cryptanalyste ignore
tout de la fonction de chirement et de la cl il aura le plus grand mal dchirer,
mais un bon code doit rsister la dcouverte de sa fonction de chirement tant que
la cl reste secrte.
Une bonne fonction de chirement doit viter de prter le anc la cryptanalyse.
Ainsi le code de Csar, qui reposait sur une simple transposition circulaire des lettres
de lalphabet, est trs facile dcoder par lanalyse des frquences des lettres ds
lors que lon sait dans quelle langue a t crit le message. Un bon code doit aussi
chirer de faons direntes deux occurrences successives dun mme texte dans
le corps du message pour viter que la dtection dune rptition ne fournisse des
Scurit
169
170
Protection et scurit
30+1
31+1
32+1
33+1
34+1
35+1
On dit que ces nombres constituent une classe dquivalence, et quils sont tous
quivalents 1 mod 3 (prononcer un modulo trois ) :
Scurit
171
4 1 mod 3
7 1 mod 3
...
On construit de la mme faon une classe des nombres quivalents 0 mod 3,
qui contient 6, 3, 0, 3, 6, 9, 12, . . ., et une classe des nombres quivalents 2 mod 3,
avec 7, 4, 1, 2, 5, 8, 11, . . ..
On peut dnir une addition modulaire, par exemple ici laddition mod 3 :
4+7
(mod 3) = (4 + 7) mod 3
= 11 mod 3
= 2 mod 3
(mod 3) = (4 7) mod 3
= 28 mod 3
= 1 mod 3
172
Protection et scurit
5 5 mod 12 =
=
7 7 mod 12 =
=
11 11 mod 12 =
=
25 mod 12
1 mod 12
49 mod 12
1 mod 12
121 mod 12
1 mod 12
7 13 mod 15 = 91 mod 15
= 1 mod 15
On note que les calculs sont faciles mais les rsultats un peu imprvisibles :
justement, cest le but que poursuivent nos deux cryptographes. La fonction y = ax
nest pas monotone. Lexponentielle est dnie :
53 mod 11 = 125 mod 11
= 4
et si n est premier elle a les mmes proprits que dans Z :
(ax )y = (ay )x = ax.y
Voici maintenant le protocole dchange de cls de Die-Hellman, illustr par
un exemple avec de petits nombres pour pouvoir faire les calculs la main. Martin
Hellman en a eu linspiration une nuit, mais il est le rsultat de leur travail commun,
auquel dailleurs il faut adjoindre Ralph Merkle. Le protocole repose sur une fonction
de la forme K = W X mod P , avec P premier et W < P . Une telle fonction est trs
facile calculer, mais la connaissance de K ne permet pas den dduire facilement
X. Cette fonction est publique, ainsi que les valeurs de W et P . Prenons W = 7 et
P = 11 1 .
1. Anne choisit un nombre qui restera son secret, disons A = 3.
2. Bernard choisit un nombre qui restera son secret, disons B = 6.
3. Anne et Bernard veulent changer la cl secrte, qui est en fait S = W B.A mod
P , mais ils ne la connaissent pas encore, puisque chacun ne connat que A ou
que B, mais pas les deux.
4. Anne applique A la fonction sens unique, soit le rsultat :
=
=
=
=
W A mod P
73 mod 11
343 mod 11
2
1. Le lecteur attentif remarquera que beaucoup dauteurs utilisent cet exemple numrique. Sil se
donne la peine de quelques essais personnels il constatera quil y a une bonne raison cela : les autres
valeurs numriques susamment petites donnent des rsultats corrects mais peu pdagogiques du
fait de concidences fcheuses.
Scurit
173
=
=
=
=
Anne
Bernard
observation
ve
Figure 7.2 : change de cls selon Die et Hellman
7. Anne a reu et calcule A mod P (qui est, soit dit en passant, (W B )A mod P ,
soit 7B.A mod 11, mais elle ne connat pas B) :
A mod P
= 43 mod 11
= 64 mod 11
= 9
8. Bernard a reu et calcule B mod P (qui est, soit dit en passant, (W A )B mod
P , soit 7A.B mod 11, mais il ne connat pas A) :
B mod P
= 26 mod 11
= 64 mod 11
= 9
log
log W
Mais dans le monde des classes dquivalence modulo n ce problme dit du logarithme discret na pas de solution simple. Cest un sujet de recherche. Le front
174
Protection et scurit
est aujourdhui des valeurs de P qui sont des nombres de 450 chires binaires.
Lalgorithme est sr si P a 512 chires binaires.
Lalgorithme de Die-Hellman est sans doute une dcouverte majeure, totalement contraire lintuition. Il procure deux acteurs dun cryptosystme le moyen
dchanger une cl sans la faire circuler sur le rseau. Mais il restait faire une
dcouverte encore plus stupante, inspire dailleurs par celle que nous venons de
dcrire : un cryptosystme fond sur des cls publies dans des annuaires publics !
Le chirement asymtrique : algorithme RSA
La mthode de Die et Hellman permet lchange de cls, mais elle impose une
concertation pralable entre les acteurs. Parfois ce nest pas pratique : si Anne veut
envoyer Bernard un courrier lectronique chir pendant quil est en vacances, elle
sera oblige dattendre son retour pour tablir la cl avec lui.
Whiteld Die avait eu une autre ide, pour laquelle il navait pas trouv de solution mathmatique approprie : un systme o lon utiliserait une cl pour chirer
et une autre pour dchirer. Ainsi, Bernard proposerait Anne une cl de chirement, avec laquelle elle coderait le message, et Bernard le dcoderait avec une cl
dirente, la cl de dchirement. La cl de chirement ne permet que de chirer,
mme Anne serait incapable de dchirer son propre message avec cette cl, seul
Bernard le peut avec sa cl de dchirement. Comme la cl de chirement ne fonctionne que dans un sens, elle permet de crer des secrets mais pas den dvoiler,
et elle peut donc tre publique, inscrite dans un annuaire ou sur un site WWW.
Quiconque veut envoyer un message chir Bernard peut la prendre et lutiliser.
Il faut juste pouvoir tre sr que personne ne pourra calculer la cl de dchiffrement partir de la cl de chirement. Et l il faut une intuition mathmatique
dcisive.
Si lide du chirement asymtrique cls publiques revient Die et Hellman
(sans oublier les prcurseurs britanniques tenus au secret), la ralisation de cette ide
revient Rivest, Shamir et Adleman, qui ont trouv une solution mathmatique
permettant la mise en uvre de lide et donn son nom cette solution : RSA,
leurs initiales.
Une personne dsireuse de communiquer selon cette mthode doit procder ainsi :
1. Prendre deux nombres premiers p et q. En cryptographie relle on choisira de
trs grands nombres, de 150 chires dcimaux chacun. Nous allons donner un
exemple avec p = 3 et q = 11.
2. Calculer n = pq, soit dans notre exemple n = 33.
3. Calculer z = (p 1)(q 1). (Ce nombre est la valeur de la fonction (n), dite
fonction phi dEuler, et incidemment elle donne la taille du groupe multiplicatif
modulo n, Zn ). Dans notre exemple z = 20.
4. Prendre un petit entier e, impair et premier avec z, soit e = 7. Dans la pratique
e sera toujours petit devant n.
5. Calculer linverse de e (mod z), cest--dire d tel que e.d = 1 mod z. Les thormes de larithmtique modulaire nous assurent que dans notre cas d existe
et est unique. Dans notre exemple d = 3.
6. La paire P = (e, n) est la cl publique.
Scurit
175
C d mod n
(M e )d mod n
M e.d mod n
M mod n
176
Protection et scurit
et multiplication (square and multiply), qui prennent moins dune seconde dans
une carte puce 2 .
Le lecteur trouvera des explications mathmatiques supplmentaires dans louvrage de Cormen, Leiserson et Rivest (le R de RSA) [18] ou dans celui de Menezes,
van Oorschot et Vanstone [48], ou encore, de faon plus abordable, dans ceux de
Gilles Dubertret [24] dAlbert Ducrocq et Andr Warusfel [25]. Au demeurant, il est
stupant de constater que les dcouvertes prodigieuses de Die, Hellman, Merkle,
Rivest, Shamir et Adleman reposent sur des bases mathmatiques dj entirement
tablies par Leonhard Euler (17071783), sinon par Pierre de Fermat (16011665),
et que personne ny avait pens avant.
Scurit
177
(par le milieu), est dicile djouer une fois que Charles a russi sintroduire
dans le circuit de communication ; elle peut tre tente contre RSA et aussi contre
Die-Hellman.
En fait nous sommes ramens au sempiternel problme dont nous nous croyions
dbarrasss : comment tablir une relation de conance entre Anne et Bernard,
comment changer des cls dignes de foi. Mais nous avons quand mme accompli un
progrs : cet change de cls doit tre certi, mais il peut se faire au grand jour
puisque les cls sont dsormais publiques. Les cls publiques doivent tre signes
par une autorit suprieure, ce qui donne naissance le notion dinfrastructure de
gestion de cls, ou IGC (PKI en anglais), voir plus loin section 7.2.6.
Pour pallier la lenteur des calculs dalgorithmes la RSA, Zimmerman eut lide
de recourir au bon vieux chirement cl partage ; comme le point faible de ce
dernier est lenvoi de la cl, on utilisera RSA pour communiquer une cl de session
pour un algorithme cls symtriques, cl qui servira chirer la suite des communications avec cet algorithme classique. En loccurrence Zimmerman choisira IDEA,
un cousin de DES cls de 128 bits, cr Zurich par James L. Massey et Xuejia Lai,
et rput trs robuste. Incidemment les systmes de communication chirs tels que
SSL (Secure Socket Layer) utiliss pour les transactions par le WWW, la relve de
courrier lectronique et la connexion conversationnelle distance par SSH (Secure
Shell) fonctionnent de cette faon.
Cette utilisation combine des mthodes de chirement symtrique (DES en loccurrence) et asymtrique sera la vraie rvolution pratique, qui suscitera la colre de la
NSA et de ses homologues dans dautres pays dont la France. Avant que cette possibilit existe, les utilisateurs de cryptosystmes se mettaient laborieusement daccord
sur une cl, puis ils lutilisaient pendant longtemps. La NSA disposait sans doute des
moyens de casser le chirement DES, ce qui lui ouvrait des mois de lecture paisible
de messages rputs secrets. Avec la combinaison de DES et RSA, les utilisateurs
changent de cl chaque change de messages, ce qui complique beaucoup la tche
des services .
PGP sera la cible principale de lire des services gouvernementaux, non parce
quil serait un cryptosystme rvolutionnaire, mais parce quil constitue une trousse
outils facile demploi pour lusage quotidien, avec les outils de chirement symtrique et asymtrique, la gestion de trousseaux de cls publiques et prives,
lincorporation automatique de ces outils au logiciel de courrier lectronique de lutilisateur, sans oublier les accessoires de signature lectronique. Bref, on installe PGP
(ou maintenant sa version libre GnuPG) sur son ordinateur personnel et ensuite
tous les messages sont chirs et dchirs sans que lon ait sen proccuper. Les
services semblaient mal supporter cette situation.
Signature
Outre sa fonction de chirement, RSA est aussi utilisable de faon trs simple
pour signer de faon sre et non rpudiable un document : il sut que lmetteur
(le signataire en loccurrence) chire le document authentier avec sa cl prive :
le destinataire dchirera avec la cl publique de lmetteur, et si le dchirement
russit ce sera une authentication sre.
En fait, plutt que de signer en chirant de cette faon lensemble du message,
on en extrait un rsum numrique par un algorithme de condensation, tel MD5
178
Protection et scurit
cr par Ron Rivest, ou SHA (Secure Hash Standard FIPS 180-1), que lon chire.
Outre une signature non rpudiable, ce procd garantit en pratique lintgrit du
message. Le principe dune fonction de condensation (ou de hachage) est le suivant :
soient M et M deux messages, et H la fonction :
1. si M = M , la probabilit que H(M ) = H(M ) est trs voisine de 0 ;
2. quel que soit M , il est dicile de trouver un M = M tel que H(M ) = H(M ).
Scurit
179
180
Protection et scurit
de courrier lectronique, un serveur DNS. Les ordinateurs qui abritent ces services
devront tre visibles de lInternet, cest--dire que le DNS doit publier leurs adresses.
Les autres ordinateurs, que ce soient des serveurs internes ou les stations de
travail des personnes qui travaillent sur le site, ne doivent pas tre visibles, mais il
faut nanmoins quils puissent accder lInternet. En dautres termes, une session
TCP initie de lintrieur du site depuis un de ces ordinateurs est autorise, mais
une session initie de lextrieur vers le mme ordinateur est interdite parce que
rpute errone ou hostile (pour un expert en scurit informatique les deux termes
sont synonymes).
De quels moyens et mthodes disposons-nous en 2013 pour mettre en uvre une
telle politique de scurit ? Il nous faut pour cela nous rappeler le chapitre 6 consacr
aux rseaux, et notamment ce que nous avons dit des informations contenues dans
les en-ttes de datagrammes IP et de segments TCP, ainsi que du routage.
Chaque paquet IP qui se prsente un routeur est dot dune che signaltique constitue de ses en-ttes. Les informations principales par rapport au sujet
qui nous occupe sont les adresses IP dorigine et de destination et le protocole de
transport (TCP ou UDP), gurant dans len-tte de datagramme IP, et les numros de ports 3 dorigine et de destination, gurant dans len-tte de segment TCP
ou de datagramme UDP. La mention dans len-tte IP du protocole de transport
permet de connatre le format de len-tte de transport (TCP ou UDP), et ainsi
dy retouver le numro de port. Nous avons vu que lassociation dune adresse et
dun port constituait une socket (voir section 6.6.1). Une paire de sockets identie
de faon unique une connexion dans le cas de TCP. Le routeur maintient une table
des connexions TCP tablies qui lui permet de dterminer si ce paquet appartient
une communication dj en cours (parce que entre mmes adresses IP et avec mmes
numros de ports, par exemple) ou une nouvelle communication.
Le routage est un grand instrument de scurit. Il permet de dcouper un grand
rseau en autant de sous-rseaux quon le souhaite, et de contrler le trac entre
ces sous-rseaux. Les sous-rseaux peuvent dailleurs tre virtuels, pour saranchir
des contraintes de localisation, ce qui sera de plus en plus le cas avec le dveloppement de linformatique mobile. Ceci exige des comptences et du travail, parce que
ce que nous avons dit du routage montre que cest tout sauf simple. Mais un tel
investissement est indispensable qui veut disposer dun rseau sr.
Forts de cette possibilit, nous pourrons dcouper le rseau de notre site en un
sous-rseau public, qui abritera les serveurs visibles de lextrieur, et un sous-rseau
priv, ventuellement divis lui-mme en sous-rseaux consacrs tel groupe ou
telle fonction. Chacun de ces sous-rseaux verra son accs et son trac rgis par des
rgles spciales.
Les rgles daccs et de trac appliques aux rseaux consistent tablir quels
sont les type de paquets (en termes de protocole et de numro de port, en ltat
actuel de la technique) autoriss en entre ou en sortie depuis ou vers tel rseau ou
telle adresse particulire. Ainsi un serveur de messagerie pourra recevoir et mettre
du trac SMTP (port 25) mais naura aucune raison de recevoir du trac NNTP
3. Rappelons quun port dans la terminologie TCP/IP est un numro conventionnel qui, associ
une adresse IP, identie une extrmit de connexion.
Scurit
181
routeur avec
filtrage
rseau public (DMZ)
proxy
WWW
coupefeu
serveur
de donnes
serveur de
messagerie
relais de
messagerie
rseau priv
station de
travail
station de
travail
Il est prudent que les serveurs en zone publique contiennent aussi peu de donnes
que possible, et mme idalement pas du tout, pour viter quelles soient la cible
dattaques. Ceci semble contradictoire avec le rle mme dun accs lInternet,
mais cette contradiction peut tre rsolue en divisant les fonctions. Ainsi pour un
serveur de messagerie il est possible dinstaller un relais en zone publique qui eectuera toutes les transactions avec le monde extrieur mais transmettra les messages
proprement dit un serveur en zone prive, inaccessible de lextrieur, ce qui vitera
que les messages soient stocks en zone publique en attendant que les destinataires
en prennent connaissance. De mme un serveur WWW pourra servir de faade pour
un serveur de bases de donnes en zone prive. Ces serveurs en zone publique qui ne
servent que de relais sont souvent nomms serveurs mandataires (proxy servers en
anglais).
La gure 7.3 reprsente un tel dispositif, avec un routeur dentre qui donne accs
la DMZ et un coupe-feu (rewall), qui est en fait un routeur un peu particulier
dont nous dtaillerons le rle ci-dessous, qui donne accs un rseau priv.
182
Protection et scurit
Le relayage entre zone publique et zone prive fonctionne aussi dans lautre
sens : lutilisateur en zone prive remet son courrier lectronique au serveur priv,
qui lenvoie au relais en zone publique, qui lenverra au destinataire. Pour consulter
une page sur le WWW, lutilisateur sadresse au serveur relais qui mettra la vraie
requte vers le monde extrieur. Ici le relayage peut procurer un autre avantage, celui
de garder en mmoire cache les pages obtenues pendant un certain temps, pour les
fournir au mme utilisateur ou un autre lorsquil les redemandera sans avoir
accder la source distante (lanalyse statistique des requtes rvle que dans un
contexte donn les gens accdent souvent aux mmes pages).
Le ltrage par port permettra la communication entre le proxy et le serveur
en zone prive de faon contrle. Les routeurs disposent de fonctions de ltrage
assez labores, permettant de distinguer quels protocoles et quels numros de ports
sont autoriss selon lorigine et la destination, et si telle communication a t initie
depuis un nud lintrieur ou lextrieur du rseau.
Une pratique courante consiste placer lentre du rseau priv un coupefeu (rewall). Un coupe-feu est un ordinateur qui ltre les communications un peu
comme un routeur, dailleurs il est possible de congurer un routeur pour lui faire
jouer le rle dun coupe-feu simple. Le coupe-feu a gnralement des possibilits
plus tendues, notamment en termes de suivi de connexion et danalyse des paquets.
Plus prcisment, un routeur doit dcider au coup par coup du sort de chaque
paquet individuel, avec trs peu de possibilit danalyse historique, un coupe-feu
peut disposer dinformations plus compltes, peut garder des datagrammes en le
dattente jusqu reconstituer une squence plus longue de la communication et en
faire une analyse plus complte. Bien sr ceci a un cot en termes de dbit...
Routeur ltrant et coupe-feu, congurs pour repousser certaines attaques en
rejetant des paquets appartenant des connexions suspectes, produisent des chiers
de comptes rendus (logs) qui relatent les incidents. Il est bien sr indispensable,
pour bncier de la protection quils sont censs procurer, danalyser le contenu
de ces chiers et de les confronter avec les avis publis par les CERT (Computer
Emergency Response Teams) (sur les CERT voir la section suivante 7.2.8). Ceci
suppose des ingnieurs comptents pour ce faire, ce quoublient certaines entreprises
qui se croient protges en achetant (fort cher) un coupe-feu cls en mains, congur
avec des ltres pertinents un instant donn mais prims quinze jours plus tard,
et qui se retrouvent ainsi dots dune magnique ligne Maginot 4 .
Scurit
183
Dtecter une vulnrabilit ne veut pas dire quelle soit exploite, ni mme exploitable,
mais le risque existe.
Les vulnrabilits publies par les CERT sont relatives toutes sortes de systmes ; leur publication constitue une incitation forte pour que les industriels concerns (les producteurs du systme ou du logiciel le plus souvent) les corrigent. Certains
tentent aussi de ralentir le travail des CERT, dont ils aimeraient bien quils ne dvoilent pas leurs faiblesses...
Le premier CERT a vu le jour lUniversit Carnegie-Mellon de Pittsburgh la
n des annes 1980. En 2013 la France dispose de trois CERT principaux (il y a des
CERT privs ou dintrt local) : le CERTA pour les besoins des administrations et
services publics, le CERT Renater sadresse aux Universits et centres de recherche,
le CERT-IST sadresse au monde industriel. En fait la coopration entre les CERT
est assez troite.
La publication des avis des CERT est une contribution majeure et vitale la scurit des systmes dinformation. Simplement le volume est tel que leur dpouillement
reprsente un travail considrable par des personnes comptentes.
Faut-il publier les failles de scurit ?
Un dbat sest engag sur le bien fond de certains avis, et sur la relation quil
pourrait y avoir entre le nombre davis concernant un logiciel ou un systme donn
et sa qualit intrinsque. Les dtracteurs des logiciels libres ont par exemple mis
en exergue le volume trs important davis des CERT qui concernaient ceux-ci (par
exemple Linux, le serveur WWW Apache, Sendmail, etc.) pour en infrer leur fragilit. Leurs dfenseurs ont ripost en expliquant que les avis des CERT concernaient
par dnition des failles de scurit dcouvertes et donc virtuellement corriges,
alors que labsence davis relatifs tel systme commercial pouvait simplement signier que son auteur passait sous silence ses dfauts de scurit en protant de
son opacit. Or lexprience prouve que tout dispositif de scurit a des failles ; les
vrais attaquants ne perdent pas leur temps faire de la recherche fondamentale sur
la factorisation des grands nombres entiers, ils essaient de reprer les failles dimplmentation et ils les exploitent. Face ce risque la meilleure protection est une
capacit de riposte rapide, qui consiste le plus souvent commencer par dsactiver
le composant pris en dfaut en attendant la correction. La communaut du logiciel
libre excelle dans cet exercice, mais avec les logiciels commerciaux les utilisateurs
nont souvent aucun moyen dagir sauf attendre le bon vouloir de leur fournisseur.
Dans ce contexte, la publication davis des CERT relatifs des logiciels commerciaux
est trs bnque parce quelle incite les fournisseurs corriger plus rapidement un
dfaut dont la notorit risque de nuire leur rputation. Mais certains fournisseurs
cherchent obtenir le silence des CERT en arguant du fait que leurs avis risquent
de donner aux pirates des indications prcieuses... ce qui est fallacieux parce que
les sites WWW des pirates sont de toute faon trs bien informs et mis jour,
eux, selon les principes du logiciel libre, ce qui indique o est lecacit maximum.
Lexprience tend prouver quune faille de scurit est dautant plus vite comble
quelle est publie vite et largement. Laccs au code source du logiciel en dfaut est
bien sr un atout supplmentaire.
Sommaire
8.1
8.2
8.3
8.4
8.5
8.6
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 185
. 187
. 189
. 191
. 194
. 194
. 195
. 198
. 199
. 199
. 199
. 200
. 201
. 202
. 205
. 207
186
187
Multics, sous cet angle comme sous certains autres, tait un prcurseur dUnix,
systme qui considre ses utilisateurs comme des personnes intelligentes, mais aussi
susamment intresses par le systme lui-mme pour lui consacrer un temps non
ngligeable dont les employeurs ne comprennent pas toujours la fcondit. Cest ainsi
que des industriels ont invent pour Unix une interface utilisateur nomme CDE
(Common Desktop Environment) dont le principe est de plaquer sur le systme
une sorte de super-Windows dont le paramtrage, rserv des administrateurs,
est ensuite propag la masse des utilisateurs. Cette vision centralise et hyperorganise aurait sans doute bien russi dans les annes 1960, mais elle risque de ne
pas rsister aux sables mouvants de la sociologie relle des organisations des annes
2000.
188
189
uvre prcdente. En informatique comme ailleurs, point de salut sans une part de
renoncement.
En fait, la n des annes 1960, lchec de Multics aux Bell Labs tait patent.
Lquipe qui allait y concevoir Unix, autour de Ken Thompson et Dennis Ritchie,
comprit que Multics ne serait pas utilisable pour un travail rel dans un dlai raisonnable. De son ct le propritaire de Multics, la compagnie General Electric, se
sentait assez peu concern par ce systme dvelopp par des chercheurs universitaires et prfrait commercialiser ses ordinateurs avec son systme conventionnel,
GECOS. Lorsque Multics deviendrait utilisable, la toute n des annes 1970, les
ordinateurs quil pouvait piloter taient dnitivement prims et sans espoir de
succession.
Dans un article de 1979 [62] Dennis Ritchie a dcrit cette priode o les Bell
Labs se retiraient du projet Multics. Ce processus saccompagnait dun autre facteur dincertitude : une rorganisation visait sparer les quipes de recherche en
informatique des quipes de linformatique oprationnelle ; ce genre de sparation,
conforme aux vues des managers nanciers ecaces et jugeote courte, a pour consquence habituelle de diminuer les moyens disponibles pour la recherche et de rduire
la qualit de linformatique oprationnelle, prive de stimulation intellectuelle. Le
groupe de D. Ritchie, K. Thompson, M. D. McIlroy et Joseph F. Ossanna souhaitait
conserver lenvironnement de travail luxueux que Multics leur procurait un cot
dautant plus exorbitant quils en taient les derniers utilisateurs. Pour ce faire ils
allaient dvelopper leur propre systme sur un petit ordinateur bon march et un
peu inutilis rcupr dans un couloir, un PDP 7 de Digital Equipment. Unix tait
sinon n, du moins conu.
190
la lecture du livre de Salus, quiconque a un peu frquent les milieux scientiques dune part, les milieux industriels de lautre, ne peut manquer dtre frapp
par le caractre dcal, pour ne pas dire franchement marginal, de la plupart des
acteurs de la gense unixienne.
Le monde de la science a sa hirarchie, o les disciplines spculatives et abstraites
ont le pas sur les recherches appliques et les disciplines descriptives, et o bien sr
les chercheurs sont patriciens et les ingnieurs et techniciens ilotes, entours dune
population au statut incertain, les tudiants en thse ou en post-doc, dont une
minorit dlus accdera au patriciat mais dont la majorit ne deviendra mme pas
ilote, contrainte descendre aux enfers, cest--dire le monde rel des entreprises
industrielles et commerciales.
Dans cet univers social, linformatique, discipline rcente et mal identie, perue
(au mpris de toute vraisemblance, mais quimporte au sociologue) comme un vague
sous-produit de la branche la moins noble des mathmatiques (lanalyse numrique),
se situe plutt vers le bas. Au sein de la discipline, le haut du pav est tenu par les
domaines o il y a une thorie possible, de prfrence mathmatique ou la rigueur
physique : linguistique de la programmation, algorithmique (surtout numrique ou
logique), traitement de limage ou du signal en gnral. Les systmes dexploitation
disposent de tout un arsenal de concepts, mais pas dune thorie, cest ainsi ; de
surcrot ils sont bien prs du matriel, cette chose qui a des relents de cambouis
et de sueur. Donc ils sont en bas. Alors des ingnieurs qui soccupent de systmes
dexploitation...
Le monde industriel (nous nous plaons lpoque de la naissance dUnix, avant
la prise de pouvoir par les nanciers costume noir et cortex de calmar) a un
systme de valeurs symtrique de celui de la science : on y respecte celui qui fait des
choses, de vraies choses. Cest un univers domin par les ingnieurs, qui sont censs
se coltiner avec la matire. On sait bien quune industrie dynamique doit avoir des
centres de recherche, et que dans ces endroits travaillent des types bizarres appels
chercheurs, mais mme si on ne les mprise pas vraiment, ils sont considrs avec
une certaine distance.
Or que nous apprend Salus ? Thompson et Ritchie taient chercheurs dans une
entreprise industrielle. Au fur et mesure de leur apparition, les noms de ceux qui
font fait Unix, parmi eux Kirk McKusick, Bill Joy, Eric Allman, Keith Bostic, sont
toujours accompagns dun commentaire de la mme veine : ils taient tudiants
undergraduates ou en cours de PhD, et soudain ils ont dcouvert quUnix tait bien
plus passionnant que leurs tudes. Bref, les auteurs dUnix nont jamais emprunt ni
la voie qui mne les ingnieurs perspicaces vers les fauteuils de Directeurs Gnraux,
ni celle que prennent les bons tudiants vers la tenure track, les chaires prestigieuses,
voire le Nobel 4 .
4. On sait quAlfred Nobel, lorsquil cra ses Prix, ne voulut pas en attribuer aux Mathmatiques. La lgende dit que cette exclusion serait due une trop grande sympathie quaurait prouve
Madame Nobel pour un certain mathmaticien. Pour se consoler les mathmaticiens crrent la mdaille Fields, dcerne tous les quatre ans. Les informaticiens ont encore plus besoin de consolation,
puisquils nont mme pas russi sduire Madame Nobel. Ils ont cr le Turing Award, qui a
notamment t dcern, parmi nos personnages, Maurice V. Wilkes, E.W. Dijkstra, Donald E.
Knuth, C. Antony R. Hoare, Frederick P. Brooks, Fernando Corbat, Ken Thompson et Dennis M.
Ritchie. Voir http://www.acm.org/awards/taward.html pour plus de dtails.
191
192
dont il ne veut rien savoir, et Unix non plus, parce que pour un dveloppeur 6 ces
aides pdagogiques sont autant dobstacles son travail.
La syntaxe des commandes Unix est sche comme un coup de trique, dune part
parce quelles sont destines des professionnels qui les connaissent par cur
force de les utiliser longueur de journe, dautre part parce quelles constituent
un langage de programmation (le shell) qui permettra dautomatiser des oprations
rptitives, et que pour un langage toute souplesse syntaxique se paye en espace et
en temps (il faut bien crire les instructions qui vont interprter les commandes, et
autant de variations possibles autant de dizaines de lignes de code en plus).
La rponse du systme lutilisateur qui lui soumet une commande est tout
aussi austre, le plus souvent dailleurs il ny a pas de rponse. Ainsi, si vous voulez
modier le nom dun chier, et que le nouveau nom que vous souhaitez lui donner
est dj pris par un autre chier, si le renommage est eectu le chier homonyme
sera dtruit. Les systmes lusage des secrtaires, des comptables ou des prsidents
duniversit, face un tel cas, posent la question lutilisateur : veux-tu vraiment
dtruire lautre chier ? , ou renomment le chier menac. Pour Unix rien de tel :
le chier est froidement dtruit sans mme une notication post mortem. Cest un
systme pour les vrais hommes, qui savent ce quils font, assument leurs erreurs et
savent les rparer.
Mais cet asctisme il y a une raison encore plus dirimante, et qui nest pas
de lordre du sado-masochisme. Linvention sans doute la plus gniale dUnix est la
possibilit, par la simple syntaxe du shell, de raliser des oprations de composition
de processus, au sens algbrique du terme.
Les oprations les plus simples consistent rediriger les rsultats de sortie dune
commande vers un chier, et donner en entre une commande des donnes
stockes dans un chier, ce qui nest pas encore de la composition de processus.
Mais pour raliser ceci il fallait dj standardiser les formats dentre et de sortie
des commandes, et dcoupler les mcanismes dentre et de sortie, pour introduire
les notions dentre standard et de sortie standard, ce qui ouvrait la voie des
ralisations plus ambitieuses.
Loprateur de composition de processus en squence est ; . On remarque la
concision. a ; b se lit : excuter la commande a, puis la commande b. La plupart
6. Cest avec Unix que dveloppeur a supplant programmeur . Ces deux termes ont rigoureusement le mme sens, personne dont le mtier est la cration de programmes informatiques ,
mais programmeur avait t victime dune dvalorisation injuste. Les premiers managers de linformatique ont pens y reproduire un schma qui tait dj en dclin dans lindustrie : lingnieur
conoit, louvrier fait. En informatique lanalyste concevrait ce que le programmeur ferait. Erreur.
Lingnieur disposait, pour transmettre louvrier la description de ce quil devait faire, dun outil
prcis et rigoureux, le dessin industriel. Rien de tel en informatique, malgr des eorts qui durent
encore pour crer des systmes de spcication infaillibles dont UML est le dernier avatar. Et
cela il y a des raisons : un ordinateur dot de son systme dexploitation et de ses langages de
programmation nest pas seulement inniment plus versatile et plus souple quun tau-limeur ou
quune fraiseuse, il est surtout dune tout autre nature. Il traite de linformation, et comme nous
lavons vu linformation nest que parce quimprvisible. Et linformation qui dcrit un programme
raliser est de la mta-information, puisque le programme est lui-mme de linformation. De ce
fait la vraie dicult rside bien toujours dans lcriture du programme, qui est un exercice incroyablement dlicat et laborieux. E.W. Dijkstra se dnit lui-mme comme programmeur. Mais rien ny
fait, le programmeur sent le cambouis et la sueur, alors que son remplaant le dveloppeur arbore
(jusqu la retraite et au-del) luniforme seyant et lthos dcontract des tudiants californiens.
193
194
(convenablement modi) sur leur sortie standard, ce qui permet de les combiner ad
libitum.
Cest le livre de Jean-Louis Nebut [54] qui me semble-t-il explicite le mieux la
syntaxe du shell en termes de ltres et de composition de processus. Il est ais
de concevoir que le fonctionnement dun tel systme suppose une discipline assez
asctique dans la syntaxe des commandes et leur mode dinteraction. Notamment,
puisquelles doivent tre les syntagmes dun langage de programmation, dont les
programmes sont usuellement appels shell scripts, il nest pas souhaitable que les
commandes engagent un dialogue avec lutilisateur, qui dans ce cas ne sera pas un
humain mais le systme dexploitation.
Dissmination dUnix
195
196
sables, parce quUnix tait gratuit, mais sans maintenance, les utilisateurs taient
contraints de sentraider pour faire fonctionner leurs systmes. Je me rappelle encore en 1981 les collgues de lIRCAM qui administraient un des premiers VAX sous
Unix dEurope, toute leur maintenance logiciel tait en direct avec Berkeley. Une
communaut (scientique ? technique ? dans les marges de la science et de la technique ?) allait se crer. Lassociation USENIX en serait une des instances visibles,
mais elle resterait largement informelle.
Il est noter que cette communaut serait assez vite internationale : pour les
managers dAT&T qui staient laiss convaincre de concder Unix gratuitement aux
chercheurs, comme pour la DARPA, le monde informatisable se limitait aux tatsUnis et leur extension canadienne, ils navaient pas un instant envisag lexistence
dUniversits en Europe ou en Australie, et encore moins quelles puissent sintresser Unix. Pourtant, Salus numre les institutions inscrites la premire liste de
diusion lectronique, telles que cites par le numro 1 de UNIX NEWS de juillet
1975, et on y trouve dj lUniversit catholique de Louvain et lUniversit hbraque
de Jrusalem. Noublions pas que le premier article consacr Unix tait paru dans
les Communications of the Association for Computing Machinery (CACM), lorgane de la principale socit savante informatique, en juillet 1974, sous la plume de
Thompson et Ritchie, seulement un an auparavant donc.
Accder au rseau, pour les non-Amricains, posait quand mme un problme
de taille : nancer une liaison tlphonique prive transatlantique ntait, et nest
toujours pas, la porte dun budget de laboratoire. Ce nest pas avant la dcennie 1980 que les subventions conjugues de la National Science Foundation (NSF)
amricaine et, par exemple, du ministre franais de la Recherche permettront un
accs convenable pour lpoque ce qui tait devenu entre-temps lInternet. Mais
ds les annes 1970 des groupes Unix quasi militants apparaissaient dans quelques
pays : Australie en 1975, Grande-Bretagne en 1976, Pays-Bas en 1978, France en
1981. Unix se propage sur bande magntique, son usage est recommand de bouche
oreille, cest assez analogue au phnomne des radio-amateurs dans les annes 1960 :
tout le plaisir est de russir tablir une communication avec le Japon ou le Kenya,
peu importe aprs tout ce que lon se dit, mais le sentiment dappartenance la
mme socit dinitis est dautant plus fort que les gens srieux et raisonnables ne
comprennent pas.
Ce milieu social dtudiants en rupture de PhD et dingnieurs de centres de
calcul dont les responsables ont renonc comprendre la teneur exacte de lactivit
va assurer le dveloppement dUnix et de lInternet, tant les deux sont indissociables.
Ce faisant ils vont engendrer une nouvelle entit technique et conomique, le logiciel
libre. Tout cela sans matrise douvrage, sans cahier des charges, sans business plan,
sans marketing, sans conduite du changement ni plan qualit, ni tout un tas dautres
choses soi-disant indispensables.
Avant daborder la question du logiciel libre, il faut sinterroger sur un phnomne quand mme surprenant : nous avons dit quUnix tait trs inconfortable pour
tout autre quun dveloppeur utilisant ses diverses fonctions longueur de journe.
Comment expliquer alors quen une dizaine dannes il se soit vu reconnatre une
position hgmonique dans tout le monde de la recherche ? Parce que mme dans les
dpartements dinformatique des universits et des centres de recherche, la majorit
Dissmination dUnix
197
des gens ne passent pas leur temps programmer, il sen faut mme de beaucoup,
alors ne parlons pas des biologistes ou des mathmaticiens.
La rponse nest pas univoque. Mon hypothse est que si cette population dtudiants et dingnieurs, pauvre en capital social et en lgitimit scientique, a pu se
hisser cette position hgmonique, cest que la place tait prendre. Pendant les
annes 1960 et 1970, on assiste aux tentatives des autorits acadmiques lgitimes
de linformatique, dont les porte-drapeaux ont nom Dijkstra, Hoare, Knuth, ou en
France Arsac, Ichbiah, Meyer, pour imposer leur discipline comme une science
part entire, gale de la Physique ou de la Mathmatique. Pour ce faire ils laborent
des formalisations, des thories, des concepts souvents brillants. Peine perdue, ils
chouent, malgr le succs technique et conomique retentissant de linformatique,
ou peut-tre mme victimes de ce succs. Le public, ft-il universitaire, ne discerne
pas lexistence dune science derrire les objets informatiques qui deviennent de plus
en plus ses outils de travail quotidiens. Les raisons de cet tat de fait restent en
grande partie lucider, sur les traces de chercheurs en histoire de linformatique tel
en France un Pierre-ric Mounier-Kuhn. Ce dsarroi identitaire de linformatique
universitaire snobe par ses collgues laissait le champ libre des non-mandarins
dautant plus dpourvus de complexes quils navaient aucune position dfendre et
que le contexte conomique dUnix lui permettait de se dvelopper dans les marges
du systme, sans gros budgets hormis le coup de pouce initial de la DARPA. Les
nancements absorbs par Unix et TCP/IP sont assez ridicules si on les compare
ceux de lintelligence articielle, sans doute la branche la plus dispendieuse et la plus
improductive de la discipline 8 , ou mme ceux du langage Ada, projet sur lequel
se sont penches toutes les bonnes fes de la DARPA et du monde acadmique, et
qui nalement na jamais perc en dehors des industries militaires et arospatiales
(ce nest dj pas si mal, mais les espoirs taient plus grands).
Finalement, les outsiders unixiens lont emport par leur sduction juvnile et
leur occupation du terrain pratique, qui leur a permis de proposer telle ou telle discipline les outils qui lui manquaient au moment crucial : le systme de composition
de documents TEX pour les mathmaticiens, qui seul rpondait leurs exigences
typographiques, et pour les informaticiens toutes sortes de langages et surtout doutils pour crer des langages. Jai vu dans le monde de la biologie Unix supplanter
VMS : il faut bien dire que les tarifs pratiqus par Digital Equipment et la rigidit
de sa politique de produits lui ont cot la domination dun secteur qui navait pas
beaucoup de raisons de lui tre indle. Un collgue ma con un jour Le principal
argument en faveur dUnix, cest que cest un milieu sympathique . Cet argument
mavait paru rvoltant, mais je crois quil avait raison, si lon prend soin de prciser
que par sympathique on entend propice aux libres changes intellectuels .
8. Pour tre juste, il faut dire que si lintelligence articielle au sens fort du terme a t une telle
source de dceptions depuis larticle fondateur de McCulloch et Pitts en 1943 quil est dicile de
rsister la tentation de parler dimposture, ses nancements somptueux ont permis la ralisation
de produits drivs du plus grand intrt, comme les langages LISP, les interfaces graphiques
fentres, le systme ddition de texte Emacs et bien dautres, souvent dailleurs des logiciels libres.
198
8.5.3 Le schisme
Une si belle unanimit ne pouvait pas durer (et aurait t de mauvais augure).
La souche BSD manifestait une certaine indpendance par rapport lorthodoxie
AT&T. la section ci-dessus 8.5.2 nous avons laiss dune part les versions issues
de la souche Bell Labs, regroupes partir de 1983 sous lappellation System V , de
lautre celles issues de la souche BSD, qui en 1983 en sont la version 4.2BSD. De
cette poque on peut vraiment dater la sparation de deux coles rivales. On pourra
se reporter au livre de McKusick et ses coauteurs [47] qui donne dans ses pages 5 et
6 un arbre phylogntique complet du genre Unix.
Quelles taient les dirences entre System V et BSD ? En fait la seule dirence
vraiment profonde, perceptible dans larchitecture du noyau, tait le code destin
la communication entre processus (et de ce fait au fonctionnement du rseau),
organis dans les systmes BSD selon le modle de socket que nous avons voqu
la section 6.6.1, tandis que les System V utilisaient un autre modle, moins versatile, baptis STREAMS. BSD fut aussi en avance pour adopter un systme de
mmoire virtuelle demande de pages et un systme de chiers amlior (Fast File
System). Autrement certaines commandes du shell taient direntes, ainsi que le
systme dimpression et lorganisation des chiers de paramtres du systme (rpertoire /etc), etc. La dirence tait surtout perceptible pour les ingnieurs systme
et pour les dveloppeurs de logiciels proches du noyau.
Au fur et mesure quUnix se rpandait, certains industriels en percevaient lintrt commercial et lanaient des gammes de matriels sous Unix. Bill Joy et certains
de ses collgues de Berkeley craient en 1982 Sun Microsystems dont les ordinateurs
base de processeurs Motorola 68000 mettaient en uvre une version drive de
BSD, SunOS. Chez DEC ctait Ultrix. HP-UX de Hewlett-Packard et AIX dIBM
taient de sensibilit System V. Ds 1980 Microsoft avait lanc Xenix ; ce sujet il
convient dailleurs de noter qu cette poque Bill Gates considrait Unix comme
le systme dexploitation de lavenir pour les micro-ordinateurs ! AT&T lanait ses
propres microprocesseurs et ses propres ordinateurs (la gamme 3B) sous Unix, qui
neurent aucun succs : le dmantlement du monopole dAT&T sur les tlcommunications aux tats-Unis au dbut des annes 1980 lui donnait lautorisation de
commercialiser des ordinateurs, mais cela ne sut pas assurer le succs de cette
gamme de machines...
En fait les dirences idologiques taient plus tranches que les dirences techniques. Le monde de la recherche et de luniversit, ouvert sur les rseaux, penchait
pour BSD, issu du mme univers, cependant que le monde de lentreprise avait tendance se mer de lInternet (ou lui tre indirent) et se tourner vers la
version de la maison-mre, System V.
Il y eut des trahisons sanglantes et impardonnes : en 1992, Sun, porte-drapeau
du monde BSD avec SunOS 4.1.3, lpoque le meilleur Unix de lavis de la communaut des dveloppeurs, conclut avec AT&T des accords dailleurs sans lendemain
aux termes desquels il passait System V sous le nom de Solaris, honni par les
puristes BSD.
Ce qui est certain, cest que ces luttes de clans et ce culte de la petite dirence
ont beaucoup nui la diusion dUnix et beaucoup contribu au succs des systmes
Windows de Microsoft. La communaut des dveloppeurs a galement dploy tous
ses eorts pour combattre toute tentative de dvelopper au-dessus dUnix et du
199
8.6.2 Prhistoire
Avant dexaminer plus avant les tenants et les aboutissants de ces principes et de
ce modle conomique, il convient de signaler que jusquen 1972 le logiciel, sil ntait
pas libre au sens de la GPL, tait pratiquement toujours disponible gratuitement
et trs souvent sous forme de texte source, et ce parce que jusqualors la conscience
9. En fait lire fondatrice qui dcida de la vocation prophtique du Matre tait dirige contre
Xerox et son pilote dimprimante... Felix culpa. Le lecteur remarquera que malgr leurs pchs AT&T
et Xerox jouent un rle capital dans lhistoire de linformatique en y apportant plus dinnovations
que bien des industriels du secteur.
200
du cot et de la valeur propre du logiciel tait dans les limbes. IBM, qui avait
ni par accaparer 90% du march mondial de linformatique, distribuait systmes
dexploitation et logiciels dusage gnral titre de fournitures annexes avec les
ordinateurs.
Peu aprs lannonce de la gamme IBM 360 en 1964, RCA annona les ordinateurs Spectra 70 dont larchitecture tait conue an de pouvoir accueillir le logiciel
dvelopp pour les IBM 360, y compris le systme dexploitation. Cette ambition ne
se ralisa pas, notamment parce que les ingnieurs de RCA navaient pu se retenir
dajouter leur systme des amliorations qui en dtruisaient la compatibilit,
mais IBM avait peru la menace et commena laborer une parade juridique qui
consistait sparer la facturation du logiciel de celle du matriel : ce fut la politique
dunbundling, annonce en 1969, mais dont lapplication ce moment fut entame
assez mollement.
Au dbut des annes 1970, quelques industriels (notamment Telex, Memorex
et Calcomp) commencrent vouloir proter de la manne et pour cela vendre des
matriels compatibles avec ceux dIBM, cest dire tels que les clients pourraient
les acheter et les utiliser en lieu et place des matriels IBM originaux. IBM riposta
ce quil considrait comme une concurrence dloyale en cessant de divulguer le
code source des parties de systme dexploitation qui permettaient la conception
et le fonctionnement des systmes concurrents. Il en rsulta des procs acharns,
et en 1972 un arrt de la Cour suprme des tats-Unis, au nom de la lgislation
anti-trust cre pour limiter lemprise de Rockfeller, statua dans le procs Telex
IBM et imposa IBM de facturer part logiciel et matriel. Ceci prcipita lentre
en vigueur de la politique dunbundling. Les observateurs de lpoque dclarrent
que cela naurait aucun eet, mais deux industries taient nes : celle du matriel
compatible IBM, qui serait orissante une vingtaine dannes, et celle du logiciel,
dont Microsoft est le plus beau euron.
8.6.3 Prcurseurs
Si lglise chrtienne a reconnu Jrmie, Isae, Daniel et zchiel la qualit
de prcurseurs de la vraie foi et de la venue du Sauveur, Richard Stallman est plus
intansigeant, mais nen a pas moins lui aussi des prcurseurs. Ils se situent dans les
limbes, lpoque o ARPANET engendrait TCP/IP, qui tait bien videmment du
logiciel, et qui tait distribu aux membres du rseau, cest dire, nous lavons vu,
potentiellement toutes les universits et tous les centres de recherche. Comme tout
cela se passait Berkeley, il en rsulta que le systme de prdilection de TCP/IP et,
partant, de lInternet fut Unix, et que traditionnellement les principaux logiciels de
rseau sous Unix furent distribus gratuitement, du moins aux centres de recherche,
sous les termes dune licence dite BSD qui garantissait les droits de proprit
intellectuelle des Rgents de lUniversit de Californie . Les lments de base du
protocole TCP/IP proprement dit font partie du noyau Unix BSD, do ils ont assez
vite t adapts aux noyaux des autres Unix, cependant que les logiciels dapplication
qui en permettaient lusage, tels que Sendmail pour envoyer du courrier lectronique,
Ftp pour transfrer des chiers, Telnet pour se connecter un systme distant, etc.,
taient distribus indpendamment. Plus tard Bind pour la gestion du service de
noms de domaines, INN pour le service de News et beaucoup dautres logiciels
sajouteront cette liste, toujours gratuitement.
201
Par ailleurs, Unix devenait populaire dans le monde de la recherche et les logiciels
dvelopps par des scientiques taient aussi rendus disponibles dans des conditions
analogues : TEX pour la composition typographique, Blast pour la comparaison
de squences biologiques, Phylip pour lanalyse phylogntique, pour ne citer que
trois exemples parmi une foule, sont disponibles selon les termes de licences assez
varies (ou dabsence de licence...), mais toujours sans versement de redevances.
Bref, le monde de la recherche fait et utilise du logiciel libre depuis longtemps sans
forcment le dire ni mme en avoir conscience.
202
peut mobiliser des centaines de personnes pendant une dcennie, le cot marginal
du produit nal livr dans un grand magasin est pratiquement nul, le prix pay
par le client est essentiellement celui de la bote en carton, des frais de transport
et de gestion et de leort commercial. Il en rsulte, dans lindustrie du logiciel,
une tendance irrversible au monopole : dans une industrie cot marginal de
production nul, ds que vous vendez plus que les autres, vous tes trs vite beaucoup
plus riche, avec les consquences qui en dcoulent. Ds lors quun march prend
forme et sorganise, il merge un fournisseur unique : Microsoft pour les systmes
des micro-ordinateurs et la bureautique, Oracle pour les bases de donnes, SAP
pour la gestion nancire et comptable, SAS pour lanalyse statistique. Quelques
concurrents subsistent, en permanence au bord de la faillite ou cachs dans des
niches de march.
Dans cette situation dsesprante, lespoir de diversit, dans un contexte industriel classique, ne peut venir que de lapparition de nouveaux segments de marchs, desservis par de nouvelles technologies, rle jou dans le pass par les miniordinateurs, puis les micro-ordinateurs base de microprocesseur, innovations technologiques qui rduisaient de plusieurs ordres de grandeur les cots de production.
203
Volle, Coris et dautres ont montr que le march dun bien dinformation ne
peut prendre que deux formes :
si les instances de ce bien sont susamment direncies, plusieurs fournisseurs peuvent coexister dans des niches du march ;
ds quun fournisseur russit prendre sur ses concurrents un avantage signicatif en dniant leur dirence, il obtient une situation de monopole du fait
des conomies dchelle considrables procures par le volume des ventes.
Le logiciel libre chappe cette alternative parce quil se situe hors de la logique
marchande, et que la rtribution de ses auteurs relve des domaines symbolique et
moral. Michel Volle a fait remarquer quun auteur de logiciel libre aurait aussi un
accs facilit au capitalrisque le jour o il voudrait crer une entreprise du fait de
la reconnaissance acquise dans le domaine non marchand.
La GNU GPL dnit parfaitement les quatre liberts caractristiques du
logiciel libre : libert dutilisation, libert de copie, libert de modication et libert
de redistribution. Elle autorise donc la modication et la redistribution, mais en
imposant que le logiciel reste sous GPL, et ce galement dans le cas de lincorporation
dun logiciel libre un nouveau logiciel : le caractre libre est hrditaire et
contagieux. Dans ce dispositif, le statut du code source dtermine la nature publique
du bien, plus quil ne sert vraiment la maintenance par lutilisateur. La publicit du
code interdit lappropriation prive. Mais plonger dans les sources pour y introduire
des modications est une entreprise nenvisager quavec circonspection ; cela risque
de coter fort cher.
Reste se poser une question : le logiciel libre, comme le logiciel non libre, est
crit par des hommes et des femmes qui y consacrent tout ou partie de leur vie
professionnelle et qui ne vivent pas de lair du temps. Qui nance la production de
logiciels libres, et comment, puisque, quoique ses aptres sen dfendent, sa caractristique principale est bien quil est possible de lutiliser sans bourse dlier ?
Bertrand Meyer, dans un article assez polmique de critique du libre [49], dresse
une nomenclature des sources de nancement possibles, qui nerve les adeptes mais
laquelle il est dicile de dnier toute vracit :
1. une donation : le dveloppeur vit de sa fortune personnelle ou dveloppe pendant ses nuits et ses jours de cong ;
2. le nancement public : le logiciel a t cr par un centre de recherche, une
universit ou une autre entreprise publique ;
3. le nancement priv : une entreprise dcide de distribuer un logiciel dvelopp
ses frais selon le modle libre ;
4. la subvention (publique ou prive) : le dveloppeur cre un logiciel en utilisant
son temps de travail et les ressources de son employeur, public ou priv, sans
que celui-ci lui ait con cette tche.
Le cas 4 est celui qui provoque parfois quelque agacement, et on ne peut exclure
quil soit assez rpandu. Cela dit, un examen de ce cas inform par les tendances
les plus rcentes de la sociologie du travail montre que cette situation nest pas
forcment scandaleuse, et que linitiative prise par le dveloppeur peut comporter des
avantages pour son employeur mme sil nen avait pas initialement conscience. La
cration dUnix en est le plus bel exemple, et si lon regarde en arrire, on peut se dire
quAT&T en aurait sans doute tir encore plus davantages en en faisant un logiciel
204
205
206
navigateur connue sous le nom Mozilla, lopration a t rendue dicile parce que
le code initial navait pas t ralis selon un plan susamment modulaire.
Finalement, la rutilisation de composants logiciels, dont plusieurs industriels
parlent beaucoup depuis des annes sans grand rsultat, sera sans doute ralise
plutt par les adeptes de lOpen Source. En eet, lachat dun tel composant est un
investissement problmatique, tandis que le rcuprer sur le rseau, lessayer, le jeter
sil ne convient pas, ladopter sil semble prometteur, cest la dmarche quotidienne
du dveloppeur libre. On pourra lire ce sujet larticle de Josh Lerner et Jean Tirole,
The Simple Economics of Open Source [42].
Lanalyse dtaille des consquences dun tel mode de construction de logiciel
reste faire, mais en tout cas il ne fait aucun doute que le rsultat sera trs dirent.
Rappelons les tapes classiques de la construction dun systme informatique pour
un client selon le mode projet :
expression des besoins ;
cadrage, opportunit, faisabilit ;
spcication ;
ralisation ;
recette...
Oublions tout cela dans le monde du libre. Le logiciel commence prendre forme
autour dun noyau, noyau de code et noyau humain, gnralement une seule personne ou un tout petit groupe. Limpulsion initiale procde le plus souvent du dsir
personnel des auteurs de disposer du logiciel en question, soit quil nexiste pas, soit
que les logiciels existants ne leur conviennent pas, que ce soit cause de leur prix ou
de leur environnement dexcution. Puis dautres contributions viennent sajouter,
presque par accrtion. Un coordonnateur merge, souvent lauteur initial, il assure la
cohrence de lensemble. Quand des divergences de vue surgissent, il peut y avoir une
scission : ainsi deux versions sont disponibles pour Emacs, Gnu Emacs et Xemacs,
toutes deux libres.
Le catalogue du logiciel libre est assez vaste. Tout dabord le logiciel libre avant
la lettre :
TEX, LATEX, respectivement de Donald Knuth et de Leslie Lamport, avec
lesquels est ralis le prsent document ;
les logiciels rseau :
Sendmail, pour envoyer du courrier ;
Bind, pour rsoudre les noms de domaine,
beaucoup dautres, ce sont eux qui font marcher lInternet ;
X Window System ;
des quantits de programmes scientiques : lessentiel de la biologie molculaire se fait avec du logiciel libre.
Et pour le logiciel libre canonique, de stricte obdience :
Gnu Emacs, un diteur, et son rival Xemacs, GCC, un compilateur C, The
Gimp, un concurrent libre de Photoshop, GNAT, un environnement de programmation ADA, GNOME, un environnement graphique pour Linux, gnumeric, un tableur ;
Linux, FreeBSD, OpenBSD, NetBSD, des systmes dexploitation Unix ;
PostgreSQL et MySQL, des systmes de gestion de bases de donnes relationnelles ;
207
8.6.7 Linux
Linux est indubitablement un systme emblmatique du logiciel libre. Sil y a
dautres systmes dexploitation libres, y compris dans la famille Unix, et si les logiciels libres ne sont pas tous destins Unix, lassociation avec Linux est invitable.
Le dbut de ce chapitre montre la liation entre le mouvement autour dUnix et le
dveloppement du logiciel libre, mais le paradoxe tait quUnix lui-mme ntait pas
libre, AT&T en dtenait les droits. Pourtant la communaut Unix tait trs attache
lide de laccs au code source du systme, puisque le dveloppement de nouveaux
logiciels, certains trs proches du systme, ne pouvait tre entrepris quavec un tel
accs. En outre les droits dAT&T semblaient contestables, parce quUnix avait
recueilli beaucoup de contributions extrieures souvent non rmunres. Plusieurs
moyens ont t envisags pour briser ou contourner ce paradoxe.
Le premier moyen consistait obtenir dAT&T une licence source. Si pour des
chercheurs ou des universitaires ctait thoriquement possible, pratiquement des
obstacles surgissaient. Si lon tait loin des tats-Unis et que lon navait pas de
relations dans ce milieu, nouer les contacts ncessaires pouvait demander des mois.
Une fois la licence source obtenue, il fallait obtenir du fournisseur de son ordinateur
les sources de la version de systme prcise installe sur la machine, ce quoi il ne
se prtait pas toujours avec bonne volont. Bref, le seul moyen de pouvoir accder
rellement aux sources dun systme oprationnel tait dappartenir un des groupes
en vue du monde Unix. Rappelons quau dbut des annes 1980 une machine capable
de tourner Unix et le rseau cotait au minimum lquivalent de 100 000 Euros
et que lInternet natteignait pas lEurope.
Ces dicults taient particulirement ressenties par les enseignants qui voulaient initier leurs tudiants Unix, ce qui tait bien sr impossible sans accs au
code source. Ils ont trs tt imagin des moyens de contourner les droits dAT&T.
Le prcurseur quasi lgendaire de cette dmarche fut un professeur australien, John
Lions, dont le livre de 1977 A Commentary on the Unix System, V6 [45] comportait
le code du noyau. AT&T navait autoris quun tirage limit, mais comme en URSS
du temps de Brejnev apparut une vritable activit clandestine de Samizdat. Ce livre
fut rdit en 1996, et il mrite toujours dtre lu. John Lions aura vu la publication
lgale de son uvre avant sa mort en dcembre 1998.
Andrew Tanenbaum, professeur lUniversit Libre dAmsterdam (Vrije Universiteit Amsterdam), rencontra le mme problme. Pour les besoins de son enseignement il cra de toutes pices un systme miniature inspir dUnix, adapt aux
micro-ordinateurs processeur Intel et baptis Minix. Le cours donna naissance
un livre [74] dont les premires versions (1987) comportaient en annexe le code de
Minix. Il tait galement possible dacheter les disquettes pour installer Minix sur
son ordinateur, mais ce ntait ni trs bon march ni trs commode.
Pendant ce temps le groupe BSD travaillait expurger son code de toute instruction rdige par AT&T, de faon laranchir de tout droit restrictif. Le rsultat
fut 4.3BSD Net1 en 1989, puis 4.3BSD Net2 en 1991. Lobjectif tait de produire
208
4.4BSD-Lite en 1993, mais USL (Unix System Laboratories, une branche dAT&T
qui tait lpoque propritaire des droits Unix) attaqua ce projet en justice, ce
qui en dira la ralisation dun an. Du groupe BSD manrent aussi un systme
Unix pour processeurs Intel en 1992, 386BSD, et une socit destine le commercialiser, BSD Inc. Mais tous ces eorts furent retards par des questions juridiques.
Ils dbouchrent, sensiblement plus tard, sur les Unix libres FreeBSD, OpenBSD et
NetBSD.
Rappelons que depuis 1983 le projet GNU visait lui aussi produire un systme
similaire Unix mais libre de droits et disponible sous forme source. Au dbut des
annes 1990 ce groupe avait ralis un certain nombre de logiciels libres utilisables sur
les divers Unix du march, notamment des utilitaires, mais toujours pas de noyau.
En fait ce nest quen 2000 que le systme Hurd 12 destin remplacer le noyau Unix
et bas sur le micro-noyau Mach cr lUniversit Carnegie-Mellon commena
ressembler un vrai systme.
Le salut allait venir dailleurs. En 1991 un tudiant de lUniversit dHelsinki,
Linus Torvalds, achte un ordinateur dot dun processeur Intel 386 et cherche un
moyen dexplorer son fonctionnement. Minix lui semble une voie prometteuse, dans
laquelle il sengage, mais il y rencontre quelques obstacles et commence rcrire
certaines parties du noyau. En aot 1991 Linux est n, en septembre la version 0.01
est publie sur le rseau. Elle ne peut fonctionner que sous Minix. La version 0.02
publie le 5 octobre 1991 permet lusage du shell bash et du compilateur C gcc,
deux logiciels GNU. La premire version rpute stable sera la 1.0 de mars 1994.
Pour rsumer la nature de Linux, nous pourrions dire que cest un noyau, issu
lorigine de celui de Minix, et dont le dveloppement est toujours assur sous la
supervision personnelle de Linus Torvalds, entour des outils GNU, le tout sous
licence GPL. Ce que Linus Torvalds a fait, dautres auraient peut-tre pu le faire
eux-mmes, et ils regrettent sans doute den avoir laiss loccasion, un Europen
de surcrot, mais lhistoire est ainsi.
Linux est au dpart plutt un Unix System V, mais dot de toutes les extensions
BSD souhaitables, ainsi que des dispositifs ncessaires la conformit POSIX 13 . Sa
principale originalit tient sans doute son processus de dveloppement : alors que
tous les autres systmes dexploitation cits dans ce chapitre ont t dvelopps par
des quipes organises, le dveloppement du noyau Linux sest fait depuis le dbut
par appel au peuple sur lInternet. Quiconque sen sent la vocation peut participer aux forums, lire le code et proposer ses modications (appeles patches). Elles
seront examines par la communaut, et aprs ce dbat Linus Torvalds tranchera et
dcidera de lincorporation ventuelle au noyau ociel. Il est dicile destimer les
eectifs dune telle communaut informelle, mais le nombre de contributeurs actifs
au noyau Linux est sans doute infrieur 200 (nombre de dveloppeurs recenss
12. Hurd est fond sur un micro-noyau, ce nest donc pas un noyau. Voir chapitre 10.
13. POSIX (Portable Operating System Interface) est une norme de lIEEE qui dnit une API
(Application Program Interface) et une interface de commande pour les systmes dexploitation,
assez inspirs dUnix. La premire version de POSIX a t rdige en 1986 par un groupe de travail
auquel appartenait notamment Richard M. Stallman. Cet eort de normalisation fut au dpart
assez mal reu par une communaut Unix plutt libertaire : je me rappelle une confrence Usenix
la n des annes 1980 o certains participants arboraient un badge Aspirin, Condom, POSIX .
Mais il est certain que POSIX fut salutaire.
209
pour la version 2.0). Le succs de Linux rsulte sans doute en partie de facteurs impondrables : pourquoi lappel initial de Torvalds a-t-il sduit demble ? La rponse
cette question est srement complexe, mais en tout cas le succs est incontestable.
Ce qui est sr, cest que lappel contribution daot 1991 rpondait une attente
et une frustration largement rpandues.
Comme nous pouvons nous y attendre, Linux connat aussi la division en chapelles. Ici elles sappellent distributions . Au dbut, la diusion des lments de
Linux seectuait par le rseau, mais assez vite cela devint volumineux et compliqu. Il fallait transfrer le noyau lui-mme (en code source), ainsi que les logiciels
(surtout GNU) sans lequel il aurait t inutilisable, en veillant la synchronisation
des versions compatibles. Au bout de quelques annes apparurent des diteurs qui
distribuaient pour un prix modique des CD-ROMs comportant tout ce quil fallait
pour dmarrer.
Par exemple en 1996 on pouvait acheter pour lquivalent de moins de 30 Euros
(somme compatible avec la notion de logiciel libre, puisquelle ne rmunrait que
la copie, lemballage et la distribution, pas le logiciel lui-mme) le jeu de CD Infomagic, qui comportait notamment la distribution Slackware. La Slackware tait une
distribution assez asctique : les dirents logiciels taient simplement fournis sous
forme darchives compresses quil fallait compiler, en bnciant quand mme du
logiciel de gestion de conguration make.
Dautres distributions proposent des paquetages : il sagit de programmes tout
compils. Rassurez-vous, les principes du logiciel libre sont respects, le paquetage
source est fourni ct. Les distributions RedHat et Debian ont chacune leur format
de paquetage, leur logiciel dinstallation qui en outre contrle les dpendances entre
paquetages, linstallation et la mise jour par le rseau, etc. Il faut bien reconnatre
que cest assez pratique. Mais pour le dbutant qui se lance dans linstallation de
Linux il est nanmoins conseill davoir proximit un ami qui est dj pass par
l !
Sommaire
9.1
9.2
Architectures rvolutionnaires . . . . . . . . . . . . . . . . . .
9.1.1 SIMD (Single Instruction Multiple Data) . . . . . . . .
9.1.2 Architectures cellulaires et systoliques . . . . . . . . .
9.1.3 MIMD (Multiple Instructions Multiple Data) . . . . .
Architectures rformistes . . . . . . . . . . . . . . . . . . . . .
9.2.1 Squence dexcution dune instruction . . . . . . . . .
9.2.2 Le pipe-line . . . . . . . . . . . . . . . . . . . . . . . .
Principe du pipe-line . . . . . . . . . . . . . . . . . . .
Cycle de processeur, frquence dhorloge . . . . . . . .
Processeurs asynchrones . . . . . . . . . . . . . . . . .
Apport de performances par le pipe-line . . . . . . . .
Limite du pipe-line : les branchements . . . . . . . . .
Limite du pipe-line : les interruptions . . . . . . . . . .
9.2.3 RISC, CISC et pipe-line . . . . . . . . . . . . . . . . .
9.2.4 Micro-code : le retour . . . . . . . . . . . . . . . . . .
9.2.5 Super-scalaire . . . . . . . . . . . . . . . . . . . . . . .
9.2.6 Architecture VLIW (Very Long Instruction Word) . .
Paralllisme explicite . . . . . . . . . . . . . . . . . . .
limination de branchements . . . . . . . . . . . . . .
Optimisation des accs mmoire : chargement anticip
De la programmation VLIW . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 212
. 212
. 212
. 213
. 214
. 214
. 215
. 215
. 216
. 216
. 217
. 217
. 218
. 219
. 221
. 222
. 223
. 224
. 225
. 226
. 226
Introduction
La recherche de performances a inspir des tentatives pour contourner la loi
dairain de larchitecture de von Neumann : une seule instruction la fois. Ces tentatives se classent en deux catgories : radicales et pragmatiques. Le prsent chapitre
en fait un bref tour dhorizon. Les architectures qui remettent fortement en cause
le principe de von Neumann nexistent aujourdhui que dans quelques laboratoires
(mme si elles sont sans doute promises un avenir meilleur et si certaines dentre
elles ont un pass respectable), et celles qui sont des extensions pratiques de ce principe ne remettent pas en cause la smantique du modle de calcul, mme si elles
en compliquent considrablement la mise en uvre technique pour le bnce dune
amlioration non moins considrable des performances.
212
Architectures rvolutionnaires
213
214
complexes, inspirs des travaux de C.A.R. Hoare 1 sur les processus squentiels
communicants. Le Transputer a connu un certain succs, notamment dans le
domaine industriel.
Ce rapide tour dhorizon des architectures non von Neumann illustre leur chec
gnral d la dicult de leur programmation. leur apparition elles ont souvent
normment sduit, mais la ncessit de recourir des mthodes et des langages
de programmation peu rpandus et matriss par peu dingnieurs a vite dcourag
industriels et clients. Do le succs, en revanche, de contournements du principe de
von Neumann par des voies moins radicales, qui recherchaient le mme rsultat tout
en conservant la smantique classique et que nous allons examiner maintenant.
Architectures rformistes
215
1. tape de lecture FETCH : lunit de contrle va chercher en mmoire la prochaine instruction excuter. Comment sait-on o aller la chercher ? Lunit
de contrle maintient cette information dans un compteur de programme
(PC) qui chaque instant contient ladresse en mmoire de linstruction suivante. Dans le cas le plus simple (pas de dbranchement) cest ladresse du mot
qui suit linstruction en cours. Dans le cas dun dbranchement : eh bien linstruction de dbranchement consiste prcisment placer dans le PC ladresse
de linstruction laquelle le programme doit se poursuivre (doit sauter :
les dbranchements sont aussi appels sauts ; on distingue les branchements
conditionnels et les sauts simples, inconditionnels).
Le PC peut rsider dans un registre de lunit centrale. Dans notre exemple
simple il serait possible de lui rserver R qui nest pas utilis autre chose.
Dans beaucoup de processeurs le PC est une partie du PSW (Program Status
Word) qui conserve dirents indicateurs fondamentaux du processeur.
2. tape de dcodage DEC : lunit de contrle analyse le code opration (5
premiers bits dans notre exemple de la section 2.4.1) et dtermine ainsi le circuit logique qui correspond linstruction dsire. Simultanment au dcodage,
lunit de contrle eectue la lecture des registres impliqus dans linstruction.
Cette simultanit impose des instructions format xe, o le nombre et lemplacement des bits qui dsignent les registres soient toujours les mmes. Le
contenu des registres est recopi dans des registres de travail temporaires.
3. tape dexcution EXEC : linstruction dtermine ltape de dcodage est
excute ; sil doit y avoir un accs mmoire ladresse eective est calcule ;
sil sagit dun branchement conditionnel le contenu du registre lu ltape
prcdente permet de dterminer si le branchement doit tre pris et si oui
ladresse de branchement est calcule.
4. tape daccs mmoire MEM : cette tape a lieu pour les oprations de
chargement et de rangement en mmoire et pour les branchements. Les chargement ou rangements ont lieu, ou la valeur convenable est place dans le PC.
Ces oprations ont lieu dans le cache, ce qui explique que cette tape ait une
dure comparable aux autres.
5. tape dcriture du rsultat RES dans les registres aects.
9.2.2 Le pipe-line
Principe du pipe-line
Pour lexemple de processeur que nous venons de donner, lexcution dune
instruction se dcompose en cinq tapes plus lmentaires. part lexcution
proprement dite (tape EXEC), ces tapes sont les mmes quelle que soit linstruction
particulire qui doit tre excute. Lide est venue de coner chaque tape
une unit de circuits logiques spcique : unit de lecture, unit de dcodage,
unit dexcution, unit daccs mmoire, unit de livraison du rsultat. Ainsi le
processeur peut commencer traiter une instruction avant que la prcdente soit
termine, en utilisant les units libres par la terminaison des premires tapes.
Soient i1 , i2 , ...i6 six instructions conscutives, elles seront traites ainsi :
216
i1
i2
i3
i4
i5
i6
DEC
FETCH
EXEC
DEC
FETCH
MEM
EXEC
DEC
FETCH
RES
MEM
EXEC
DEC
FETCH
RES
MEM
EXEC
DEC
FETCH
RES
MEM
EXEC
DEC
RES
MEM
EXEC
RES
MEM
RES
Cette structure sappelle un pipe-line, parce quelle voque un tuyau dans lequel
les instructions sengourent les unes derrire les autres sans attendre que la prcdente soit sortie. Nos instructions sont dcoupes en cinq tapes, ce qui fait que
notre pipe-line un moment donn contient cinq instructions en cours dexcution :
on dit que cest un pipe-line cinq tages. Certains processeurs ont des pipe-lines
avec sept ou huit tages, voire plus : le Pentium III a douze tages de pipe-line, le
Pentium IV en a vingt.
Cycle de processeur, frquence dhorloge
Quest-ce quun cycle de processeur ? Toutes les oprations dans un processeur
sont synchronises par une horloge, ce qui permet de savoir quel moment le rsultat
dune microopration va tre disponible. Jappelle microopration une opration
moins complexe quune instruction, par exemple une tape dinstruction telle que
dcrite la section 9.2.1. Il est ncessaire de savoir quel instant prcis telle modication de tel registre sera disponible et stable, pour pouvoir enchaner la micro
opration suivante : cest le rle de lhorloge.
Comment fonctionne lhorloge du processeur ? Elle repose sur un dispositif
quartz, qui rgule un circuit oscillant selon une frquence extrmement prcise.
chaque n de priode le circuit oscillant met un signal. On rappelle que la priode
est linverse de la frquence : si un circuit a une priode de 1/50 de seconde, on dit
que sa frquence est de 50 Herz (Hz). La sortie du circuit logique correspondant
une microopration est couple une entre dun circuit ET dont lautre entre
est couple lhorloge. chaque top dhorloge la porte ET dlivre un rsultat.
Ainsi toutes les oprations sont synchronises. Ce que lon appelle la frquence dun
processeur est la frquence de son horloge.
Processeurs asynchrones
Ce cadencement des oprations simplie grandement la conception des circuits,
mais on peut imaginer quil fait perdre du temps certains endroits : toutes les
micro-oprations ne durent pas le mme temps et certains rsultats obtenus ne sont
pas disponibles parce quon attend le top dhorloge. Aussi existe-t-il un domaine de
recherche prometteur, les processeurs asynchrones. La synchronisation est remplace
par la signalisation : un lment de circuit qui obtient un rsultat prvient le consommateur de ce rsultat par lmission dun signal, ce qui nous place dans une logique
assez semblable celle des protocoles de rseau, o lon ignore toujours ce qui se
passe lautre bout . Parmi les avantages collatraux fournis par lasynchronisme,
signalons une consommation lectrique et des interfrences lectromagntiques rduites.
Comme beaucoup de techniques avances, les processeurs asynchrones sont aujourdhui un domaine assez condentiel, mais qui pourrait connatre une grande
Architectures rformistes
217
expansion au fur et mesure que les progrs des processeurs classiques deviendront
plus laborieux.
Apport de performances par le pipe-line
Le pipe-line est un facteur considrable dacclration des processeurs, et notamment daugmentation de la frquence nominale.
Supposons une architecture classique o le temps total dexcution dune instruction simple telle quun chargement de registre ou une addition registre registre
correspond un ou deux cycles (mme si des instructions complexes peuvent prendre
dix ou vingt cycles).
Prenons maintenant une architecture avec un pipe-line cinq tages, comme dans
notre exemple, et avec des lments microlectroniques aussi rapides que notre
architecture classique hypothtique. Notre instruction va prendre le mme temps
pour sexcuter, mais elle est maintenant cadence par le passage dans les cinq tages
du pipe-line. Chaque tage correspond un cycle. Linstruction qui sexcutait en
deux cycles sexcute maintenant en cinq cycles, toujours dans le mme temps : cest
que chaque cycle est plus court. La frquence a t multiplie par 2,5. Cest ainsi
que le pipe-line est larme secrte qui permet les frquences leves des processeurs
contemporains.
Certes, pour une instruction donne chaque cycle fait moins de choses, mais
ce nest pas une escroquerie : chaque n de cycle il y a bien livraison du rsultat
dune instruction. Enn presque. Parce quil y a quand mme des dicults qui
sopposent parfois au fonctionnement continu du pipe-line.
Limite du pipe-line : les branchements
La premire dicult inhrente au pipe-line est de bon sens : on commence
excuter plusieurs instructions conscutives, mais sil y a un dbranchement au
milieu lordre dexcution sera modi. Notre processeur aura commenc excuter
des instructions dont la suite des vnements montre que ce ntait pas les bonnes.
Quand sait-on si un branchement conditionnel a eectivement lieu ? Lors de
ltape EXEC. Quand est-il excut ? Lors de ltape MEM.
Si par exemple i3 est un branchement conditionnel et que le chemin choisi soit
eectivement le dbranchement, cette condition est connue lors de ltape EXEC de
i3 . ce stade, i4 est dj passe par les tapes FETCH et DEC, i5 par ltape FETCH.
Rien dirrmdiable na t accompli, ni accs mmoire ni criture de rsultat, mais
on a perdu du temps, en excutant des tapes pour des instructions inutiles et il
faut vider la suite du pipe-line pour le recharger avec dautres instructions.
Il est assez clair que si les dbranchements sont frquents le gain de performances
procur par le pipe-line va fortement diminuer. Plus le pipe-line a dtages plus la
pnalit sera forte, et dans certains cas il sera ncessaire de restituer certains
registres leur valeur antrieure, modie par une excution trop hardiment anticipatrice. Le processeur devra comporter des circuits logiques destins traiter ces
situations de retour en arrire. On le voit, tout gain de performance a un cot qui
en attnue lavantage.
Les architectes de processeurs dploient des techniques trs subtiles pour viter
loccurrence trop frquente de ces situations de dbranchement (de saut) o le pipe-
218
Architectures rformistes
219
prcises qui laissent le processeur dans un tat bien dni (PC sauvegard en un
endroit connu, instructions antrieures celle pointe par le PC totalement excutes, instructions ultrieures non entames, tat de linstruction courante connu), et
les interruptions imprcises qui laissent tout en chantier, charge au programmeur
de systme de reconstituer une situation de redmarrage cohrente partir des informations dtat que le processeur aura obligeamment dverses sur la pile. Il y
a des cas o une interruption imprcise fait trs bien laaire, par exemple si elle
correspond une erreur fatale ltat ultrieur du programme importe peu.
Pour prendre un exemple, larchitecture ARC 700 lance en 2004 comporte un
modle dinterruptions prcises qui permet, au choix, de forcer la terminaison de
toutes les instructions qui prcdent celle qui a provoqu lexception ; dannuler linstruction fautive avant de valider son rsultat ; davertir la routine de traitement des
exceptions de la cause de lexception ; et de relancer le pipe-line aprs le traitement
de lexception dans ltat o il se trouvait auparavant.
Les interruptions prcises augmentent considrablement la complexit des circuits matriels dvolus au contrle des interruptions, et de ce fait les architectes
essayent de les viter. Les interruptions imprcises sont de plus en plus populaires
parmi les architectes de processeurs, et comme dhabitude la complexit est renvoye aux concepteurs de systmes dexploitation, ce qui est aprs tout de bonne
politique : il est plus facile de modier un paragraphe de programme quun morceau
de silicium (dj install dans le salon du client de surcrot).
Lorsque nous aborderons le modle dexcution super-scalaire quelques pages
plus bas, nous verrons que les dicults causes par un contexte mal dtermin lors
dune interruption sont encore plus graves.
220
Architectures rformistes
221
Les traits les plus frappants initialement dans les architectures RISC taient le
petit nombre dinstructions, avec labsence dinstructions mmoiremmoire : il ny
avait que des chargements de mmoire dans un registre, des copies de registre vers
la mmoire et des oprations dans les registres.
Dautres traits se rvlrent bientt aussi importants : longueur et format dinstruction xes, usage intensif du pipe-line. Pour tirer parti correctement dune architecture aussi asctique une grande part de la complexit tait reporte sur les
compilateurs, qui devaient produire un code capable dutiliser ecacement les registres et le pipe-line.
La nouvelle architecture se rvla bientt extrmement rapide, et doublement rapide : en eet, pour tirer parti dun progrs de la micro-lectronique, il ne sut pas
de concevoir un processeur rapide, il faut aussi que le dlai ncessaire sa conception ne soit pas trop long. La simplicit du RISC tait aussi un atout de ce ct.
Actuellement il faut peu prs trois ans une quipe de 100 200 ingnieurs pour
concevoir un nouveau processeur. Une usine entirement quipe pour le construire
cotera de lordre de quatre milliards de dollars. La conception dune architecture
novatrice demande une douzaine dannes.
La technologie CISC parut condamne, ce qui fut eectivement le cas pour les
gammes VAX et Motorola 68000. Tout le monde attendait la chute de larchitecture
x86 dIntel, sur laquelle reposent les dizaines de millions de PC vendus chaque anne. Ctait compter sans les eorts quIntel pouvait mobiliser grce la rente du
PC. Les Pentium actuels sont en fait des processeurs constitus dun noyau RISC
autour duquel des circuits supplmentaires et du micro-code (notion introduite cidessous la section 9.2.4) simulent lancienne architecture CISC an de prserver
la compatibilit avec les systmes et les programmes existants.
Quant la gamme des grands systmes IBM, limmense stock de programmes
existants dont la conversion exigerait des dpenses phnomnales semble la vouer
une immortalit dont lrosion ne se fait quau gr du changement lent des applications.
Mme si lvolution actuelle suggre un demi-chec de larchitecture RISC dont
la remplaante VLIW (Very Long Instruction Word) entre en scne avec larchitecture IA-64 conue conjointement par Intel et Hewlett-Packard, tous les processeurs
modernes ont intgr sa leon. Le mouvement RISC a profondment rvolutionn
la conception des processeurs et aussi, de faon moins spectaculaire mais aussi profonde, celle des techniques de compilation. En fait, hommage du vice la vertu,
tous les processeurs modernes comportent un cur RISC entour de circuits qui
procurent un dcor dirent, Pentium par exemple. Mme les grands systmes IBM
sont maintenant anims par des microprocesseurs qui implmentent leur jeu dinstructions traditionnel en RISC.
222
stocke dans une mmoire spciale, prsentait au systme dexploitation une machine virtuelle 16 registres, implante sur la machine relle deux registres. Une
disquette permettait de charger en mmoire une nouvelle version du micro-code. Le
BIOS des PCs Intel joue un peu le mme rle, il sert notamment prsenter les priphriques au systme sous un aspect dirent de leur ralit physique, ce qui permet
par exemple de voir tous les disques de la mme faon, avec un adressage linaire
des blocs de donnes, quelle que soit leur structure relle. Le micro-code tait un
facteur de complexit et de lenteur, ce pourquoi la rvolution RISC en a fait table
rase. Mais ne survit-il pas en fait lintrieur du processeur ? Si bien sr : les processeurs modernes sont si complexes et embarquent tellement de mmoire sur le chip
(la puce proprement dite) que leur ralisation est elle-mme micro-programme. Le
processeur Intel Pentium, de la famille CISC, est construit autour dun cur RISC
entour de micro-code qui simule larchitecture ocielle. Le micro-code est aussi
prsent dans les contrleurs de disques et autres priphriques. lheure o il a
ociellement disparu, il na jamais autant exist.
9.2.5 Super-scalaire
La dcomposition des instructions en tapes plus lmentaires que nous avons
examine la section 9.2.1 permet le pipe-line, mais aussi une autre forme de simultanit que lon appelle super-scalaire , et qui consiste avoir plusieurs units
dexcution actives simultanment, selon le modle de la gure 9.1. Ce modle dexcution se combine avec le pipe-line dans les architectures modernes.
Exec
Fetch
Decode
Buffer
Exec
Exec
Exec
Architectures rformistes
No
dordre
1
2
3
4
Buer
R2 + R3 R4
R5 - R6 R7
LOAD R8, COUNT
R8 * R2 R3
conit de donnes
potentiel vit ici
223
Unit
dexcution 1
Unit
dexcution 2
R2 + R3 R4
LOAD R8, COUNT
R8 * R2 R3
R5 - R6 R7
224
Pour faire fonctionner pipe-line et multiples units dexcution sans arrts brutaux, il surait que le programme (ou plutt le compilateur qui traduit le programme
en langage machine) dise au processeur quelles sont les instructions susceptibles
dtre excutes simultanment sans risque de conit de branchement ou de donnes,
et que le processeur soit quip dun format dinstruction capable de recevoir ces
informations.
Les ingnieurs de Hewlett-Packard et dIntel ont runi leurs eorts pour concevoir une telle architecture, connue sous le nom propre IA-64, qui est une architecture
VLIW (Very Long Instruction Word). La conception de IA-64 a pris une douzaine
dannes avant de dboucher en 2001 sur la livraison dun premier processeur, Itanium.
Paralllisme explicite
La mthode mise en uvre par IA-64 sappelle EPIC (Explicitly Parallel
Instruction Computing). Le processeur reoit du compilateur une liasse (bundle)
de 128 bits. Chaque liasse comporte trois instructions de 41 bits et un masque
(template) de 5 bits. Chaque instruction comporte trois numros de registre de sept
bits chacun (ce qui autorise 27 = 128 registres), six bits de registre de prdicat
(predicate register) et un code opration de 13 bits.
Instruction
(41 bits)
Instruction
(41 bits)
Masque (5 bits)
(template)
Instruction IA-64
code
opration
no registre prdicat
(predicate register)
no registre 1
no registre 2
no registre 3
Les cinq bits de masque indiquent quelles sont les instructions qui peuvent sexcuter en parallle, ainsi que lventualit du chanage de cette liasse avec une autre
liasse qui en contiendrait la suite. Les compilateurs peuvent placer dans ce masque
des valeurs qui indiquent au processeur les instructions lancer en parallle 3 .
Coner au compilateur tout ce travail auparavant ralis par le processeur prsente plusieurs avantages. Le processeur ne possde aucune information a priori sur
le programme quil excute, il ne peut que les dduire du texte binaire au fur et
mesure quil en dcode les instructions, tandis que lauteur du compilateur peut se
conformer une stratgie systmatique dorganisation des instructions.
De plus, le compilateur peut passer beaucoup de temps optimiser le code, en
principe le programme nest compil que par son auteur, ou par celui qui linstalle
sur un ordinateur, alors quil sera excut par de nombreux utilisateurs. Il est ecace
de consacrer du temps la compilation pour en gagner lexcution.
3. Pour ce faire, le processeur Itanium, premier de larchitecture IA-64, possde deux units
dexcution dinstructions arithmtiques entires, deux units dexcution dinstructions arithmtiques virgule ottante, trois units de chargement dchargement de registre, un pipe-line dix
tages.
Architectures rformistes
225
limination de branchements
Imaginons le fragment de programme suivant en pseudolangage volu :
Si I gale 0
Alors
instruction 1
Sinon
instruction 2
que le compilateur traduirait en pseudoassembleur pour un processeur RISC classique (nonEPIC) :
COMPARE I 0
SAUTE
l'tiquette SINON si non-gal
ALORS: instruction 1
SAUTE
l'tiquette SUITE
SINON: instruction 2
SUITE:
Voici comment procdera un processeur EPIC :
COMPARE I 0
commence dcoder instruction 1,
le prdicat positionn pour pointer sur le registre de
prdiction P1
commence dcoder instruction 2,
le prdicat positionn pour pointer sur le registre de
prdiction P2
si I gale 0, positionner le registre P1 vrai (1),
positionner le registre P2 faux (0)
calculer et dlivrer les rsultats de toutes les
instructions dont le prdicat pointe sur le
registre dont la valeur est vrai (1), en
l'occurrence P1.
Le processeur nexcute aucun saut (dbranchement), il commence excuter
simultanment les branches ALORS et SINON comme sil sagissait dinstructions en
squence.
IA-64 prvoit 64 registres de prdicat susceptibles de recevoir les valeurs vrai
ou faux (0 ou 1). Le champ registre de prdicat de chaque instruction pointe sur
un registre de prdicat. Quand le processeur a ni de comparer I 0, seuls les
rsultats des instructions qui pointent sur un registre de prdicat qui vaut vrai (1)
sont dlivrs.
Considrons ce qui se passe : dabord, il ny a aucun risque commencer lexcution simultane des branches ALORS et SINON de ce programme, il ny a par construction aucune dpendance entre elles puisquelles sont exclusives lune de lautre. Ensuite nous pouvons observer que notre pseudocode EPIC ne comporte plus de branchement : ce nest pas un tour de passe-passe, cette suppression de la plupart des
branchements est un fondement du modle EPIC.
226
Mais, pourra objecter le lecteur vigilant, en quoi cette suppression des branchements peut-elle tre bnque pour les performances ? Aprs tout le processeur
EPIC, en commenant excuter les deux branches du programme, eectue deux
fois plus de travail quun processeur classique qui essaie de prvoir quelle branche va
tre excute rellement (et il faut savoir que les processeurs modernes sont capables
de faire une prdiction juste dans 90% des cas), et la moiti de ce travail est inutile,
puisque nalement seule une des branches sera retenue.
Premier temps de la rponse lobjection : dabord excuter les deux branches en
parallle ne fait pas perdre de temps, puisquelles sont indpendantes lune de lautre
et que notre processeur dispose de tous les bons dispositifs super-scalaires, notamment des units dexcution multiples, pour que le paralllisme soit eectif. Ensuite,
pour les 10% de cas dans lesquels le processeur classique prdit la mauvaise branche
le gain est considrable, puisqualors le processeur classique doit tout reprendre au
dpart. Enn puisque le texte du programme ne contient plus de branchements il
nest plus divis en petits blocs ALORS/SINON, ce qui autorise les instructions des
branches tre places dans des liasses ou des chanes de liasses, associes aux instructions prcdentes ou suivantes. Associes signie ici ligibles pour le paralllisme
explicite.
Optimisation des accs mmoire : chargement anticip
Dans le modle VLIW, comme dans le modle RISC, les oprandes dune instruction doivent tre chargs dans des registres avant dtre traits. Lexcution ecace
de linstruction LOAD est donc un lment crucial de larchitecture. Pour en comprendre les ressorts nous invitons le lecteur se remettre tout dabord en mmoire
ce qui a t crit sur la technique du cache la section 4.6.1.
Les dveloppements sur le cache ont montr lextrme importance de sa bonne
gestion. Si par malheur au moment o le processeur essayait dexcuter une instruction LOAD la zone mmoire recherche ntait pas dans le cache il en rsulterait
une pnalit de lordre de 20 cycles au moins, autant dire que le fruit de tous nos
eorts de paralllisme et de pipe-lining serait ananti, et au-del. Il est donc crucial dviter de telles situations. Pour ce faire, ds les annes 1995, les processeurs
les plus rapides (EPIC comme lItanium, mais aussi RISC comme lAlpha ou CISC
comme lAMD Athlon) avaient recours au chargement anticip dans le cache L1 des
zones mmoires ncessaires aux instructions appeles sexcuter dans les quelques
dizaines de cycles qui suivaient. Ctait le chargement spculatif, dont lusage sest
depuis gnralis.
De la programmation VLIW
Arriv ici, le lecteur sera en droit de penser que les notions quil pouvait avoir
de la programmation des ordinateurs viennent de recevoir un sacr surcrot de complexit, et il naura pas tort. Il pourra alors se dire que cette activit qui lui semblait
banale prend enn des couleurs attrayantes, ou au contraire que cest trop erayant
et quil renonce son projet de sy engager.
En fait, ce qui se complique, cest la programmation en langage machine ou en
assembleur. Aujourdhui pratiquement personne ne programme plus en langage machine, et quand on le fait ce sont des programmes trs brefs, comme une squence
Architectures rformistes
227
Sommaire
10.1 Notion de machine virtuelle . . . . . . . . . . . . . . . .
10.1.1 mulation et machines virtuelles . . . . . . . .
10.1.2 De CP/67 VM/CMS . . . . . . . . . . . . . .
10.1.3 Java . . . . . . . . . . . . . . . . . . . . . . . .
10.2 Machines virtuelles systme . . . . . . . . . . . . . . . .
10.2.1 Que veut-on virtualiser ? . . . . . . . . . . . . .
10.2.2 Pratique des machines virtuelles . . . . . . . .
10.2.3 Dirents niveaux de virtualisation . . . . . . .
10.2.4 Administration dun systme informatique . . .
10.2.5 Administration dun systme virtuel teint . . .
10.2.6 Dplacer une machine virtuelle dans le rseau .
Sur un rseau local Ethernet . . . . . . . . . . .
Dans un rseau IP avec du routage . . . . . . .
Combiner la couche 2 et la couche 3 ? . . . . . .
10.3 Informatique en nuage (Cloud Computing) . . . . . . .
10.3.1 Une vritable innovation technique . . . . . . .
10.3.2 Trois formes pour linformatique en nuage . . .
10.3.3 Rpartir les services en nuage grce au DNS . .
10.4 Les (threads) . . . . . . . . . . . . . . . . . . . . . . . .
10.4.1 Sparer le l dexcution des ressources alloues
10.4.2 Dnition des threads . . . . . . . . . . . . . . .
10.4.3 Avantages procurs par les threads . . . . . . .
10.4.4 Implmentation des threads . . . . . . . . . . .
Threads en mode utilisateur . . . . . . . . . . .
Threads en mode noyau . . . . . . . . . . . . .
10.4.5 Inconvnients des threads . . . . . . . . . . . .
10.5 Micro-noyaux . . . . . . . . . . . . . . . . . . . . . . .
10.5.1 Chorus . . . . . . . . . . . . . . . . . . . . . . .
10.5.2 Mach . . . . . . . . . . . . . . . . . . . . . . . .
10.5.3 Eumel, L3, L4 . . . . . . . . . . . . . . . . . . .
10.5.4 Conclusion sur les micro-noyaux . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 229
. 230
. 231
. 231
. 232
. 233
. 233
. 234
. 236
. 236
. 237
. 237
. 237
. 238
. 238
. 238
. 239
. 239
. 240
. 240
. 240
. 241
. 242
. 242
. 242
. 243
. 243
. 244
. 246
. 247
. 248
230
231
10.1.3 Java
La notion de machine virtuelle allait connatre un nouvel avatar avec le lancement
par Sun Microsystems du langage Java en 1995, dont le concepteur principal tait
James Gosling. Rarement langage aura suscit un tel engouement, justi non pas
par sa syntaxe, assez banalement hrite de C dbarass de ses traits de bas niveau
tels que les pointeurs et augmente dune couche simple de gestion des objets (ce
quaurait d tre C++), ni par ses performances en termes de vitesse de calcul, assez
faibles pour les premires versions (cela sest bien amlior, avec laide des progrs des
microprocesseurs), mais justement par sa machine virtuelle. Signalons deux autres
traits novateurs de Java : il comporte un systme de gestion des threads 2 dans le
langage ; les threads font lobjet de la section suivante, mais disons quil sagit dun
moyen de faire de la multi-programmation lintrieur dun processus utilisateur.
Les threads de Java sont une ralisation des moniteurs de Hoare [32] (cf. p. 241). Le
jeu de caractres standard de Java est Unicode, ce qui autorise des identiants en
toutes sortes dcritures, par exemple lcriture corenne Hangul.
Lexcution dun programme Java obit un enchanement doprations inhabituel. Le texte du programme source est dabord soumis un compilateur, qui produit
2. Dsol, mais aucune des traductions proposes pour thread ne me semble satisfaisante : activit, l dexcution, processus lger...
232
233
234
Comme les machines virtuelles ont des systme dexploitation dirents, deux
logiciels qui fonctionnent sur deux machines virtuelles direntes sont mieux
isols lun de lautre que sils coexistaient sous le contrle du mme systme,
ce qui a des avantages en termes de scurit.
Une machine virtuelle est constitue de logiciel, et aussi des donnes ncessaires son fonctionnement, telles que paramtres du systme et donnes
des utilisateurs, enregistres sur support persistant. Lensemble constitu du
texte du logiciel de la machine virtuelle et des donnes persistantes associes
constitue limage physique de la machine virtuelle, recopiable, transfrable
par le rseau.
Une machine virtuelle, cest du logiciel et des donnes, donc il est possible
de la recopier comme un document ordinaire ; ainsi, avec la virtualisation,
ladministration des systmes devient plus facile : dplacer un serveur, cest
dplacer un chier, le sauvegarder, cest copier un chier sur une cl USB,
doubler un serveur, cest recopier un chier, cela prend quelques secondes et
quelques clics de souris, sans se dplacer en salle machine (on dit maintenant
centre de donnes) ; cest sur ce principe que repose linformatique dans les
nuages (cloud computing), qui consiste crer la demande de nouvelles
machines virtuelles et les dplacer par le rseau sur les machines physiques
les moins charges, par exemple en Nouvelle-Zlande pour proter du dcalage
horaire.
Bien sr, pour tout ce qui est enseignement, travaux pratiques, expriences,
cest trs commode.
Systme
de
supervision
des
conteneurs
Programmes
Programmes
d'un
... d'un autre
utilisateur
utilisateur
Conteneur
Conteneur
OS d'accueil
Matriel
Figure 10.1 : Systme de cloisonnement (virtualisation simplie).
235
Sil faut vraiment des machines virtuelles distinctes, mais toutes sur le mme
modle de processeur (mme architecture matrielle), il faudra interposer
entre le matriel et les direntes copies du systme dexploitation un logiciel
de simulation, mais les oprations lmentaires seront nanmoins eectues
par le matriel sous-jacent, ce qui vitera la grande diminution des performances qui serait entrane par la simulation en logiciel des dites oprations.
VMware, Xen, KVM, Citrix, Microsoft Hyper-V Server sont de tels systmes,
nomms hyperviseurs. Les hyperviseurs sont en fait des systmes dexploitation allgs de beaucoup des fonctions qui seront dvolues aux OS hbergs.
Les processeurs modernes sont quips de dispositifs matriels qui facilitent
leur excution (Intel VT et AMD Pacica).
Programme
de contrle
Systme
d'exploitation
(OS)
privilgi
Programmes
Programmes
d'un
... d'un autre
utilisateur
utilisateur
OS invit
OS invit
Hyperviseur
Matriel
Figure 10.2 : Systme hyperviseur (virtualisation sur architecture identique).
Systme de
supervision
des systmes
invits et de
l'mulateur
Machine virtuelle
Programmes
Programmes
d'application ... d'application
OS invit
OS invit
mulateur
OS d'accueil
Matriel
Figure 10.3 : Systme de virtualisation complte.
236
Comme une machine physique, une machine virtuelle peut tre dmarre et
arrte ; dans ce cas il sagira en ralit du lancement dun programme et de son
arrt.
237
238
239
240
Les (threads)
241
des processus lgers qui nauraient pas besoin de recevoir toutes ces ressources
neuves leur lancement et qui se contenteraient de celles dj possdes par leur
processus pre, quils partageraient avec leurs frres 10 . Bref, cette dmarche conduit
la naissance dune entit spciale, un sous-processus en quelque sorte, le thread :
Le thread appartient un processus.
Un processus peut avoir plusieurs threads.
Les threads dun mme processus sont en concurrence pour laccs au temps
de processeur, elles sexcutent en pseudo-simultanit comme nous lavons
vu pour les processus concomitants.
Une thread sexcute dans lespace adresse du processus auquel elle appartient : si une thread modie un octet de la mmoire, toutes les threads de
ce processus voient la modication immdiatement, comme si elles lavaient
eectue elles-mmes. Une thread peut notamment modier la pile dune de
ses surs !
Toutes les threads dun processus partagent donc le mme espace adresse, et
elles voient les mmes chiers ouverts : si une thread lit des donnes dans
un chier squentiel, ce qui fait progresser le curseur du chier (voir section
5.2.2) jusqu la position qui suit les donnes juste lues, une autre thread qui
lira le mme chier obtiendra les donnes suivantes, sauf si entre temps le
chier a t ferm et rouvert.
242
thread pourra prendre le contrle sans que le programme ait prvoir quoi que ce
soit de particulier, et la pseudo-simultanit sera assure naturellement 11 .
Le principal avantage reste la performance : crer et dmarrer une thread demande jusqu cent fois moins de temps que la cration dun processus.
processus
pile
Espace du noyau
table des processus
table
des
activits
(threads)
Micro-noyaux
243
10.5 Micro-noyaux
Dans les systmes tels que ceux que nous avons voqus jusqu prsent, le noyau
dsigne la partie du systme dexploitation dont la prsence en mmoire relle est
indispensable et qui est commune tous les autres logiciels. Dans un systme tel
quUnix, cet ensemble est monolithique (mme si des Unix modernes tels que Linux
ont introduit des modules chargeables dynamiquement en cours de fonctionnement)
et il est devenu assez encombrant parce quy ont t incorpores par commodit des
fonctions assez varies.
244
Lide de micro-noyau est ne dans les annes 1980 ; il sagit de rduire au minimum le contenu du noyau, et de placer en dehors, cest--dire dans lespace utilisateur, tout ce qui peut ltre. Les avantages de cette dmarche semblent vidents :
linterface du micro-noyau sera plus simple que celle dun macro-noyau, et permettra
de ce fait la construction dun systme plus modulaire ; il est possible dimplanter
au-dessus du micro-noyau des serveurs qui utilisent ses services pour exhiber le comportement, les caractristiques et la smantique de systmes divers, comme Unix,
Windows, MacOS etc., ce qui rejoint la notion de machine virtuelle et en facilite la
ralisation ; en cas de panne dun des serveurs, le systme continue fonctionner, ce
qui facilite grandement tous les travaux de dveloppement et de mise au point de
systme tout en augmentant la tolrance aux pannes et la capacit de redmarrage
chaud.
Lide tait aussi que tout cela fonctionne en rseau : chaque machine physique
serait anime par un micro-noyau, et les serveurs en mode utilisateur seraient rpartis au gr des opportunits, ce qui ouvre la voie la construction darchitectures
distribues souples et modiables dynamiquement.
Un peu comme lhyperviseur de VM/CMS, un micro-noyau typique fournit des
services minimum daccs au matriel : cration de threads, gestion minimale des interruptions, commutation de contexte, verrouillage lmentaire de sections critiques,
accs brut la mmoire et aux entres-sorties, protection rciproque des activits.
Les fonctions plus ranes (ordonnancement de processus, gestion de mmoire virtuelle, systme de chiers, protocole de rseau...) sont dlgues des serveurs en
espace utilisateur.
Les communications entre le micro-noyau et les serveurs sont ralises classiquement par passage de message, une technique qui a lavantage de pouvoir fonctionner
aussi bien par le rseau que localement. Le message contient les informations ncessaires au traitement dun vnement tel quune interruption, et il est dpos dans
une zone de mmoire connue comme bote lettres, o le serveur concern peut le
rcuprer. Ce mcanisme a lavantage de fournir un bon moyen dabstraction et de
sparation des fonctions, il a aussi deux inconvnients : jusqu des dveloppements
rcents ses performances taient mdiocres, et ds lors que le systme est rparti sur
plusieurs sites en rseau il est dicile de restituer ainsi la smantique dun noyau
Unix.
Les premiers micro-noyaux clbres furent Mach, dvelopp lUniversit
Carnegie-Mellon Pittsburgh, Chorus, cr en France en 1979 par une quipe de
lINRIA avec notamment Hubert Zimmerman et Michel Gien, Amoeba cr lUniversit Libre dAmsterdam par Andrew Tanenbaum.
10.5.1 Chorus
Chorus est n en 1979 comme projet de recherche lINRIA prs de Paris.
La socit Chorus Systmes a t cre en 1986 pour commercialiser une nouvelle
version de ce noyau (version 3), et elle a t rachete par Sun Microsystems en
septembre 1997. Entre temps le systme Chorus a connu un succs assez modr
dans le monde informatique proprement dit, mais beaucoup plus signicatif dans
celui des constructeurs de matriel tlphonique, dont les autocommutateurs sont
en fait de vastes systmes informatiques distribus qui semblent faits pour les micronoyaux.
Micro-noyaux
245
Le noyau Chorus dcompose la notion de processus selon les deux axes que nous
avions dj mis en vidence la section 10.4 :
un axe l dexcution , auquel correspondent des entits appeles threads ;
un axe ressources alloues , notamment lespace adresse, auquel correspondent des entits appeles acteurs ; un acteur peut avoir une ou plusieurs
activits qui partagent ses ressources, conformment au modle de la section
10.4.
Chorus prsente ses abstractions avec une terminologie qui tmoigne, au moins
dans les articles rdigs en franais tels que UNIX et la rpartition : retour la
simplicit originelle ? [5] dont les lignes qui suivent sont largement inspires, dun
rel souci dnonciation des concepts dans un langage prcis et expressif :
Message
Activit
Acteur
Porte
Acteur
Site
Activits
Site
Acteur
246
processus
processus
processus
Interface UNIX
processus
processus
processus
processus
Interface UNIX
Interface UNIX
File
Manager
Process
Manager
Process
Manager
Process
Manager
Device
Manager
Device
Manager
Interface noyau
Noyau
Interface noyau
Noyau
Interface noyau
Noyau
renonce la rpartition, et pour des processus en mode superviseur. La ralisation ecace de communications inter-processus par passage de messages ne viendra
quaprs le rachat de Chorus par Sun, et ce sera une autre quipe qui sen acquittera.
10.5.2 Mach
Mach est n en 1983 comme un projet de recherche de lUniversit Carnegie Mellon dont les ides majeures sont exprimes dans une communication la confrence
USENIX de 1986, Mach : A New Kernel Foundation for UNIX Development [2].
Ce projet a suscit de grands espoirs, au point que la DARPA a cette poque
rorient vers lui une part importante des nancements qui allaient auparavant au
Computer Systems Research Group (CSRG) de lUniversit de Californie Berkeley.
Les objectifs de Mach sont les suivants :
dvelopper le paralllisme tant pour le systme que pour les applications ;
permettre lusage despaces adresse vastes et ventuellement rpartis sur le
rseau, avec des dispositifs souples de mmoire partage ;
assurer un aspect transparent au rseau ;
assurer la compatibilit avec les systmes existants (Unix BSD notamment)
et la portabilit.
Le noyau Mach ignore la notion classique de processus, quil dsarticule selon les
deux axes que nous avions dj mis en vidence la section 10.4 :
un axe l dexcution , auquel correspondent des entits appeles sans
surprise threads ;
un axe ressources alloues , notamment lespace adresse, auquel correspondent des entits appeles tches (tasks) ; une tche contient une ou plusieurs activits qui partagent ses ressources, conformment au modle de la
section 10.4.
Micro-noyaux
247
Les abstractions de base du noyau Mach sont les suivantes (gure 10.7 :
la tche, unit dallocation de ressources ;
le thread, unit dutilisation de processeur ;
le ux (port), canal de communication unidirectionnel ;
le message, collection de donnes susceptible dtre envoye ou reue dans un
ux ;
lobjet de mmoire, unit interne de gestion de la mmoire.
Message
Activit
(thread)
Tche
(task)
Flux (port)
Tche
Activits
Site
Tche
248
sateur pour toutes les fonctions dont lappartenance au noyau nest pas conceptuellement indispensable, la possibilit dimplanter des stratgies varies de gestion du
systme en mode utilisateur.
Le premier problme de performance examin concerne le cot de la commutation
mode noyau mode utilisateur, qui avec un noyau Mach 3 sur un antique processeur
Intel 486 50 MHz consomme 900 cycles de processeur. Avec le noyau L3 Liedtke
abaisse ce cot 180 cycles dans le cas le plus dfavorable (3 adresses non rsolues
par le TLB, 10 fautes de cache). L3 implmente les threads en mode noyau et les
processus persistants, ceci pour dire que cest un noyau complet et non pas une simple
maquette dont la rapidit aurait pour contrepartie des fonctions rudimentaires.
Liedtke examine ensuite la question de la commutation des espaces adresses.
Comme nous lavions not la section 4.4.5, cette opration est beaucoup plus rapide
sur les processeurs qui utilisent un TLB tiquet (tagged TLB) comme le MIPS
R4000 ou lAlpha, que sur les processeurs comme le Pentium ou le Motorola PowerPC
qui doivent rinitialiser le TLB chaque commutation despace adresse. Pour les
processeurs de cette dernire catgorie, Liedtke propose dutiliser les registres de
segment, inutiliss par la plupart des systmes dexploitation contemporains, pour
simuler un TLB tiquet et viter ainsi la rinitialisation du TLB. Le cot de la
commutation despace adresse descend ainsi moins de 50 cycles, ce qui autorise
100 000 commutations par seconde sans baisse de performance insupportable.
Le passage de messages, et de faon gnrale les communications interprocessus,
souvent incrimines, peuvent tre acclres par la raectation de cadres de pages
dun espace-adresse un autre, ce qui vite la recopie physique de zones mmoire, un
grande source de gaspillage de cycles et de saturation du cache. Incidemment cette
technique est aussi de nature amliorer les performances de laccs au rseau. Ces
oprations doivent bien sr tre eectues sous le contrle exclusif du noyau, ne
serait-ce que pour des raisons de scurit.
Une des conclusions tires par Liedtke de ses expriences, cest quun micronoyau, pour tre ecace, ne doit pas tre conu pour tre indpendant du matriel,
mais doit au contraire exploiter au mieux les caractristiques du processeur auquel
il est destin. Ainsi, le passage en mode noyau cote un minimum de 156 cycles sur
Intel 486, contre 20 cycles sur MIPS R2000, qui prote de son TLB tiquet et dune
zone mmoire rserve au noyau non aecte lespace adresse de lutilisateur : il est
clair que la conception dun noyau pour ces deux processeurs aura tenir compte
de cette dirence. Pour le 486, Liedtke a t amen organiser lespace adresse
de manire rduire le nombre daccs au TLB par tous les moyens, par exemple
concentrer les donnes les plus cruciales du noyau en une page.
Micro-noyaux
249
donnent penser que cette technologie rapparatra, sans doute combine avec celle
du code mobile la Java.
Chapitre 11 Micro-informatique
Sommaire
11.1 Naissance et essor dune industrie . . . . .
11.2 Quel systme pour les micro-ordinateurs ? .
11.2.1 lgie pour CP/M . . . . . . . . .
11.2.2 De MS-DOS Windows . . . . . .
Les annes IBM et MS-DOS . . . .
Le schisme entre OS/2 et Windows
Windows NT et 95 . . . . . . . . .
Windows 2000 . . . . . . . . . . .
11.2.3 Une alternative : MacOS . . . . . .
11.2.4 Autre alternative : Unix . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 251
. 254
. 255
. 257
. 257
. 258
. 258
. 260
. 261
. 263
252
Micro-informatique
et utilis par toutes les catgories sociales ( lexclusion, comme la soulign Michel
Volle dans son livre E-conomie [78], des lites intellectuelles, conomiques et politiques franaises, qui manifestent leur supriorit en proclamant ne jamais avoir
touch un clavier ou une souris).
La rvolution manifeste un signe avant-coureur ds novembre 1960, avec la
livraison du premier PDP-1 de Digital Equipment, un ordinateur individuel trs bon
march pour lpoque : 120 000 dollars ! La rme Digital Equipment avait t fonde
peu de temps auparavant par lingnieur Ken Olsen et allait contribuer de faon notable lvolution de lindustrie informatique en lanant lide de mini-ordinateur,
une machine plus simple et moins chre que les grands systmes de lpoque, bien
que ralise en logique discrte (le microprocesseur nexiste pas encore). Les gammes
PDP successives allaient permettre bien des innovations, notamment le dveloppement du contrle informatique de processus industriels et la cration du systme
Unix. DEC sera pendant les annes 1980 le second constructeur informatique mondial derrire IBM et emploiera alors 110 000 personnes dans le monde entier. Ken
Olsen ignorera deux phnomnes importants : la naissance du micro-ordinateur et
le succs dUnix, alors que sa socit avait t associe leur gense. DEC priclitera dans les annes 1990, sera rachet par Compaq, lui-mme rachet en 2001 par
Hewlett-Packard, et sa dernire gamme de processeurs, Alpha, sera cde Intel et
abandonne malgr des qualits techniques minentes.
En novembre 1971 se produit lvnement qui va permettre la naissance de la
micro-informatique : Intel produit le premier microprocesseur, le 4004. En eet,
lunit centrale du PDP-1 (sans parler de celle dun gros ordinateur de lpoque)
comporte de nombreux lments lectroniques et lectriques relis entre eux par des
ls, un assemblage fait la main par des techniciens hautement qualis, et de ce
fait trs cher. Le microprocesseur rassemble en un seul lment (une puce, chip en
anglais) ces nombreux circuits indpendants, et il est entirement fabriqu par des
machines automatiques, ce qui permet des prix de vente compris entre quelques
Euros et quelques centaines dEuros.
Ds 1972 les Franais Andr Truong Trong Thi et Franois Gernelle conoivent
le micro-ordinateur Micral autour du microprocesseur Intel 8008 1 . En janvier
1975, MITS (Model Instrumentation Telemetry Systems, fonde Albuquerque, au
Nouveau-Mexique, par Ed Roberts) lance lAltair 8800, un micro-ordinateur bas
sur lIntel 8080 et vendu en kit par correspondance pour 400 dollars.
Pour simplier larchitecture, lAltair possde un circuit unique nomm bus
pour faire circuler les donnes entre le processeur, la mmoire centrale et les organes
priphriques. Cette ide vient des PDP. Le connecteur du bus de lAltair a 100
broches et se rpand dans lindustrie sous le nom de bus S-100.
LAltair dispose dun traducteur du langage BASIC crit par Bill Gates et Paul
Allen, dont la socit de fait Micro-soft apparat 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. Lanne suivante
sort lApple II, bas sur le processeur Rockwell 6502 (initialement cr par MOS
Technology) et qui comporte lautre innovation technique importante de la micro1. Sur toute cette aventure de la naissance du micro-ordinateur, et plus particulirement sur
lpisode franais, on consultera avec prot le livre dHenri Lilen [44].
253
254
Micro-informatique
255
et ils avaient frquemment des ides trs ingnieuses pour traiter les interruptions
et faire circuler les donnes, ce qui eut pour consquence que ces petits ordinateurs
furent rapidement plus agiles que les gros en matire de rseau et de tlcommunications.
256
Micro-informatique
tre ralise aussi simplement que possible. Cette organisation permit CP/M dtre
adapt avec succs pour les microprocesseurs les plus rpandus de cette poque,
mots de 8 bits ou de 16 bits, tels que le Zilog Z80, lIntel 8086 ou le Motorola 68000.
Larchitecture de CP/M comporte trois sous-systmes : CCP (Console Command Processor) qui rgit les interactions avec lutilisateur par lintermdiaire dun
interprteur de commandes (on ne rve pas encore dinterfaces graphiques) ; BDOS
(Basic Disk Operating System) qui gre les disques et le systme de chiers ; BIOS
(Basic Input/Output System) contient les pilotes de priphriques et gre les aspects matriels de bas niveau, spciques dune machine particulire. Typiquement
le BIOS nest pas fourni par Digital Research mais par le fabricant de lordinateur,
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 dabstraction du systme
par rapport au matriel.
CP/M procure un outil supplmentaire dabstraction des dispositifs matriels,
avec la notion dunit logique, qui permet de dissimuler lutilisateur les dtails
techniques trop horribles pris en charge par le systme.
Digital Research produisit une volution de CP/M nomme MP/M, dote dun
noyau multi-tche multi-utilisateur, avec des possibilits de temps partag.
la n des annes 1970 Digital Research fut confront un dilemme : si PL/M
restait un langage bien adapt pour lcriture du systme dexploitation, il fallait choisir un langage de dveloppement pour les logiciels dapplication, BASIC
ntant pas appropri. Lhsitation tait entre Pascal, un langage pris des universitaires mais dpourvu de certaines caractristiques ncessaires la programmation de
grands logiciels (essentiellement la possibilit de construire de grands programmes
partir de modules compils sparment, ainsi que des fonctions de traitement de
chiers et de chanes de caractres), et PL/1, le langage quIBM essayait, sans grand
succs dailleurs, de promouvoir auprs de ses clients.
PL/1 tait un langage driv dAlgol et dot dune grande richesse fonctionnelle,
trop grande dailleurs, ce qui rendait la ralisation de compilateurs dicile et incitait
les programmeurs inexpriments produire des logiciels dpourvus de la sobrit
qui fait les programmes robustes. Pour pallier la dicult dadapter le langage de
petits ordinateurs, le comit de normalisation de PL/1 avait dni un sous ensemble
plus raisonnable, PL/1 Subset G, qui tait un excellent langage. Cest pour PL/1
Subset G que Digital Research commena en 1978 dvelopper un compilateur, qui
fut prt en 1980. La socit avait sign son arrt de mort.
En 1981, IBM lanait son propre micro-ordinateur, le PC. Il tait construit autour du processeur Intel 8088, une version dgrade du 8086 : le 8086 avait des
mots de 16 bits et un bus de donnes dune largeur de 16 bits, le 8088 des mots
de 16 bits mais un bus de 8 bits. Les stratges de la compagnie ont certainement
compris que CP/M, dot dun vrai langage de dveloppement, PL/1 Subset G, et
qui voluait vers un systme dexploitation multi-utilisateurs, MP/M, reprsentait
terme une concurrence dangereuse pour les vrais ordinateurs qui constituaient
leur cheval de bataille. De surcrot, CP/M pouvait tourner sur plusieurs types
de processeurs, ce qui donnait ses utilisateurs la libert du choix de leur fournisseur de matriel, une caractristique non souhaite par le dpartement marketing
dIBM. Cest pourquoi le PC na pas t lanc avec CP/M, qui lui aurait parfaitement convenu, mais avec un systme bien plus rudimentaire et dpourvu de langage
257
258
Micro-informatique
Cette machine connut nanmoins un grand succs, mais dont IBM ne fut pas le seul
bnciaire parce que lactivit des fabricants de clones connut alors un grand essor.
Le schisme entre OS/2 et Windows
En 1987 IBM, dsireux de reprendre le contrle du march du PC, lana le PS/2,
dot dune architecture ferme protge par des brevets, dun nouveau bus baptis
MCA incompatible avec celui de lAT, et dun nouveau systme dexploitation, OS/2
conu en collaboration avec Microsoft. Le processeur tait toujours le 80286 vieillissant, voire le 8086 pour les modles dentre de gamme. Malgr dindniables qualits
techniques qui corrigeaient beaucoup des dfauts de larchitecture des PC sous MSDOS, cette tentative de reprise en main fut un chec total qui aboutit relguer IBM
dans une position subalterne et marginale sur le march quil avait cr. Plus que
le choix de processeurs dpasss face au nouveau modle dIntel, le 386 qui sortait
au mme moment, lchec de la rme dArmonk rsulta dune rvolte des industriels
du PC bien dcids conserver leur indpendance, rvolte soutenue par la clientle
et surtout par Microsoft et Intel, qui voyaient l une occasion de sortir de lombre
dIBM pour jouer les premiers rles. Microsoft avait discrtement prpar une alternative OS/2, Windows2 qui sortit opportunment ce moment. Cest le dbut de
lascension de la rme de Redmond.
Windows 2 et 3 ntait quune surcouche cosmtique au-dessus de MS-DOS. Ce
systme fentres, icnes et menus droulants reposait sur lutilisation des machines
virtuelles de lIntel 386 en mode rel, qui pouvaient tre multiples, ce qui permettait
de franchir la barrire de mmoire qui limitait MS-DOS. Linterface graphique faisait
ple gure ct de celle du Macintosh, mais elle allait enclencher la conqute du
grand public par les logiciels de Microsoft.
Les systmes dinterfaces fentres, que ce soit Windows, MacOS ou le systme de fentrage X qui fonctionne comme une sur-couche au-dessus dUnix, introduisent un nouveau style de programmation, la programmation par vnements. Le
programme principal excute une boucle innie qui attend un vnement en provenance dune fentre ( clic de souris, dplacement de la souris, frappe dune
touche au clavier). Chaque vnement est analys et provoque le dclenchement du
sous-programme charg deectuer laction approprie.
Windows NT et 95
Windows NT (lanc donc en 1993) et Windows 95 (dat comme son nom lindique
de 1995) allaient enn utiliser le mode protg du processeur avec un adressage sur
32 bits et lusage de bibliothques de fonctions charges dynamiquement (DLL, Dynamic Link Libraries) analogues aux bibliothques partages dUnix. Mais Windows
95, destin au grand public, se devait de conserver la compatibilit avec les anciens
logiciels, surtout ceux destins aux jeux, et de ce fait conservait un soubassement
MS-DOS.
Faiblesses de Windows 95
Windows 95 disposait de la mmoire virtuelle, dune gestion de processus et
de possibilits de multiprogrammation, mais les bnces de cette modernisation
259
taient obrs par la prsence dun important hritage de code 16 bits dans le noyau
et par le partage sans protection dune partie de lespace mmoire entre le noyau et
tous les processus.
En outre, si Windows 95 tait premptif, son noyau ntait pas rentrant : tre
rentrant est une qualit statique, lexicale dun programme, cela signie que si un
processus ou une activit (thread) qui lexcute est interrompu(e) au milieu de cette
excution, il ne reste dans le texte du programme aucune trace de cette excution
inacheve et un autre processus (ou une autre thread) peut excuter la mme copie
en mmoire de ce mme programme partir dune autre instruction sans quil soit
pollu par les excutions prcdentes ; en dautres termes le texte du programme
lui-mme ne contient aucune information qui dpende de lexcution dun processus
particulier ou dune thread particulire, comme par exemple une variable dnie
statiquement dans le code (cf. section 10.4.5). Si Windows 95 est premptif, cela
signie quun processus (ou une thread) peut tre interrompu(e) nimporte quel
instant au prot dun(e) autre. Si le noyau nest pas rentrant, cela signie que le
processus interrompu peut avoir laiss une structure de donnes du noyau dans un
tat incohrent qui provoquera un comportement imprvisible du processus nouvellement ordonnanc. Bref, un systme premptif noyau non rentrant est sujet aux
pannes inexplicables de type blocage ou arrt brutal.
Cette absence de sret rentrante du noyau Windows 95 prsenterait de tels
risques si le fonctionnement premptif du systme tait eectivement utilis que la
plupart des logiciels raisonnables recouraient des artices pour acqurir et conserver le contrle exclusif du processeur pendant leurs phases dactivit. Le procd le
plus populaire consistait obtenir, en entrant dans le mode noyau, un verrou de
contrle exclusif qui contrlait laccs pratiquement tout le systme. La mthode
tait radicale, mais elle faisait perdre lessentiel de lintrt de la multiprogrammation.
Atouts de Windows NT
Microsoft destinait Windows NT au march professionnel, et an de satisfaire les
exigences supposes de cette clientle avait recrut chez Digital Equipment David
Cutler et Mark Lucovsky. Cutler avait t lauteur du systme RSX-11M des PDP11, puis avec Lucovsky un des architectes du systme VMS du VAX. La conception
de Windows NT commena en octobre 1988.
Windows NT visait la portabilit ; Cutler et Lucovsky pensaient que le seul
moyen datteindre cet objectif tait de dvelopper le systme simultanment pour
deux architectures matrielles direntes. Ils commencrent par la version destine
aux processeurs RISC de MIPS, dont personne ne se souciait chez Microsoft, an
dacqurir la certitude que la version pour Intel x86 serait vraiment portable.
Toujours an dassurer la portabilit et lvolutivit de leur systme, Cutler et
Lucovsky sinterdirent dincorporer au noyau la smantique de tel ou tel systme ;
ils dcidrent de dvelopper plutt un noyau rduit aux mcanismes de base et
dot dune interface de programmation (API) claire au-dessus de laquelle ils implantrent trois sous-systmes qui implmentaient les smantiques respectivement
des systmes POSIX, OS/2 et Windows. Cet discipline se rvla judicieuse lorsque
Microsoft dcida dabandonner dnitivement OS/2 et de dvelopper Windows de
faon totalement indpendante.
260
Micro-informatique
Si lon dresse la liste des dispositifs qui gurent dans Windows NT et sont absents
de Windows 95 et mme Windows 98, on trouve tout ce qui touche la scurit, le
support des multi-processeurs, un systme de chiers plus perfectionn. Le caractre
premptif et la gestion de mmoire virtuelle de NT sont dpourvus des compromis
qui en font perdre une partie du bnce 95 et 98.
Insuccs de Windows NT
Malgr ces qualits indniables, le lancement de Windows NT fut un chec relatif.
Dabord, ce nouveau systme 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 scurit gure un vrai systme denregistrement
des utilisateurs autoriss et de contrle des mots de passe. Mais comme il ne faut
pas perturber les habitudes culturelles de la clientle, lusage de ce systme didentication et dauthentication est facultatif, ce qui lui retire toute ecacit relle.
De mme, NT comporte un systme de protection des chiers et dautres objets
par listes de contrle daccs (ACL) ; ce systme, directement hrit de VMS, est
excellent, mais pour quil ne bloque pas irrmdiablement un trop grand nombre de
vieux programmes hrits du pass, il est implment en mode utilisateur, ce qui
le rend trs vulnrable aux attaques et lui retire donc tout intrt. Et pour couronner le tout, les premires versions de NT, jusquau Service Pack 3 de NT 4 en
mai 1997 (en fait une nouvelle version), taient gourmandes en mmoire, lentes et
instables (les fameux crans bleus qui sachaient lors des pannes systme causaient
le dcouragement des utilisateurs).
La dsaection qui accueillit Windows NT et la persvrance des clients utiliser
les vieux systmes 16 bits bass sur MS-DOS conduisit Microsoft prolonger leur vie
sous les noms de Windows 98 et Windows Me. Esprons que cen est ni maintenant
de ces anciens systmes, notoirement faibles du point de vue de la scurit. En
principe Windows XP devrait sonner lheure de la runication entre les systmes
grand public et les systmes dentreprise.
Windows 2000
On trouvera une description dtaille de Windows 2000 dans le livre de Solomon
et Russinovich Inside Windows 2000 [70], mais lexpos de Tanenbaum dans son
livre Modern Operating Systems [74] constitue dj une introduction substantielle.
Windows 2000, en fait la version 5 de Windows NT, est un systme plein
de bonnes rsolutions. Le modle de scurit et son implmentation sont revus,
conformes aux standards (IPSec, Kerberos, LDAP, X509), le service de noms est
dsormais fond sur le DNS la mode Internet, le systme de chiers NTFS a t
dot de fonctions de chirement applicables aux chiers individuels, aux rpertoires
ou toute une partition. Chaque processus peut contrler un ou plusieurs threads ,
qui sont gres par le noyau. En fait on pourrait plutt reprocher Windows 2000
sa profusion : plus de 30 millions de lignes de code, des centaines dappels systmes
pour le systme au sens restreint du terme (gestion des processus, de la mmoire,
des I/O, de la synchronisation, des chiers et de la protection), des milliers dappels
systme pour linterface graphique.
261
Autant dire que cest un systme peu intelligible, ce qui est parfois aussi gnant
quun systme indigent : ainsi limplmentation des dispositifs de protection et de
scurit est obscure, ce qui ne donne lingnieur de scurit dautre choix que de
leur faire une conance aveugle, avec les inconvnients que nous avons souligns
la section 7.2.8.
Un des aspects intressants de Window 2000 est sa couche dabstraction du matriel (HAL, pour Hardware Abstraction Layer) situe sous le noyau, et qui regroupe
tous les aspects du systme trop dpendants dun matriel particulier, comme les
interfaces avec les priphriques, la gestion de laccs direct la mmoire pour les
oprations dentre-sortie, des interruptions, de lhorloge, des verrous de synchronisation des multi-processeurs, linterface avec le BIOS, etc. Bref, Windows rejoint
enn le niveau dabstraction de CP/M.
Symtriquement, laccs des programmes en mode utilisateur aux services systme se fait travers une couche dinterface constitue de la bibliothque dynamique
NTDLL.DLL.
Windows 2000 dispose dun systme perfectionn de mmoire virtuelle, assez
proche de celui de VMS.
Franois Anceau a publi une excellente synthse de lvolution du PC dans
son article La saga des PC Wintel [4], o le lecteur pourra trouver de nombreuses
donnes supplmentaires.
la n de lanne 2002 une proportion crasante des ordinateurs en service
dans le monde (il y en avait un milliard) fonctionnait avec une version ou une autre
de Microsoft Windows. En 2013, Cisco (qui est bien plac pour le savoir) estime
8,7 milliards le nombre d objets connects lInternet 3 , et si lon observe la
rpartition des accs au Web selon le systme dexploitation metteur de la requte,
Windows ne reprsente plus que quelques 35% des accs, svrement concurrenc
par MacOS et surtout Android, un systme dexploitation cr par Google, driv
de Linux et quip dun systme Java spcique (machine virtuelle Dalvik) pour
le dveloppement dapplications. Android est utilis pour les smartphones et les
tablettes.
262
Micro-informatique
des interfaces homme-machine, parce que la plupart des utilisateurs ne se sont pas
aperus de ce changement de systme, pourtant radical !
MacOS (de version 9 ou antrieure, dans les lignes qui suivent cest de ces versions que nous parlons, lexclusion de MacOS X et des versions ultrieures) sourait
des mmes dfauts architecturaux que Windows 95 ou 98, mais un degr moindre
de gravit. Comme ceux-ci il sagissait dun systme au caractre premptif incertain et au code le plus souvent non rentrant, de ce fait sujet aux blocages et aux
arrts brutaux causs par des conits ou des treintes fatales entre processus, si
ce nest tout simplement par le dclenchement dune interruption asynchrone un
moment o le systme nest pas dans un tat convenable pour la recevoir. De fait,
la multiprogrammation cooprative entre programmes pseudo-simultans nest
possible de faon sre que si la commutation entre processus a lieu des emplacements bien dtermins du code, lors de lappel au sous-programme de bibliothque
WaitNextEvent, et en eectuant cette occasion des manipulations de donnes
enfouies profondment dans le systme. Bref, MacOS ntait pas un vrai systme
multi-tches.
Le vieux MacOS disposait dun espace mmoire unique o cohabitaient sans
protection le systme et les programmes lancs par lutilisateur. Le systme tait
accompagn dune vaste bibliothque de fonctions gnralement connue sous le nom
de Toolbox, et fonctionnait en troite symbiose avec des lments cods en mmoire
ROM (Read-Only Memory, une mmoire incorpore au matriel de telle sorte que
le contenu en soit inaltrable) et protgs par des brevets, ce qui a empch la
production dordinateurs compatibles avec le Macintosh par dautres industriels,
sauf pendant la courte priode o Apple a vendu des licences. La Toolbox ntait pas
rentrante et faisait un usage systmatique de variables dtat globales, ce qui rendait
trs problmatique par exemple le dveloppement dapplications en Java qui auraient
utilis les possibilits de multithreading de ce langage. Dailleurs limplmentation de
Java sous MacOS a toujours t rpute problmatique. Comme sous Windows 95
et 98, les dveloppeurs ont tant bien que mal rsolu ces problmes en ayant recours
de longues sections critiques protges par des verrous de contrle exclusif.
Si la situation engendre par ces lacunes des anciens MacOS a t moins calamiteuse que dans le cas de Windows 95 et 98, cest pour une srie de raisons
contingentes. Dabord, le systme MacOS et tous les Macintosh quil devait faire
fonctionner taient conus par une seule entreprise en un seul lieu, Apple Cupertino. Ceci permettait une grande cohrence dans les dveloppements et vitait
de livrer au client des systmes trop incertains. Ensuite, Apple a su coordonner le
travail de tous les dveloppeurs de logiciels et de matriels extrieurs la socit
de telle sorte quils respectent tous les mmes rgles dinterface. Cest ce qui fait
lagrment dusage du Macintosh : quel que soit le logiciel que lon utilise, les mmes
fonctions sont toujours ralises de la mme faon, en cliquant au mme endroit sur
un article de menu qui porte le mme nom. Microsoft est venu un peu tard cette
discipline. De ce fait le Macintosh dot de MacOS, mme une version antique, est
beaucoup plus agrable utiliser et dclenche beaucoup moins dappels au secours
en direction du service dassistance quun systme sous Windows.
MacOS X est un systme entirement nouveau qui repose sur dexcellentes fondations techniques : cest un Unix BSD assis sur un micro-noyau Mach et surmont
dune interface homme-machine aussi russie que les prcdentes versions de Ma-
263
cOS. Il a permis Apple de reconqurir sur les machines sous Windows un terrain
alors rduit 2 ou 3% du march. Il a surmont la concurrence des solutions base
dUnix libres, moins onreuses lachat. La facilit dusage par le naf est un critre
vital, et la rponse ces incertitudes a donc t oui. Parce quaujourdhui, grce
larchitecture du PC processeur Intel et Windows qui choue en dissimuler les
dtails intimes lutilisateur, le monde est plein de comptables qui potassent les niveaux dinterruption associs leur cartes graphiques et de prsidents duniversits
qui exprimentent les combinaisons possibles de congurations de leurs disques IDE
pendant les heures de travail, ce qui a indubitablement un cot trs suprieur la
valeur ajoute rsultante.
264
Micro-informatique
La domination absolue et ternelle du march par une seule rme est un fantasme
propre au monde de linformatique : IBM hier, Microsoft aujourdhui, ou sur des
secteurs plus spcialiss Oracle et Cisco. Mme dans ses rves les plus euphoriques
le prsident de General Motors a toujours su quil y aurait Ford ou Toyota, celui de
Boeing quil y aurait EADS.
Michel Volle nous a bien expliqu le mcanisme de formation des monopoles dans
lindustrie informatique : elle fonctionne sous le rgime de la concurrence monopoliste 6 :
Lorsque le rendement dchelle est croissant le cot unitaire le plus bas sera
celui de lentreprise qui produit la plus grande quantit. Elle sera donc en mesure
dvincer ses concurrents en proposant un prix infrieur au leur : ce march obit
au rgime du monopole naturel.
On pourrait donc sattendre ce que tous les marchs soient dans liconomie
domins par un monopole. Il nen est cependant rien car les entreprises disposent
dune arme qui leur permet de rsister : la diversication du produit en varits.
Cest dans lillusion de la prennit de ces monopoles que rside le caractre
fantasmatique de la croyance. Parce que dans la ralit diachronique la vitesse de
linnovation technologique fait et dfait les positions les plus solides, les plus monopolistes. Tt ou tard Microsoft suivra la voie dIBM, voire celle de Digital Equipment.
Risquons lhypothse que ce fantasme (heureusement rgulirement dmenti par
les faits) est engendr par une proximit inquitante (et dailleurs surestime) entre
lesprit que nous prtons lordinateur et le ntre. Toute pluralit du dmiurge de
cet esprit introduit une sensation dinscurit semble-t-il intolrable. Nous aspirons
lunit des processeurs et des mmoires. Que le voisin soit sous un autre systme
nous perturbe, nous le lui faisons savoir avec vhmence, parfois. Voici donc enn
lexplication des controverses lors des dners en ville voques dans les premires
lignes de ce livre : jespre ainsi ne pas lavoir crit en vain.
6. http://michelvolle.blogspot.fr/2012/07/dynamique-et-enjeux-de-liconomie.html
Conclusion
266
Conclusion
autre, mais pas seulement. Jai surtout emprunt IBM sa gestion de mmoire
virtuelle et son traitement des interruptions parce quils sont dune sobrit et dune
clart conceptuelle parfaites, ce qui nest pas si rpandu. Cette mmoire virtuelle a
t conue pour tre ajoute un systme existant, ce qui imposait de rduire les
interfrences avec les autres composants au strict minimum et permettait en contrepartie une conception parfaitement libre du poids du pass : do une lgance que
lon peine trouver dans la gestion de mmoire dUnix, il faut le dire. Le systme de
chiers quUnix a hrit de Multics atteint par contre un dpouillement esthtique
qui nest surpass que par les systmes persistants qui ignorent avec hauteur la
notion mme de chier. Et Multics, que je nai pratiqu que pendant une courte
priode, ma nanmoins fait dcouvrir une manire nouvelle en informatique, que
jai retrouve plus tard avec Unix, surtout dailleurs sous sa forme Linux.
Pendant dix ans jai travaill avec le systme VMS que Digital Equipment (DEC)
avait cr pour les VAX. Jai beaucoup aim ce systme stable et robuste, je lai
mme dfendu au-del du raisonnable, et je me suis demand pourquoi javais si
peu parl de lui dans ce livre. Jai eu la rponse en lisant Inside Windows 2000
[70] de Solomon et Russinovich. Windows 2000 et VMS ont le mme concepteur
principal, David Cutler, un homme qui sait visiblement raliser des systmes de
grande envergure et trs ables. Et la description des structures internes de Windows
2000 ma irrsistiblement rappel le cours VMS que javais suivi chez Digital quelques
annes plus tt : les solutions retenues sont visiblement raisonnables, quelquefois
mme un peu trop lorsquelle engendrent une complexit considrable en prvision
de cas de gure exceptionnels, on se dit quil ny a vraiment aucune chance pour que
cela tombe en panne, mais cela manque de dli, cest un bloc massif qui rsiste
lintellection. Peut-tre est-ce dailleurs le but : pour un industriel, quil soit Digital
ou Microsoft, le systme est un secret de fabrique et il ne faut pas que les concurrents
puissent trop facilement le contrefaire ou en faire lingnierie inverse.
Multics et Unix, pour des raisons longuement dveloppes ci-dessus et qui
tiennent leur origine universitaire ou proche de lUniversit, ont sans doute mis
longtemps acqurir les qualits industrielles que VMS et Windows 2000 avaient
pratiquement de naissance, mais leur architecture plus explicite, et pour Unix la
plus grande ouverture de la structure interne, ont permis la naissance dune vritable communaut intellectuelle dont tous les bnces apparaissent au grand jour
dans le mouvement du logiciel libre. Ne pas voir les origines lointaines de ce mouvement prive dy rien comprendre, comme le montrent lenvi les lucubrations de la
presse gnrale ou technique qui mlange allgrement les activits des dveloppeurs
du libre, des pirates du rseau (en jouant sur les acceptions multiples du terme hacker) et des adolescents adeptes de jeux lectroniques comme sil ne sagissait que
dune seule et mme chose. Il ne mchappe pas que cette confusion peut viser un
but, ft-ce de atter une clientle.
Autre chose mest apparu tandis que jcrivais ce livre : linstant tait favorable
une telle entreprise pdagogique parce que nous sommes dans une priode de consolidation et de simplication. Le paysage technique de linformatique tait sinon plus
complexe du moins plus htrogne il y a une quinzaine dannes. Les progrs rapides et implacables de la technologie micro-lectronique et des disques magntiques
ont lamin de nombreuses lires dinnovation dont la rentabilit suppose tait trop
faible, que ce soit dans le domaine du matriel (processeurs vectoriels ou systoliques,
267
multi-processeurs complexes) ou dans celui du logiciel (micro-noyaux, systmes dexploitation distribus). La stagnation des caractristiques des processeurs nest pas
pour demain, mais il existe tout un stock dinnovations aujourdhui au placard dont
beaucoup ressurgiront sous une forme ou sous une autre. En attendant, la (relative)
unication des techniques de base et la concentration du monde des systmes autour
de trois ou quatre varits principales implantes sur trois ou quatre modles de processeurs ont simpli la tche de lauteur. Jusqu la prochaine ambe innovatrice
qui sera dclenche par une perce technologique...
Une chose en tout cas est certaine : linvasion de domaines de plus en plus
nombreux de notre vie professionnelle et prive par les systmes dexploitation va se
poursuivre, et mme sils sauront se faire de plus en plus discrets, voire transparents,
cest--dire opaques, tout en ignorer sera de plus en plus imprudent.
A.1 Dnitions 1
Le premier procd utilis par lhumanit pour reprsenter graphiquement les
nombres a srement t le systme des btons , que lon peut appeler numration
unaire. Il est encore en usage pour marquer les points au ping-pong : pour noter dixsept points on trace dix-sept btons, regroups par paquets de cinq pour faciliter la
lecture. Il nen reste pas moins que lencombrement de la notation est proportionnel
la grandeur du nombre envisag, ce qui est vite malcommode.
Le systme que nous utilisons communment est appel numration de position.
Dans la reprsentation dun nombre le chire le plus droite est celui des units, le
second partir de la droite celui des dizaines, le troisime celui des centaines, etc.
Ainsi :
147 = 7.100 + 4.101 + 1.102 = 7 + 40 + 100
La numration de position a t invente Sumer il y a 4 000 ans, mais sa diffusion a t laborieuse. Notre systme utilise la base 10, cest--dire que les chires
successifs partir de la droite sont les coecients des puissances successives de 10,
mais tout nombre suprieur ou gal 2 serait une base convenable. Les premiers
comptables sumriens utilisaient la base 60 : il tait logique, alors que la numration de position tait une science de pointe, une acquisition intellectuelle dicile,
dutiliser une base de valeur leve, ce qui permettait pour les usages lmentaires
(nombres infrieurs 60) de se ramener lancien systme, plus accessible.
Les anciens Gaulois utilisaient la base 20 dont nous voyons la trace dans les
termes quatre-vingt et Quinze-Vingt, vieux noms de nombres celtiques.
La Chine antique utilisait les bases 2, 10 et 12. Louvrage classique de Marcel
Granet La pense chinoise consacre un volumineux chapitre lusage des nombres
par les Chinois. Ils matrisaient une arithmtique tout fait respectable, mais cette
discipline tait tenue en pitre estime par rapport lusage noble des nombres : la
divination par la numrologie.
Soit B un entier suprieur ou gal 2 et N un entier strictement positif : tout
entier p peut tre crit de faon unique sous la forme :
p=
N
1
di B i
i=0
1. Ce chapitre dannexe emprunte une partie de son contenu mon livre Initiation la programmation avec Scheme, publi en 2001 par les ditions Technip, avec laimable autorisation de
lditeur.
270
Numration binaire
Notation binaire
0
1
10
11
100
101
110
111
1000
...
1111
10000
...
Il sera commode de se rappeler que 210 = 1024 103 , 220 106 , etc.
Voyons laddition : 2 + 3 scrit donc 10 + 11 et se calcule ainsi, selon la mthode
habituelle :
un plus zro donne un et je ne retiens rien ;
un plus un donne deux, je pose zro et je retiens un ;
un plus zro donne un, le rsultat scrit 101 et vaut bien cinq.
271
1. Dans la base de dpart B diviser (au sens de la division entire qui donne un
quotient et un reste) p par la nouvelle base B . Remarquer que le reste obtenu
est forcment infrieur B . Diviser le quotient obtenu nouveau par B , puis
recommencer ainsi de suite jusqu lobtention dun quotient nul.
2. Si B > B, convertir tous les restes de B en B . Si B < B cest inutile. En
toute rigueur lalgorithme dcrit est rcursif, mais en pratique le nombre de
cas examiner est rduit et les calculs peuvent se faire de tte.
3. crire les restes successifs de droite gauche : cest le rsultat cherch, lcriture
de p dans la base B .
Cest un algorithme, il est donc programmable. Pour les chires aprs la virgule
cest un peu plus compliqu parce quil faut prvoir le cas des nombre dont lcriture
dans la nouvelle base ncessite une innit de nombres aprs la virgule, et alors
sarrter.
Principe de reprsentation
La reprsentation des nombres est en gnral caractristique de larchitecture
dun ordinateur donn, et non pas du langage de programmation utilis. Les lignes
qui suivent dcrivent la reprsentation des nombres entiers en virgule xe et
valent pour la plupart des ordinateurs contemporains et la plupart des langages de
programmation.
Si la reprsentation des entiers positifs se fait selon la notation de position usuelle
et nappelle pas de remarques particulires, celle des nombres ngatifs se fait par la
mthode du complment la base , qui appelle une description. Cette dernire
mthode, plus complexe au premier abord, simplie la conception des algorithmes
de calcul comme nous allons le voir.
Soit un ordinateur dont larchitecture matrielle met notre diposition, pour
reprsenter les entiers, des emplacements de n positions en base B, B paire. Nous
n
pouvons reprsenter B n nombres dirents : nous prenons ceux compris entre B2
n
et B2 1, ce qui revient partager lespace des reprsentations disponibles en deux
parties gales, une pour les nombres ngatifs et une pour les nombres positifs. Le
plus grand nombre positif reprsentable a une valeur absolue plus faible de 1 que
celle du plus petit nombre ngatif reprsentable, parce que 0 est avec les nombres
positifs. La reprsentation se fera comme suit :
n
n
Les nombres compris entre 0 et B2 1, soit B2 nombres, seront reprsents
selon la notation usuelle de position ; remarquons que le chire de poids fort
(rang n) est toujours 0 pour ces nombres.
272
Numration binaire
Reprsentation physique
(chane de chires binaires)
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
Nombre reprsent
0
1
2
3
4
5
6
7
-8
-7
-6
-5
-4
-3
-2
-1
Table A.1 : Reprsentation des entiers
Types fractionnaires
273
274
Numration binaire
Double prcision
2
126
127
24
2
1022
1023
53
plus petite
valeur absolue
1, 1754944.1038
2, 225073858507201.10308
plus grande
valeur absolue
3, 4028235.10+38
1, 797693134862317.10+308
B
M IN
M AX
S
Cray
(double)
2
16382
16383
48
Types fractionnaires
275
S Exposant
bits
31 30
Mantisse
23 22
Exposant
Mantisse
En fait, la norme IEE754 est plus complexe que le rsum que nous en
donnons, et elle admet des variantes. Les valeurs conventionnelles suivantes sont
dnies, ici en simple prcision (les valeurs des mantisses et des exposants sont les
congurations binaires physiques) :
Nom
zro positif
zro ngatif
inni positif
inni ngatif
NaN (not a number)
Valeur
+0
0
+
aucune
Signe
0
1
0
1
1 ou 0
Exposant
0
0
255
255
255
Mantisse
0
0
0
0
dirente de 0
A.5.3 Exemple
Un exemple simple emprunt au toujours prcieux livre de Bertrand Meyer et
Claude Baudoin Mthodes de programmation [50] illustrera quelques aspects intressants de ce type de reprsentation. Soit un systme o B = 2, N = 3, M IN = 1 et
M AX = 2, les nombres susceptibles dtre reprsents exactement sont les suivants :
m = (1, 00)2
m = (1, 01)2
m = (1, 10)2
m = (1, 11)2
=1
= 5/4
= 3/2
= 7/4
p = 1
1/2
5/8
3/4
7/8
p=0
1
5/4
3/2
7/4
p = +1
2
5/2
3
7/2
p = +2
4
5
6
7
276
Numration binaire
Seules les valeurs positives ont t reprsentes dans le tableau et sur le graphique, les valeurs ngatives sen dduiraient par symtrie. On remarquera que la
densit des nombres reprsents exactement (ou la prcision absolue de la reprsentation) est variable. Le lecteur pourra se convaincre facilement de ce qui suit :
si lon reprsente les nombres rels par un tel ensemble de nombres, loprateur dgalit nest pas utilisable (non plus que lingalit dailleurs) ; au
mieux peut-on vrier que la dirence entre deux nombres est infrieure
un seuil que lon se donne, et encore condition de sassurer que les chires
fractionnaires qui produisent la dirence sont signicatifs ; pour un expos
complet et original de la question on se reportera utilement au livre de Michle Pichat et Jean Vignes [57] ;
la soustraction risque de provoquer une grande perte de prcision dans les
calculs (cas de deux nombres grands mais peu dirents) ;
il est dangereux dadditionner ou de soustraire des nombres dordres de grandeur dirents, parce quune mise au mme exposant sera ncessaire, au
prix de la prcision ;
des changements de variable judicieux peuvent augmenter la qualit des rsultats ;
le premier chire de la mantisse vaut toujours 1 (on dit que la virgule ottante
est normalise), il sera donc sous-entendu dans le matriel.
Pour donner un tour plus concret cet expos, nous empruntons au Numerical
Computations Guide de Sun Microsystems la table suivante, qui donne pour
la reprsentation IEEE 754 simple prcision la taille des intervalles entre deux
nombres reprsents exactement conscutifs, et ce pour dirents ordres de
grandeur :
x
0.0
1.0000000e + 00
2.0000000e + 00
1.6000000e + 01
1.2800000e + 02
1.0000000e + 20
9.9999997e + 37
nextaf ter
1.1754944e 38
1.0000001
2.0000002e.00
1.6000002e + 01
1.2800002e + 02
1.0000001e + 20
1.0000001e + 38
Gap
1.1754945e 38
1.1920929e 07
2.3841858e 07
1.9073486e 06
1.5258789e 05
8.7960930e + 12
1.0141205e + 31
B.1 Transistor
Nous avons vu que lunit centrale de lordinateur, et notamment lunit arithmtique et logique, tait constitue de circuits logiques. Les circuits logiques ralisent
matriellement les oprations de la logique, et partir de l les oprations arithmtiques lmentaires. Il sut pour raliser les circuits logiques ncessaires toutes les
oprations dun dispositif unique, dit semi-conducteur, qui en fonction dun courant
de commande laisse passer ou bloque un courant entre une source et un collecteur.
Cest ce que nous allons montrer.
Le premier semi-conducteur fut la triode, invente en 1906 par Lee De Forest et
utilise dans la construction de lENIAC et des premiers ordinateurs comme dans
celle des anciens postes de radio lampes et de luxueux amplicateurs, mais nous
passerons tout de suite son quivalent moderne, le transistor, dont linvention aux
Bell Laboratories en 1947 vaudra le prix Nobel 1956 John Bardeen, Walter Houser
Brattain et William Shockley.
Le but des lignes qui suivent nest pas de donner un cours dlectronique, mais de
donner comprendre que les oprations lmentaires eectues par les ordinateurs
sont des objets physiques, et pourquoi cela peut fonctionner eectivement. Je nentreprendrai pas lexplication des phnomnes physiques en jeu dans le transistor, que
toute bonne encyclopdie en ligne ou sur papier rvlera au lecteur, et je me bornerai au modle donn par la gure B.1, qui correspond un transistor bipolaire. Les
circuits actuels utilisent plutt des transistors eet de champ, qui autorisent des
densits plus leves, mais avec des circuits plus complexes, et, rptons-le, le but de
ce chapitre nest pas un cours dlectronique. Pour une prsentation analogue avec
des transistors eet de champ, on pourra par exemple se reporter au site dOlivier
Carton 1 . Signalons aussi la rdition rcente de louvrage de Paolo Zanella, Yves
Ligier et Emmanuel Lazard, Architecture et technologie des ordinateurs 2 , aux ditions Dunod, et la confrence de Franois Anceau 3 dans le cadre dun sminaire au
Conservatoire des Arts et Mtiers..
Quand la base est une tension positive, le courant passe entre du collecteur
lmetteur ; quand la base est une tension ngative ou nulle, le courant ne passe
pas.
1. http://www.liafa.univ-paris-diderot.fr/~carton/Enseignement/Architecture/
2. http://www.dunod.com/informatique-multimedia/fondements-de-linformatique/
architectures-des-machines/ouvrages-denseignemen/architecture-et-tec
3. https://project.inria.fr/minf/files/2013/11/2-Des-MOS-aux-Circuits-Intgrs1.
pdf
278
Emetteur
Collecteur
Base
Figure B.1 : Modle du transistor bipolaire NPN : quand la base est mise une tension positive, le
courant passe du collecteur lmetteur ; quand la base est mise une tension ngative ou nulle, le
courant ne passe pas.
Algbre de Boole
279
vnement nul
AB (soit : A ET B)
Figure B.2 : Exemples dvnements
A+B
(A OU B)
Figure B.3 : Ou logique
Nous nirons gure plus loin en algbre de Boole. Le lecteur pourra vrier
les proprits algbriques du produit et de la somme, qui sont bonnes . Nous
pouvons donner les tables de vrit de ces oprations :
x
0
0
1
1
x
0
1
y
0
1
0
1
x
1
0
xy
0
0
0
1
x+y
0
1
1
1
280
x
base
metteur
Figure B.4 : Circuit NON
B.3.2 Circuit OU
Nous avons deux transistors en parallle : pour que le courant positif parvienne
la sortie note x + y et lui confre ainsi la valeur 1, ou le vrai, il sut que lun des
deux transistors soit passant. Pour cela il sut que lune des deux entres, x ou y,
soit positive : en eet un courant positif en x par exemple lemportera sur la mise
la masse gnre par R. Cest bien le rsultat attendu.
B.3.3 Circuit ET
Nous avons deux transistors en srie : pour que le courant positif atteigne la sortie
note xy il faut que les deux transistors soient passants, et donc que les deux entres
Construction de larithmtique
281
+V
x
+V
y
S=x+y
+V
x
y
R
S = xy
282
+V
R
S = xy
x
y
+V
S=x+y
x
x
NAND
y
NAND
x XOR y
y
NAND
x
Figure B.9 : Circuit OU EXCLUSIF (XOR)
Construction de la mmoire
x
0
0
1
1
y
0
1
0
1
s
0
1
1
0
283
r
0
0
0
1
De cette table nous pouvons infrer, par comparaison avec les tables des oprations logiques ci-dessus :
r = xy
s = (x + y) xy
s = (x OU y) ET N ON (x ET y)
Oprations que nous pouvons raliser par le circuit de la gure B.10.
OU
x
ET
NON
ET
r
Figure B.10 : Semiadditionneur binaire
y
0
1
0
1
x NOR y
1
0
0
0
Une position de mmoire lmentaire, qui reprsente un bit, est obtenue en combinant deux circuits NON OU de telle sorte que la sortie de lun alimente lentre de
lautre, et rciproquement. Un tel dispositif est appel une bascule (latch en anglais),
reprsente par la gure B.11.
284
entre S
(set)
entre R
(reset)
Bascule RS
NOR
sortie Q
NOR
sortie Q
R
0
0
1
0
1
Q
1
1
0
0
0
Q
0
0
1
1
0
Set (allumer)
Le bit vaut 1
Reset (teindre)
Le bit vaut 0
tat interdit
Index
A
Abramson, Norman . . . . . . . . . . . . . . . . 121
access control list . voir liste de contrle
daccs
accs direct . . . . . . . . . . . . . . . . . . . . . . . . . 85
accs squentiel . . . . . . . . . . . . . . . . . . . . . 85
ACL . . . . . . voir liste de contrle daccs
activit . . . . . . . . . . . . . . . . . . . . . . . . . 39, 105
Ada . . . . . . . . . . . . . . . . . . . . . . . . . 36, 81, 197
Adleman, Leonard . . . . . . . . . . . . . . . . . . 174
adresse . . . . . . . . 59, 60, 61, 63, 64, 6669
(espace) . . . . . . . . . . . . . . . . . . . . . . . . 69
(traduction d) . . . . . . . . . . . . . . . . . . 66
absolue . . . . . . . . . . . . . . . . . . . . . . . . . 25
Ethernet . . . . . . . . . . . . . . . . . . . . . . . 117
IP . 131135, 139145, 153156, 159
relative . . . . . . . . . . . . . . . . . . . . . . . . . 25
rseau 115, 117, 118, 121, 123, 126,
127
virtuelle . . . . . . . . . . . . . . . . . . . . . . . . 66
Advanced Research Projects Agency . 44,
129
AES (Advanced Encryption Standard) . .
169
aectation . . . . . . . . . . . . . . . . . . . . . . . 28, 61
AFNIC . . . . . . . . . . . . . . . . . . . . . . . . 132, 142
algorithme . . . . . . . . . 19, 20, 28, 271, 272
Allen, Paul . . . . . . . . . . . . . . . . . . . . . . . . . 252
Allman, Eric . . . . . . . . . . . . . . . . . . . . . . . 190
ALOHA . . . . . . . . . . . . . . . . . . . . . . . 121, 122
alphabet . . . . . . . . . . . . . . . . . . . 29, 111, 112
Altair 8800 . . . . . . . . . . . . . . . . . . . . . . . . . 252
AMD Athlon . . . . . . . . . . . . . . . . . . . . . . . 226
Amdahl, Gene . . . . . . . . . . . . . . . . . . . . . . . 32
American Telegraph and Telephone 185,
195
Amoeba . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
Anceau, Franois . . . . . . . . . . . . . . 261, 277
Andrew File System . . . . . . . . . . . . . . . . 106
Android . . . . . . . . . . . . . . . . . . 232, 261, 263
annuaire lectronique . . . . . . . . . . . . . . . 178
Apache . . . . . . . . . . . . . . . . . . . . . . . . 183, 207
API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
aplte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
appel de procdure distance . . . . . . . 99
Apple . . . . . . . . . . . . . . . . 123, 252, 261263
Apple II . . . . . . . . . . . . . . . . . . . . . . . 252, 253
Apple Lisa . . . . . . . . . . . . . . . . . . . . . . . . . 253
Apple Macintosh . . . . . . . . . . . . . . . . . . . 253
Appleshare . . . . . . . . . . . . . . . . . . . . . . . . . 157
applet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
arbre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
architecture
Alpha . . . . . . . . . . . . . . . . . . . . . 220, 252
cellulaire . . . . . . . . . . . . . . . . . . . . . . 212
CISC . . . . . . . . . . . . . . . . . . . . . 219223
IA-64 . . . . . . . . . . . . . . . . . . 59, 70, 221
MIMD . . . . . . . . . . . . . . . . . . . . 213, 223
MIPS . . . . . . . . . . . . . . . . . . . . . . . . . . 220
RISC . . . . . . . . . . . . . . . . . 219223, 221
SIMD . . . . . . . . . . . . . . . . . . . . . 212, 223
SPARC . . . . . . . . . . . . . . . . . . . . . . . . 220
super-scalaire . . . . . . . . . . . . . 222, 223
systolique . . . . . . . . . . . . . . . . . . . . . . 212
VLIW . . . . . . . . . . . . . . . . 221, 223227
architecture de lordinateur . . . . . . . . . 271
arithmtique
binaire . . . . . . . . . . . . . . . . 11, 269276
modulaire . . . . . . . . . . . . . . . . . 170172
ARPA . voir Advanced Research Projects
Agency
ARPANET . . . . . . . . . . . . . . . . . . . . 129, 170
Arsac, Jacques . . . . . . . . . . . . . . . . . . . . . 197
AS400 . . . . . . . . . . . . . . . . . . . . . . . . . 103, 105
assembleur . . . . . . . . . . . . . . . . . . . . . 25, 187
Asychronous Transfer Mode . . . 158, 159
AT&T . . . . voir American Telegraph and
Telephone
ATM . . voir Asychronous Transfer Mode
atomicit . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
attaque Man in the middle . . . . . . . . . 176
attaque par le milieu . . . . . . . . . . . . . . . 176
authentication . . . . . . . . . . . . . . . . . . . . 167
automate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
B
Babaoglu, Ozalp . . . . . . . . . . . . . . . . . . . 195
286
Babbage, Charles . . . . . . . . . . . . . . . . 12, 36
Baran, Paul . . . . . . . . . . . . . . . . . . . . . . . . 129
bascule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
base de numration . . . . . . . . . . . . 270, 271
Bayen, Franois . . . . . . . . . . . . . . . . . . 3, 176
BBN . . . . voir Bolt, Baranek & Newman
Bell Laboratories 112, 185, 187, 189, 277
Bellman, Richard . . . . . . . . . . . . . . . . . . 146
BGP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
bibliothque partage . . . . . . . 37, 53, 258
Bigloo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
BIOS . . . . . . . . . . . . . . . . . . . . . 222, 256, 257
bit . . . . . . . . . . . . . . . . . . . . . . . . . 17, 111, 112
Boggs, David . . . . . . . . . . . . . . . . . . . . . . . 121
Bhm, Corrado . . . . . . . . . . . . . . . . . . 20, 26
Bolt, Baranek & Newman . . 74, 129, 195
Boole, algbre de . . . . . . . . . . . . . . . . . . . 278
Boole, George . . . . . . . . . . . . . . . . . . . . . . 278
boot-strap . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Bostic, Keith . . . . . . . . . . . . . . . . . . . . . . . 190
Bouzefrane, Samia . . . . . . . . . . . . . . . . . 242
Bricklin, Dan . . . . . . . . . . . . . . . . . . . . . . . 253
Brooks, Frederick P. Jr . . . . . . . . 190, 201
buer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
Burroughs . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Burroughs B 5000 . . . . . . . . . . . . . . 73, 255
bus . 17, 47, 54, 59, 72, 75, 76, 252, 253,
256258
bytecode . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
C
C . . . . . . . . . . . . . . . . . . . . . . . . . . . 80, 81, 187
C++ . . . . . . . . . . . . . . . . . . . . . . . 80, 81, 104
CAB 1500 . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
cache . . . . . . . . . . . . . . . . . . . . . . . 75, 77, 241
de disque . . . . . . . . . . . . . . . . . . . . 97, 98
Caml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Cappello, Franck . . . . . . . . . . . . . . . . . . . 160
caractristique universelle . . . . . . . . . . . 11
Cerf, Vint . . . . . . . . . . . . . . . . . . . . . . . . . . 129
CERT . . . . . . . . . . . . . . . . . . . . . . . . . 182, 183
Charm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
checkpoint-restart . . . . . . . . . . . . . . 105, 106
checksum . . . . . . . voir somme de contrle
chirement . . . . . . . . . . . . . . . . . . . . . . . . . 167
Chorus . . . . . . . . . . . . . . . . . . . . . . . . 240, 244
Church, Alonzo . . . . . . . . . . . . . . . . . . 36, 58
CICS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
CIDR . . . . . . . . . . . . . . . . . . . . . . . . . 133, 153
circuit
commut . . . . . . . . . . . . . . . . . . . . . . 124
virtuel . . . . . . . . . . . . . . . . . . . . . . . . . 125
circuits logiques . . . . . . . . . . . . . . . 280284
cl . . . . . . . . . . 168179, 169, 170, 172177
Index
Cloud Computing . voir informatique en
nuage
Clouds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
code
excutable . . . . . . . . . . . . . . . . . . . . . . 53
objet . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
source . . . . . . . . . . . . . . . . . . . . . . . . . . 53
code de redondance cyclique . . . . . . . . 119
collision . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Colmar, Thomas de . . . . . . . . . . . . . . . . . 12
Common Desktop Environment . . . . . 187
commutateur . . . . . . . . . . . . . . . . . . . . . . . 123
commutation
de circuits . . . . . . . . . . . . . . . . . . . . . 124
de paquets . . . . . . 125127, 158, 159
Compaq . . . . . . . . . . . . . . . . . . . . . . . 247, 252
compilateur . . . . . . . . . . . . . . 26, 37, 38, 53,
54, 64, 78, 79, 97, 206, 208, 218,
220, 221, 223225, 227, 230232,
255, 256, 273
complment la base . . . . . . . . . . . . . . 271
composant logiciel . . . . . . . . . . . . . . . . . . 206
compteur de programme . . . . 23, 35, 240
compteur ordinal . . . . . . . 23, 35, 218, 240
Connection Machine . . . . . . . . . . . 212, 213
connexion . . . . . . . . . . . . . . . . . . . . . 154156
contexte (commutation de) . . 52, 71, 240
Control Data 6600 . . . . . . . . . . . . . . . . . 219
Control Data Corporation . . . . . . . . . . . 65
contrle de ux . . . . . . 119121, 156, 157
copie prive . . . . . . . . . . . . . . . . . . . . . . . . 160
Corbat, Fernando . 43, 44, 74, 185, 190
coupe-feu . . . . . . . 167, 168, 179182, 181
CP/67 . . . . . . . . . . . . . . . . . . . . . . . . . . 74, 231
CP/M . . . . . . . . . . . . . . . 253, 255257, 261
Cray Research . . . . . . . . . . . . . . . . . . . . . . . 65
Cray, Seymour . . . . . . . . . . . . . . . . . . 65, 219
CRC . voir code de redondance cyclique
CROCUS . . . . . . . . . . . . . . . . . . . . . . . 55, 165
cryptosystme . . . . . . . . . . . . . . . . . 169, 174
CSMA-CD . . . . . . . . . . . . . . . . . . . . . . . . . 122
CSRG, Berkeley . . . . . . . . . . 129, 195, 246
Ctsibios . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
CTSS . . . . . . . . . . . . . . . . . . . 43, 44, 74, 185
Cupertino . . . . . . . . . . . . . . . . . . . . . . . . . . 262
Cutler, David . . . . . . . . . . . . . . . . . 259, 266
cycle de processeur . . . . . . . . . . . . . . . . . 216
D
Daemen, Joan . . . . . . . . . . . . . . . . . . . . . . 169
Dalvik . . . . . . . . . . . . . . . . . . . . . . . . . 232, 261
DARPA . . . . . . . . . voir Defense Advanced
Research Projects Agency
Data Encryption Standard . . . . . 168, 169
Index
datagramme . . . . . . . . . . . . . . . . . . . 158, 180
datagramme IP . 127129, 134, 139, 140,
143145
De Forest, Lee . . . . . . . . . . . . . . . . . . . . . 277
Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
DEC . . . . . . . . . . . . voir Digital Equipment
Corporation
Defense Advanced Research Projects
Agency . 129, 195197, 204, 246
DES . . . . voir Data Encryption Standard
DHCP . . . . . . . . . . . . . . . . . . . . . . . . 143, 154
Die et Hellman, algorithme de 170174
Die, Whiteld . . . . . . . . . . . . . . . . . . . . 170
Digital Equipment Corporation . . . . . . . . .
74, 106, 117, 121, 188, 191, 195,
198, 220, 247, 252, 259, 266
Digital Research . . . . . . . . . . . . . . . 255, 256
Dijkstra, Edsger Wybe . . . 8, 54, 55, 146,
190, 192, 197
directory . . . . . voir rpertoire de chiers
disque . . . . . . . . . . . . . . . . . . . . . . . . . . . 84, 85
DLL . . . . . . voir Dynamic Link Libraries
DMZ . . . . . . . . . . . . . . . . . . . . . . . . . . 168, 181
DNS . . . . . . . . . . . . . . . . . . . . . . 139143, 140
DoD, Department of Defense amricain .
32
Donzeau-Gouge, Vronique . . . . . . . . . . 19
droit daccs . . . . . . . . . . . . . . . . . . . . . . . 164
Dynamic Link Libraries . . . . . . . . . . . . 258
E
Eckert, J. Presper . . . . . . . . . . . . . . 18, 278
dition de liens . . . . . . . 37, 53, 64, 78, 97
dynamique . . . . . . . . . . . . . . . . . . . . . . 37
EDSAC . . . . . . . . . . . . . . . . . . . . . . . . . . 18, 32
Ehresmann, Jean-Marc . . . . . . . . . . . . . . . 3
Emacs . . . . . . . . . . . . . . . . . . . . 197, 199, 206
mulateur . . . . . . . . . . . . . . . . . . . . . . . . . . 230
ENIAC . . . . . . . . . . . . . . . . . . . . . . . . . 18, 277
entres-sorties . . . . . . . . . . . . . . . . . . . . . . . 17
entropie . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
espace adresse . . . . . . . . . . . . . . . . . . . 6971
Ethernet . . . . . . . . . . . . . 117, 118, 121123
treinte fatale . . . . . . . . . . . . . . . . . . . . . . . 40
Euler, Leonhard . . . . . . . . . . . . . . . 174, 176
Eumel . . . . . . . . . . . . . . . . . . . . . . . . . 105, 247
F
factorisation . . . . . . . . . . . . . . . . . . . . . . . . 175
Fano, Robert M. . . . . . . . . . . . . . . . . . . . . 44
FAT-table . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Feistel, Horst . . . . . . . . . . . . . . . . . . 169, 170
fentre glissante, algorithme . . 120, 121,
157
287
Ferranti (ATLAS) . . . . . . . . . . . . . . . . . . . 73
FFS (Fast File System) . . . . . . . . . . . . . . 89
ltrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
ltrage par port . . . . . . . . . . . . . . . 181, 182
rewall . . . . . . . . . . . . . . . . . . . 168, 181, 182
Ford Jr, Lestor R. . . . . . . . . . . . . . . . . . . 146
France Tlcom . . . . . . . . . . . . . . . . . . . . 158
Free Software Foundation . . . . . . . . . . 199
Fulkerson, D. R. . . . . . . . . . . . . . . . . . . . . 146
G
Gates, Bill . . . . . . . . . . . . . . . . . . . . 252, 253
General Electric . . . . . . . . . . . . . . . 185, 189
General Electric GE-645 . . . . . . . . . . . . . 44
Gernelle, Franois . . . . . . . . . . . . . . . . . . 252
Gesellschaft fr Mathematik und Datenverarbeitung . . . . . . . . . . . . . . 105,
247
Ghostscript . . . . . . . . . . . . . . . . . . . . . . . . 204
gibioctet . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Gien, Michel . . . . . . . . . . . . . . . . . . . . . . . 244
GMD . voir Gesellschaft fr Mathematik
und Datenverarbeitung
Gnome . . . . . . . . . . . . . . . . . . . . . . . . 199, 263
GNU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
GnuPG . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
Gnutella . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Gdel, Kurt . . . . . . . . . . . . . . . . . . 12, 36, 58
Gosling, James . . . . . . . . . . . . . . . . . . . . . 231
Granet, Marcel . . . . . . . . . . . . . . . . . . . . . 269
Grasshoper . . . . . . . . . . . . . . . . . . . . . . . . . 105
Gressier, ric . . . . . . . . . . . . . . . . . . . . . . . . . 3
H
hachage . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
HAL . . voir Hardware Abstraction Layer
Hardware Abstraction Layer . . . . . . . . 261
hash table . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Haskell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Hellman, Martin . . . . . . . . . . . . . . . . . . . 170
Hennessy, John L. . . . . . . . . . . 11, 77, 220
Hewlett-Packard . . . . . . . . . . . . . . 220, 252
hirarchie de mmoire . . . . 58, 72, 7477
Hilbert, David . . . . . . . . . . . . . . . . . . . . . . . 12
Hillis, Daniel . . . . . . . . . . . . . . . . . . . . . . . 212
Hoare, C. Antony R. . . 54, 190, 197, 214
horloge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
Huitema, Christian . . . . . . . . . . . . . . . . . 147
Hurd . . . . . . . . . . . . . . . . . . . . . . . . . . 208, 247
I
IAB . . . voir Internet Architecture Board
IAS (Institute for Advanced Studies) . 13
288
IBM . . . . . . . . . . . . . . . . . . . . . . . 12, 106, 200
360 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
360/67 . . . . . . . . . . . . . . . . . . . . . 74, 231
701 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
704 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
709 . . . . . . . . . . . . . . . . . . . . . . . . . 43, 74
801 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
7030 . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
7090 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
7094 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Cambridge Research Lab. . . . . . . 231
centre de recherche Thomas J. Watson . . . . . . . . . . . . . . . . . . . . . . . 170,
247
PC/AT . . . . . . . . . . . . . . . . . . . . . . . . 257
PS/2 . . . . . . . . . . . . . . . . . . . . . . . . . . 258
Stretch . . . . . . . . . . . . . . . . . . . . . . . . 219
Ichbiah, Jean . . . . . . . . . . . . . . . . . . . . . . . 197
IDEA, algorithme . . . . . . . . . . . . . . . . . . 177
IEEE . . . . . . . . . . . . . . . . . . . . . 117, 121, 208
IGC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
i-liste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
infonuagique voir informatique en nuage
information . . . . . . . . . . . . . . . . . . . . . . 17, 19
(thorie de l) . . . . . . . . . . . . . 111, 112
(traitement de l) . . . . . . . . . . . . 19, 20
informatique en nuage . . . . . . . . . 238240
infrastructure de gestion de cls . . . . 178
Inmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
i-nud . . . . . . . . . . . . . . . . . . . . . . . 89, 91, 92
INRIA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
instruction . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Intel . . . . . . . . . . . . . . . . . 117, 121, 166, 258
386 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
4004 . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
8008 . . . . . . . . . . . . . . . . . . . . . . 252, 255
8080 . . . . . . . . . . . . . . . . . . . . . . 252, 255
8086 . . . . . . . . . . . . . . . . . . . . . . 256, 258
8088 . . . . . . . . . . . . . . . . . . . . . . 253, 256
80286 . . . . . . . . . . . . . . . . . . . . . 257, 258
Itanium . . . . . . . . . . . 59, 71, 166, 224
Pentium . . . . . . . . . . . . . . . . . . . . . . . . 53
Interdata 8/32 . . . . . . . . . . . . . . . . . . . . . 195
interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Internet . . . . . . . . . . . . . . . . . . 126, 127, 189
Internet Architecture Board . . . . . . . . 129
Internet Assigned Numbers Authority
(IANA) . . . . . . . . . . . . . . . . . . . 130
Internet Corporation for Assigned Names
and Numbers (ICANN) . . . 130
Internet Engineering Task Force (IETF)
129
Internet Protocol (IP) . . . . . . . . . 127154
Index
Internet Steering Group (IESG) . . . . 130
interruption . . . . . . . 4456, 218, 219, 223
imprcise . . . . . . . . . . . . . . . . . . . . . . 219
prcise . . . . . . . . . . . . . . . . . . . . . . . . . 219
intgrit . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
IP . . . . . . . . . . . . . . . voir Internet Protocol
IPSec . . . . . . . . . . . . . . . . 139, 153, 178, 260
IPv6 . . . . . . . . . . . . . . . . . . . . . . . . . . 153, 178
IRCAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
ISO voir Organisation Internationale de
Normalisation
isochronie . . . . . . . . . . . . . . . . . . . . . 125, 159
ITU . . . . . . voir Union Internationale des
Tlcommunications
J
Jacobson, Van . . . . . . . . . . . . . . . . . . . . . . 157
Jacopini, Giuseppe . . . . . . . . . . . . . . . 20, 26
Jammet, Marc . . . . . . . . . . . . . . . . . . . . . . . . 3
Java . . . . . . . . . . . . . 81, 231, 232, 261, 262
Jobs, Steve . . . . . . . 11, 123, 252, 253, 261
Joy, Bill . . . . . . . . . . . . . . . . . . . . . . . 190, 195
K
Kahn, Robert . . . . . . . . . . . . . . . . . . . . . . 129
Kaiser, Claude . . . . . . . . . . . . . . . . . . . . . . 55
Kay, Alan . . . . . . . . . . . . . . . . . . . . . 123, 253
KDE . . . . . . . . . . . . . . . . . . . . . . . . . . 199, 263
kibioctet . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Kildall, Gary . . . . . . . . . . . . . 253, 255, 257
Knuth, Donald E. . . . . . . . . 190, 197, 206
Kolmogorov, Andre Nikolaivitch . . 214
L
L3, L4 . . . . . . . . . . . . . . . . . . . . . . . . . 105, 247
Lamport, Leslie . . . . . . . . . . . . . . . . . . . . 206
LAN . . . . . . . . . . voir Local Area Network
langage machine . . . . . . . . . . . . . . . . . . . . . 16
LATEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4, 206
Lavenier, Dominique . . . . . . . . . . . . . . . 213
Lazard, Emmanuel . . . . . . . . . . . . . . . . . 277
LDAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
Leibniz, Gottfried Wilhelm von . 11, 17,
36, 282
Leridon, Henri . . . . . . . . . . . . . . . . . . . . . . 68
Licklider, J. C. R. . . . . . . . . . . . . . . . . . . . 44
Liedtke, Jochen . . . . . . . . . . . . . . . 105, 247
Lilen, Henri . . . . . . . . . . . . . . . . . . . . . . . . 252
Linux . . . 5, 53, 55, 88, 89, 106, 183, 191,
201, 204206, 207209, 263
Lions, John . . . . . . . . . . . . . . . . . . . . . . . . 207
LISP . . . . . . . . . . . . . . . . . . . . 36, 38, 81, 197
liste de contrle daccs . . . . . . . . 164, 260
Local Area Network . . . . . . . 114, 116, 117
Index
localit des traitements . . . 65, 71, 7577
logarithme . . . . . . . . . . . . . . . . . . . . . . . . . 111
discret . . . . . . . . . . . . . . . . . . . . . . . . . 173
logiciel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
libre . . . . . . . . . . . . . . . . . . . . . . 199209
Love, Robert . . . . . . . . . . . . . . . . . . . 53, 205
Lucifer (cryptosystme) . . . . . . . . . . . . 169
Lucovsky, Mark . . . . . . . . . . . . . . . . . . . . 259
M
MacCarthy, John . . . . . . . . . . . . . . . . . . . . 36
Mach . . . . . . . . . . . . . . . . . . . . . 208, 244, 261
machine
de Turing . . . . . . . . . . . . . . . . . . . 28, 29
virtuelle . . . . . . . . . . 43, 222, 254, 257
machine virtuelle . . . . . . . . . . . . . . 229240
Macintosh . . . . . . . . . . . . . . . . . . 5, 261, 262
MacOS . . . . . . . 5, 186, 258, 261263, 265
MacOS X . . . . . . . . . . . . . . . . . . . . . . . . . . 261
MacOS-X . . . . . . . . . . . . . . . . . . . . . . . . . . 247
MAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
mandataire (serveur) . . . . . . . . . . . . . . . 181
MARK 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Massachusetts Institute of Technology . .
32, 43, 74, 185, 199
Massey, James L. . . . . . . . . . . . . . . . . . . . 177
Master Boot Record . . . . . . . . . . . . . . . . . 95
Mauchly, John W. . . . . . . . . . . . . . . 18, 278
MBR . . . . . . . . . voir Master Boot Record
McKusick, Kirk . . . . . . . . . . . . . . . . . 89, 190
MD5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
mmoire . . . . . . 6, 16, 28, 5781, 283, 284
(hirarchie de) . . . . . . . 58, 72, 7477
auxiliaire . . . . . . . . . . . . . . . . 84, 8688
ROM . . . . . . . . . . . . . . . . . . . . . . . . . . 257
segmente . . . . . . . . . . . . . . . . . . 73, 257
virtuelle . . 52, 6265, 68, 7074, 257
Menabrea, Luigi . . . . . . . . . . . . . . . . . . . . . 36
menace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Merkle, Ralph . . . . . . . . . . . . . . . . . . . . . . 172
message . . . . . . . . . . . . . . . . . . . . . . . 111, 112
Metcalfe, Robert . . . . . . . . . . . . . . . . . . . 121
Meyer, Bertrand . . . . . . . . . . 197, 203, 204
MFT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
micro-code . . . . . . . . . . . . . . . 221, 222, 255
micro-noyau . . . . . . . . . . . . . . . . . . . 243249
Chorus . . . . . . . . . . . . . . . . . . . . 244246
L4 . . . . . . . . . . . . . . . . . . . 105, 247, 248
Mach . . . . . . . . . . . . . . . . . . . . . 246, 247
Ra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
microprocesseur . . . . . . . 16, 198, 202, 230
Microsoft . . . . . . . . . . . . 198, 252, 253, 258
Minix . . . . . . . . . . . . . . . . . . . . . . . . . 207, 208
MIPS . . . . . . . . . . . . . . . . . . . . . . . . . 220, 259
289
R4000 . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Miribel, Patrick de . . . . . . . . . . . . . . . . . 280
MIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
ML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Mockapetris, Paul . . . . . . . . . . . . . . . . . . 140
mode protg (Intel 80286) . . . . . . . . . 257
mode rel (Intel 80286) . . . . . . . . . . . . . 257
modle en couches . . . . . . . . . . . . . . . . . . . . 8
mbioctet . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
MONADS . . . . . . . . . . . . . . . . . . . . . . . . . . 105
mot dtat de programme . . . . 23, 24, 35,
4648, 52, 54, 62, 78, 165, 215
Motorola 68000 . . . . . . . . . . . 198, 220, 256
Motorola PowerPC . . . . . . . . . . . . . . . . . 248
Mounier-Kuhn, Pierre-ric . . . . . . . . . 197
Mozilla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
MP/M . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
MS-DOS . . . . . . . . . . . . . . . . . . 253, 257261
Multics . . . . 44, 73, 74, 87, 103, 163, 165,
185187
multithreading . . . . . . . . . . . . . . . . . . . . . . 262
N
Napster . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
NAS . . . . voir Network Attached Storage
NAT . voir Network Address Translation
National Science Foundation . . 129, 196
National Security Agency . . . . . . . . . . 169
Nemeth, Evi . . . . . . . . . . . . . . . . . . . . . . . 189
Netbios . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Netscape . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
Network Address Translation . . . . . . 132,
135139, 153
Network Attached Storage . . . . . . . 98102
Network File System . . . 98102, 99, 157
Neumann, John von . 13, 1519, 211223
Newman, Max . . . . . . . . . . . . . . . . . . . . . . . 18
NFS . . . . . . . . . voir Network File System
NNTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
Nobel, Alfred . . . . . . . . . . . . . . . . . . . . . . 190
nom de domaine . . . . . . . . . . . . . . . . . . . 140
norme IEEE 754 . . . . . . . . . . . . . . . 273276
noyau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
premptif . . . . . . . . . . . . . 53, 205, 262
NTFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
numration . . . . . . . . . . . . . . . . . . . . 269276
Nyquist, Henrik . . . . . . . . . . . . . . . . . . . . 111
O
Olsen, Ken . . . . . . . . . . . . . . . . . . . . . . . . . 252
opration
atomique . . . . . . . . . . . . . . . . . . . 53, 106
Oracle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
ordinateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
290
ordonnancement . . . . . . . . . . . . . . . . . . . . . 48
Organisation Internationale de Normalisation . . . . . . . . . . . . . . . . . . . . . . . . .
113
OS 360 . . . . . . . . . . . . . . . . . . . . . . . . 106, 265
OS/2 . . . . . . . . . . . . . . . . . . . . . . . . . . 258, 259
OS/MFT . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
OS/MVT . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
OSPF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
P
P2P . . . . . . . . . . . . . . . . . . . . voir pair pair
pagination . . . . . . . . . . . . . . . . . . . . . . . 6668
pair pair . . . . . . . . . . . . . . . . . . . . . . . . . 160
PalmOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
paquet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
PARC (Palo Alto Research Center) 121,
123, 253
Pascal . . . . . . . . . . . . . . . . . . . . . . . . . . 81, 256
Pascal, Blaise . . . . . . . . . . . . . . . . . . . . 11, 12
Patterson, David A. . . . . . . . . . 11, 77, 220
PDP . . . . . . . . . . . . . . . . . . . . . . . . . . 220, 252
PDP-1 . . . . . . . . . . . . . . . . . . . . . . . . . 74, 252
PDP-11 . . . . . . . . . . . . . . . . . . . . . . . 195, 259
peer to peer . . . . . . . . . . . . voir pair pair
Pentium . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
performance . . . . . . . . . . . . . . . . . . . . . . . . . 81
Perlman, Radia . . . . . . . . . . . . . . . . . . . . 189
persistance . . . . . . . . . . . . . . . . . . . . . . 83107
orthogonale . . . . . . . . . . . . . . . . . . . . 103
PGP . . . . . . . . . voir Pretty Good Privacy
Pick . . . . . . . . . . . . . . . . . . . . . . . 88, 103, 105
pile . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240243
pipe-line . . . . . . . . . . . . . . . . . . . . . . . 215226
PKI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
PL/1 . . . . . . . . . . . . . . . . 185, 187, 255, 256
PL/M . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
point de contrle . . . . . . . . . . . . . . 105, 106
POP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
port . . . . . . . . . . . . . . . . . . . . . . 154, 155, 180
portabilit . . . . . . . . . . . . . . . . . . . . . 187, 259
portage . . . . . . . . . . . . . . . . . . . . . . . . 187, 195
POSIX . . . . . . . . . . . . . . . . . . . . . . . . 208, 259
Postel, Jonathan B. . . . . . . . . . . . . . . . . 129
PostScript . . . . . . . . . . . . . . . . . . . . . . . . . 204
Postscript . . . . . . . . . . . . . . . . . . . . . . . . . . 254
pouvoir . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Pouzin, Louis . . . . . . . . . . . . . . . . . . . . . . . 43
PPP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Pretty Good Privacy . . . . . . . . . . . . . . . . 176
primitive . . . . . . . . . . . . . . . . . . . . . . . . . . . 6, 7
privilge . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
probabilit . . . . . . . . . . . . . . . . . . . . . . . . . 111
procdure eective . . . . . . . . . . . . 7, 27, 28
Index
processeur . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
processus . . . . . . . . . . . . 34, 35, 3856, 240
programmation par vnements . . . . 258
programme . . . . . . . . . . . . 6, 3250, 52, 54
projet MAC . . . . . . . . . . . . . . . . 44, 74, 185
protection . . . . . . . . . . . . . . . . . . . . . 163166
protocole . . . . . . . . . . . . . . . . . . . . . . 115, 126
ARP . . . . . . . . . . . . . . . . . . . . . . . . . . 144
protocoles de communication . . . . . . . . . 9
proxy server . . . . . . . . . . . . . . . . . . . . . . . . 181
pseudo-simultanit . . . . . . . . . . . . . . . . . 33
PSW . . . . voir mot dtat de programme
Q
Queinnec, Christian . . . . . . 1, 3, 191, 265
R
Raymond, F.H. . . . . . . . . . . . . . . . . . . . . . . 74
RCA Spectra 70 . . . . . . . . . . . . . . . . . . . . 200
RedHat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
rentrant (programme) . . . . . . . . 243, 259
registre . . . . . . . . . . . . . 16, 21, 75, 240, 243
registre de base . . . . . . . . . . . . . . . . . . . . . . 25
rimplantation . . . . . . . . . . . . . . . . . . . . . . 64
Rejewski, Marian . . . . . . . . . . . . . . . . . . . 169
Remote Procedure Call . . . . . . . . . 99, 157
Rnyi, Alfred . . . . . . . . . . . . . . . . . . . . . . . 278
rpertoire de chiers . . . . . . . . . . . . . . . . . 91
rpteur . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
reprise sur point de contrle . . . . . . . . 105
reprsentation des nombres . . . . . . . . . 271
rseau . . . . . . . . . . . . . . . . . . . . . . . . . 109162
Rseau Acadmique Parisien . . . . . . . 123
RFC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
791 . . . . . . . . . . . . . . . . . . . . . . . 132134
822 . . . . . . . . . . . . . . . . . . . . . . . 128, 140
1034 . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
1035 . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
2373 . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
Rijmen, Vincent . . . . . . . . . . . . . . . . . . . . 169
Rijndael (algorithme) . . . . . . . . . . . . . . 169
RIP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
RISC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
risque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Ritchie, Dennis M. . . . 187, 189, 190, 195
Rivest, Ronald . . . . . . . . . . . . . . . . 174, 178
Roberts, Ed . . . . . . . . . . . . . . . . . . . . . . . . 252
Rochester, Nathaniel . . . . . . . . . . . . . . . . 32
Rockwell 6502 . . . . . . . . . . . . . . . . . . . . . . 252
roll in-roll out . . . . . . . . . . . . . . . . . . . . . . 106
routage
dynamique . . . . . . . . . . . . . . . . . . . . 145
statique . . . . . . . . . . . . . . . . . . . . . . . 145
table de . . . . . . . . . . . . . . 126, 143, 144
Index
routeur 117, 118, 127, 130, 132, 134, 143,
144, 145154, 146, 147, 153, 157
RPC . . . . . . . voir Remote Procedure Call
RSA, algorithme . . . . . . . . . . 174176, 177
RSX-11M . . . . . . . . . . . . . . . . . . . . . 188, 259
RTFM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
Russinovich, M.E. . . . . . . . . . . . . . 260, 266
S
Sabrier, Dominique . . . . . . . . . . . . . . 3, 265
SAN . . . . . . . . voir Storage Area Network
Scheme . . . . . . . . . . . . . . . . 38, 81, 230, 232
Schickard, Wilhelm . . . . . . . . . . . . . . . . . . 12
SEA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
section critique . . . . . . . . . . 5156, 52, 262
segment TCP . . . . . . . . . . . . . . . . . . . . . . 143
smaphore . . . . . . . . . . . . . . . . . . . . . . . 54, 55
Semi-conducteurs . . . . . . . . . . . . . . . . . . 277
Sendmail . . . . . . . . . . . . . . . . . . . . . . 183, 206
Serrano, Manuel . . . . . . . . . . . . . . . . . 3, 202
SGBD . . . . . . . . . . . . . . . . . . . . . . 87, 88, 103
SGBDR . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
SGDO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Shamir, Adi . . . . . . . . . . . . . . . . . . . . . . . . 174
Shannon, Claude . . . . . . . . . . . . . . 111, 112
shell . . . . . . . . . . . . . . . . . . . 43, 44, 185, 192
Shugart, Alan . . . . . . . . . . . . . . . . . . . . . . 255
signature . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Silicon Graphics . . . . . . . . . . . . . . . . . . . . 106
Singh, Simon . . . . . . . . . . . . . . . . . . . . . . . 168
Sites, Richard L. . . . . . . . . . . . . . . . . . . . 220
Slackware . . . . . . . . . . . . . . . . . . . . . . . . . . 209
Smalltalk . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
smartphone . . . . . . . . . . . . . . . . . . . . . . . . 261
SMTP . . . . . . . . . . . . . . . . . . . . . . . . . 140, 154
socket . . . . . . . . . . . . . . . . . . . . 155, 180, 198
Solaris . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
Solid-State Drive . . . . . . . . . . . . . . . . . . . . 86
Solomon, D.A. . . . . . . . . . . . . . . . . . 260, 266
somme de contrle . . . . . . . . . . . . . . . . . 119
SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
SSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
SSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
Stallman, Richard M. . . . . . . . . . . 199, 208
Stibitz, George R. . . . . . . . . . . . . . 112, 278
Storage Area Network . . . . . . . . . . . 98102
Sun Microsystems . . . 195, 198, 220, 231,
232, 244
switch . . . . . . . . . . . . . . . voir commutateur
synchronisation de processus . 44, 47, 51
System i . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
systme
de Gestion de Bases de Donnes 87,
88, 100, 103
291
de Gestion de Bases de Donnes Relationnelles . . . . . . . . . . . . . . . . . . . .
104
de Gestion de Donnes Objet . . 104
dexploitation . . . . . . . . . . . . . 6, 3856
distribu . . . . . . . . . . . . . . . . . . . . . . . 110
premptif . . . . . . . . . . . . . 50, 259, 262
systme de chiers . . . . . . . . . . . . . . 88107
ADVFS . . . . . . . . . . . . . . . . . . . . . . . 106
EXT2 . . . . . . . . . . . . . . . . . . . . . . . . . . 89
EXT3 . . . . . . . . . . . . . . . . . . . . . . . . . 106
FFS . . . . . . . . . . . . . . . . . . . . . . . 89, 198
JFS . . . . . . . . . . . . . . . . . . . . . . . . 92, 106
journalis . . . . . . . . . . . . . . . . . . . . . . 106
NTFS . . . . . . . . . . . . . . . . . . . . . . 89, 260
Reiserfs . . . . . . . . . . . . . . . . . . . . 92, 106
UFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
VFAT . . . . . . . . . . . . . . . . . . . . . . . . . . 89
VFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
XFS . . . . . . . . . . . . . . . . . . . . . . . 92, 106
T
table des symboles . . . . . . . . . . . . . . . . . . 26
tablette . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
Tanenbaum, Andrew . . 35, 207, 244, 260
TCP . . . . . . . . . . . . . . . . . . . . . . . . . . 154157
temps partag . . . . . . . . . . . . . . . . . . 43, 231
TEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4, 206
Thinking Machines Corporation 212, 213
Thompson, Kenneth . 187, 189, 190, 195
thread . . . . . . 231, 232, 240247, 260, 262
TLB (Translation Lookaside Buer) 71,
72, 220, 240, 248
token ring . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Torvalds, Linus . . . . . . . . . . . . . . . . 205, 208
trame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
transaction . . . . . . . . . . . . . . . . . . . . . . . . . 106
transistor . . . . . . . . . . . . . . . . . . . . . . . . . . 277
translation de programme . . . . . . . . 63, 64
Transpac . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
Transputer . . . . . . . . . . . . . . . . . . . . . . . . . 213
TRS-80 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
Tru64 Unix . . . . . . . . . . . . . . . . . . . . . . . . 247
Truong Trong Thi, Andr . . . . . . . . . . 252
Turing, Alan 12, 18, 28, 36, 58, 168, 169
U
UDP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
UFS (Unix File System) . . . . . . . . . . . . . 89
UIT . . . . . . voir Union Internationale des
Tlcommunications
Ultrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
UML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
292
Union Internationale des Tlcommunications . . . . . . . . . . . . . . . . . . . . . . . . . .
158
Unisys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
UNIVAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Univac . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Universit Carnegie-Mellon . . . 106, 183,
244, 246, 247
Universit catholique de Leuven . . . . 169
Universit de Bielefeld . . . . . . . . . 105, 247
Universit de Californie, Berkeley . . 129,
195, 196, 198, 200, 220, 246
Universit de Karlsruhe . . . . . . . . . . . . 247
Universit dUtah . . . . . . . . . 123, 247, 253
Universit Stanford . . . . . . . . . . . . 123, 220
Unix . 43, 88, 89, 186, 187199, 200, 201,
206, 207209, 252, 265
BSD . . . . . . . . . . . . . . . . . 195, 198, 261
System V . . . . . . . . . . . . . . . . . 195, 198
URL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
USENIX . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
V
variable . . . . . . . . . . . . . . . . . . . . . . 28, 60, 61
VAX . . . . . . . . . . . . 166, 188, 191, 220, 259
VAX 11/780 . . . . . . . . . . . . . . . . . . . . . . . 195
vecteur dtat . . . . . . . . . . . . . . . . . . . . 78, 79
VFS (Virtual File System) . . . . . . . . . . . 89
virgule xe . . . . . . . . . . . . . . . . . . . . . . . . . 271
virgule ottante . . . . . . . . . . . . . . . . . . . . 274
virtualisation . . . . . . . . . . . . . . . . . . 229240
Visicalc . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
VM/CMS . . . . . . . . . . . . . . . . . . . . . . . . . . 244
VMS . . . . . . . . . . . . . . . . 188, 197, 259, 260
VMware Inc. . . . . . . . . . . . . . . . . . . . . . . . 230
Volle, Michel 3, 8, 111, 201, 252, 264, 265
VPN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
VTOC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
vulnrabilit . . . . . . . . . . . . . . . . . . . . . . . 167
VXLAN (Virtual eXtensible Local Area
Network) . . . . . . . . . . . . . . . . . . 238
W
WAN . . . . . . . . . voir Wide Area Network
Wang Laboratories . . . . . . . . . . . . . . . . . 254
Wang, An . . . . . . . . . . . . . . . . . . . 32, 84, 254
Wharton, John . . . . . . . . . . . . . . . . . . . . . 257
Wide Area Network . . . . . . . . . . . 114, 117
Wilkes, Maurice V. . . . . . . . . . 18, 32, 190
Windows . . 5, 89, 186, 198, 257261, 258
98 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
2000 . . . . . . . . . . . . . . . . . . . 51, 89, 201
NT . . . . . . . . . . . . . . . . . . . . . . . . 51, 257
XP . . . . . . . . . . . . . . . . . . . . . . . . 51, 260
Index
Windows 2000 . . . . . . . . . . . . . . . . . 260, 261
Windows NT . . . . . . . . . . . . . . . . . . 258260
Wittgenstein, Ludwig . . . . . . . . . . . . . . 110
Wozniak, Steve . . . . . . . . . . . . . . . . . 11, 252
X
X (systme de fentrage) . 199, 201, 206,
258
X500, norme ISO . . . . . . . . . . . . . . . . . . . 179
X509, norme ISO . . . . . . . . . . . . . . . . . . . 179
Xenix . . . . . . . . . . . . . . . . . . . . . . . . . 198, 263
Xerox . . . . . . . . . . . 117, 121, 123, 199, 253
Xfce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
Xuejia Lai . . . . . . . . . . . . . . . . . . . . . . . . . 177
Z
Zilog Z80 . . . . . . . . . . . . . . . . . . . . . . 253,
Zimmerman, Hubert . . . . . . . . . . . 113,
Zimmerman, Philip . . . . . . . . . . . . . . . . .
Zuse, Konrad . . . . . . . . . . . . . . . . . . . . . . .
Zwicky, Elizabeth . . . . . . . . . . . . . . . . . .
256
244
176
278
189
Bibliographie
[1]
[2]
Mike Acetta, Robert Baron, William Bolosky, David Golub, Richard Rashid,
Avadis Tevanian, and Michael Young. Mach : A New Kernel Foundation for UNIX
Development . In Proceedings of the Summer 1986 USENIX Conference, 1986.
[3]
Alfred V. Aho, Ravi Sethi, and J.D. Ullman. Compilers : Principles, Techniques,
and Tools. Addison-Wesley, Reading, Massachusetts, 1986. Traduction franaise : Interditions, Paris, 1989.
Une rfrence classique ; les techniques de compilation ont volu depuis son criture ;
cet ouvrage reste nanmoins une introduction presque oblige.
[4]
[5]
Franois Armand, Michel Gien, Frdric Herrmann, and Marc Rozier. Unix et
la rpartition : retour la simplicit originelle ? . In Actes de la Convention UNIX90,
1990.
[6]
C. Gordon Bell and Allen Newell. Computer Structures : Reading and Examples.
McGraw-Hill, New York, 1971.
[7]
[8]
[9]
[10] Corrado Bhm and Giuseppe Jacopini. Flow Diagrams, Turing Machines And
Languages With Only Two Formation Rules . Communications of the ACM (CACM),
vol. 9 no 5, May 1966.
[11] Samia Bouzefrane. Les systmes dexploitation : cours et exercices corrigs Unix,
Linux et Windows XP avec C et JAVA. Dunod, Paris, 2003.
294
BIBLIOGRAPHIE
Les systmes dexploitation constituent un domaine si complexe que de multiples approches ne lpuisent pas. Il faut donc lire plusieurs livres, et notamment celui-ci. Louvrage de Samia Bouzefrane conjugue une approche conceptuelle rigoureuse et systmatique, indispensable pour qui veut y voir clair, des exemples et des exercices corrigs
trs concrets que le lecteur pourra tester sur son ordinateur.
[12] Daniel P. Bovet and Marco Cesati. Le noyau Linux. OReilly, Paris, 2001 (pour la
traduction franaise).
Pour qui veut savoir vraiment comment fonctionne notre systme dexploitation prfr,
et en outre beaucoup de dtails intimes sur la vie des ordinateurs (notamment les
processeurs Intel).
[13] Frederick P. Brooks, Jr. The Mythical Man-Month. Addison-Wesley, Reading, Massachusetts, 1975.
Sil faut neuf mois une femme pour faire un enfant, deux femmes ne peuvent pas
y arriver en quatre mois et demie. Au-del du rappel au bon sens dont bien des managers ont vraiment besoin, Brooks, qui fut le concepteur principal de lOS/360, jette
un regard (auto-)critique sur la plus ambitieuse entreprise dingnierie des cinquante
dernires annes : lcriture des systmes dexploitation.
[14] Franck Cappello. P2P : Dveloppements rcents et perspectives . In 6mes journes
rseau JRES, 2005. En ligne ici : http://2005.jres.org/slides/152.pdf.
[15] Rmy Card, ric Dumas, and Franck Mvel. Programmation Linux 2.0. Eyrolles,
Paris, 1998.
Une description dtaille de lincarnation dun systme dexploitation pour qui veut
participer son dveloppement ou simplement le comprendre.
[16] Patrick Cegielski. Conception de systmes dexploitation Le cas Linux. Eyrolles,
Paris, 2003.
Une analyse dtaille de Linux, avec un commentaire juxtalinaire du code source du
noyau. Dans la grande tradition de John Lions et Andrew Tanenbaum, un livre bien
sr indispensable.
[17] Marie Coris. Impact des logiciels libres sur lindustrie du logiciel : vers un nouveau
modle productif ? . In Roland Dirlewanger, editor, Actes du congrs JRES, 2001.
[18] Thomas Cormen, Charles Leiserson, Ronald Rivest, and Cliord Stein. Introduction lalgorithmique. Dunod (pour la traduction franaise), Paris, 2002.
Une somme dune compltude impressionnante ; si les exposs mathmatiques des algorithmes sont dune grande clart, le passage la programmation (en pseudo-code) est
souvent dicile.
[19] CROCUS. Systmes dexploitation des ordinateurs. Dunod, Paris, 1975.
Cet ouvrage collectif, quoique assez ancien, conserve un intrt certain par sa rigueur
dans lintroduction des concepts et du vocabulaire, et en a acquis un nouveau, de
caractre historique, par la description de systmes aujourdhui disparus.
[20] Jerey Dean. Large-Scale Distributed Systems at Google : Current Systems and
Future Directions . In ACM SIGOPS, editor, Large Scale Distributed Systems and
Middleware (LADIS), 2009. http://www.sigops.org/sosp/sosp09/ladis.html.
[21] Alan Dearle and David Hulse. Operating system support for persistent systems :
past, present and future . Software Practice and Experience, 30 :295324, 2000.
[22] Harvey M. Deitel. An Introduction to Operating Systems. Addison-Wesley, Reading,
Massachusetts, 1984.
Ce livre est surtout prcieux pour ses tudes de cas et ses analyses comparatives des
systmes qui prcdent lavnement des processeurs RISC.
BIBLIOGRAPHIE
295
[23] Edsger Wybe Dijkstra. The structure of the THE multiprogramming system .
Communications of the ACM (CACM), vol. 11 no 5, May 1968. http://www.acm.org/
classics/mar96/.
[24] Gilles Dubertret. Initiation la cryptographie. Vuibert, Paris, 2002.
[25] Albert Ducrocq and Andr Warusfel. Les mathmatiques Plaisir et ncessit.
Vuibert, Paris, 2000.
Plaidoyer pour une discipline malmene, au moyen de nombreux exemples historiques
et modernes auxquels lrudition et le talent de vulgarisateurs des auteurs confrent un
rythme trpidant et passionnant.
[26] Kjeld Borch Egevang and Paul Francis. RFC 1631 The IP Network Address
Translator (NAT) . Technical Report, IETF, Mai 1994. http://www.ietf.org/rfc/
rfc3022.txt.
[27] D.A. Fairclough. A unique microprocessor instruction set . IEEE Micro, May
1982.
[28] Gustave Flaubert. Bouvard et Pcuchet. Le Seuil, Paris, [1857].
[29] Kurt Gdel and Jean-Yves Girard. Le thorme de Gdel. ditions Le Seuil, Paris,
1989.
[30] Herman H. Goldstine. The Computer from Pascal to von Neumann. Princeton
University Press, Princeton, NJ, 1972.
[31] John L. Hennessy and David A. Patterson. Computer architecture : a quantitative
approach. Morgan Kaufman Publishers, San Mateo, Calif., USA, 1996.
Ce livre donne la description de larchitecture des ordinateurs une ampleur intellectuelle que peu souponnaient. En annexe, une bonne introduction la reprsentation
des nombres (norme IEEE 754 notamment).
[32] C. Antony R. Hoare. Monitors : An Operating System Structuring Concept .
Communications of the ACM (CACM), vol. 17 no 10, octobre 1974. http://www.acm.
org/classics/feb96/.
[33] Andrew Hodges. Alan Turing : the enigma (Alan Turing : lnigme de lintelligence).
Simon and Schuster (Payot, Paris pour la traduction), New-York, USA, 1983.
[34] Antony Hosking and Quintin Cutts. Special issue : persistent object systems .
Software Practice and Experience, 30-4, 2000.
[35] Christian Huitema. Routing in the Internet. Prentice Hall, Upper Saddle River, NJ,
USA, 2000.
[36] Intel Corp.. Intel IA-64 Architecture Software Developers Manual. Intel Corp., Santa
Clara, Calif., USA, 2001.
Quatre pais volumes, plus de 2000 pages, tlchargeables en PDF sur le site dIntel.
[37] Donald E. Knuth. The Art of Computer Programming. Addison-Wesley, Reading,
Massachusetts, 1997 [1968]. 3 vol.
Encyclopdie inacheve des sciences formelles de linformatique, une mine encore
exploiter.
[38] Sacha Krakowiak. Principes des systmes dexploitation des ordinateurs. Dunod,
Paris, 1987.
Par un des auteurs du CROCUS, ce livre en est une suite ou une mise jour, avec les
mmes qualits appliques dautres objets.
296
BIBLIOGRAPHIE
[39] Julia Kristeva. Le Langage, cet inconnu - Une initiation la linguistique. Le Seuil,
Paris, 1981 [1969].
Un tour dhorizon complet et accessible de la linguistique et de son histoire. Des proximits surprenantes avec linformatique.
[40] Emmanuel Lazard. Pratique performante du langage C. Ellipses, Paris, 2013. Une
approche systmatique et qui nvite pas les dicults, pour un langage qui nen manque
pas.
[41] Emmanuel Lazard, Paolo Zanella, and Yves Ligier. Architecture et technologie
des ordinateurs. Dunod, Paris, 2013. Un tour complet et approfondi des questions
techniques, jour des dvelopements rcents.
[42] Josh Lerner and Jean Tirole. The Simple Economics of Open Source . National
Bureau of Economic Research, 2000. http://www.people.hbs.edu/jlerner/simple.
pdf.
[43] Jochen Liedtke. On -Kernel Construction . In Proceedings of the 15th ACM
Symposium on Operating System Principles, 1995.
[44] Henri Lilen. La saga du micro-ordinateur. Vuibert, Paris, 2003.
Le titre de ce livre est vraiment mrit : passionnant et passionn, illustr de documents
parfois indits, il rend notamment justice aux prcurseurs franais de cette industrie et
claire le processus de dcision au sein de grandes entreprises industrielles.
[45] John Lions. Lions Commentary on Unix 6th Edition. Peer-to-Peer Communications,
Menlo Park, Calif., 1996.
Ce livre lgendaire et longtemps clandestin parce quil comportait le code source du
noyau Unix, proprit dAT&T, mrite toujours dtre lu, mme si Unix a volu.
[46] Keith Loepere. Mach 3 Kernel Principles. Open Software Foundation, Boston, 1991.
[47] Marhall Kirk McKusick, Keith Bostic, Michael J. Karels, and John S. Quarterman. The Design and Implementation of the 4.4 BSD Operating System. AddisonWesley (Vuibert pour la traduction franaise), Reading, Massachusetts, 1996.
Le clbre Daemon Book que tout utilisateur de Unix devrait lire.
[48] Alfred J. Menezes, Paul C. van Oorschot, and Scott A. Vanstone. Handbook of
Applied Cryptography. CRC Press, Boca Raton, Floride, tats-Unis, 1997.
Une introduction complte au sujet, disponible en consultation sur le WWW : http:
//www.cacr.math.uwaterloo.ca/hac/.
[49] Bertrand Meyer. The Ethics of Free Software . Software Development Magazine,
mars 2000. http://www.sdmagazine.com/.
[50] Bertrand Meyer and Claude Baudoin. Mthodes de programmation. Eyrolles, Paris,
1984.
Une approche certes date par le style, mais on y trouvera un expos incisif des problmes toujours au cur de linformatique.
[51] MicroDesign Resources, editor. Microprocessor Report. Cahners Electronics Group,
Sunnyvale, Calif., 1987-.
La revue mensuelle avec dition hebdomadaire sur le WWW : http://www.mpronline.
com/mpr/index.html du micro-processeur et de ses volutions techniques et industrielles. Informe, comptente, beaucoup de dtail technique expos avec clart.
[52] Patrick de Miribel. Principes des ordinateurs. Dunod, Paris, 1975.
Ce livre dinitiation comporte quelques-unes de ces intuitions pdagogiques qui font
comprendre une fois pour toutes une question dicile, comme le fonctionnement des
circuits lectroniques et des ordinateurs.
BIBLIOGRAPHIE
297
298
BIBLIOGRAPHIE
BIBLIOGRAPHIE
299