You are on page 1of 307

Les systmes dexploitation des

ordinateurs
Histoire, fonctionnement, enjeux

Laurent Bloch
2 dcembre 2013

copyright ditions Vuibert et Laurent Bloch 2003-2013

Table des matires

Table des matires

iii

Prface de Christian Queinnec

Avant-propos

1 Prsentation des personnages


1.1 Mondanit des systmes . . . . . . . . . .
1.2 Quelques dnitions . . . . . . . . . . . .
1.3 La couche visible du systme . . . . . . .
1.4 Une reprsentation : le modle en couches
1.5 Linformatique est (aussi) une science . .
1.6 Architectures . . . . . . . . . . . . . . . .
1.7 Enjeux dune histoire . . . . . . . . . . . .

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

5
5
6
7
8
9
11
11

2 Principe de fonctionnement de lordinateur


2.1 Modle de lordinateur . . . . . . . . . . . . .
2.2 Traitement de linformation . . . . . . . . . .
2.3 Mmoire et action, donnes et programme . .
2.4 quoi ressemble le langage machine ? . . . .
2.4.1 Premier programme . . . . . . . . . .
2.4.2 Questions sur le programme . . . . . .
2.5 Mot dtat de programme (PSW) . . . . . . .
2.6 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 . . . . . . . .
2.7 Comment cela dmarre-t-il ? . . . . . . . . . .
2.8 Quel est le rle de la mmoire ? . . . . . . . .
2.9 La machine de Turing . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

15
15
19
20
21
21
23
23
24
24
25
25
26
26
27
28

3 Du systme dexploitation au processus


3.1 Premiers essais . . . . . . . . . . . . . .
3.2 Simultanit et multiprogrammation . .
3.2.1 Chronologie dune entre-sortie .
3.3 Notion de processus . . . . . . . . . . .
3.4 Rication du calcul . . . . . . . . . . .

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

31
32
33
34
34
36

.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

iv

TABLE DES MATIRES


3.5
3.6
3.7
3.8

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

TABLE DES MATIRES

4.7

4.6.1 Cache mmoire . . . . . . . . . . . . . . . . . . . .


4.6.2 Hirarchie de mmoire : donnes numriques 2009
4.6.3 Mise en uvre du cache . . . . . . . . . . . . . . .
Langage et mmoire . . . . . . . . . . . . . . . . . . . . .
4.7.1 Langages mmoire statique . . . . . . . . . . . .
4.7.2 Vecteur dtat dun programme . . . . . . . . . . .
4.7.3 Langages mmoire dynamique . . . . . . . . . .

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

TABLE DES MATIRES


6.7
6.8
6.9

Les tlphonistes contre-attaquent : ATM . . .


Clientserveur ou pair pair (peer to peer) ? . .
Versatilit des protocoles pair pair . . . . . .
6.9.1 Dnition et usage du pair pair . . . .
6.9.2 Problmes rsoudre par le pair pair

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

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

Multics Unix et au logiciel libre


Un chec plein davenir . . . . . . . . . . .
O lon commence rver Unix . . . . .
Les hommes dUnix . . . . . . . . . . . . .
Introduction la dmarche unixienne . . .
Dissmination dUnix . . . . . . . . . . .
8.5.1 Un systme exigeant . . . . . . . .
8.5.2 Naissance dune communaut . . .
8.5.3 Le schisme . . . . . . . . . . . . .
8.6 Aux sources du logiciel libre . . . . . . . .
8.6.1 Principes . . . . . . . . . . . . . .
8.6.2 Prhistoire . . . . . . . . . . . . .
8.6.3 Prcurseurs . . . . . . . . . . . . .
8.6.4 conomie du logiciel . . . . . . . .
8.6.5 Modle du logiciel libre . . . . . .
8.6.6 Une autre faon de faire du logiciel
8.6.7 Linux . . . . . . . . . . . . . . . .

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

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

9 Au-del du modle de von Neumann


9.1 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)
9.2 Architectures rformistes . . . . . . . . . . . . . . . .
9.2.1 Squence dexcution dune instruction . . . .
9.2.2 Le pipe-line . . . . . . . . . . . . . . . . . . .
9.2.3 RISC, CISC et pipe-line . . . . . . . . . . . .
9.2.4 Micro-code : le retour . . . . . . . . . . . . .
9.2.5 Super-scalaire . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

211
212
212
212
213
214
214
215
219
221
222

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

TABLE DES MATIRES


9.2.6

vii

Architecture VLIW (Very Long Instruction Word) . . . . . . 223

10 Machines virtuelles et micro-noyaux


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 .
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 . . . . . . . . . . .
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
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

TABLE DES MATIRES


A.5.2 Principe de reprsentation . . . . . . . . . . . . . . . . . . . . 273
A.5.3 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275

B Semi-conducteurs et circuits logiques


B.1 Transistor . . . . . . . . . . . . . . . .
B.2 Algbre de Boole . . . . . . . . . . . .
B.3 Ralisation des oprations boolennes
B.3.1 Circuit NON . . . . . . . . . .
B.3.2 Circuit OU . . . . . . . . . . .
B.3.3 Circuit ET . . . . . . . . . . .
B.3.4 Compltude de cette ralisation
B.4 Construction de larithmtique . . . .
B.5 Construction de la mmoire . . . . . .

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

277
277
278
280
280
280
280
281
281
283

Index

285

Bibliographie

293

Prface
de Christian Queinnec
Professeur lUniversit Pierre et Marie Curie

Pourquoi linformatique est-elle si complique ? Jentends, je lis, souvent,


cette question. Elle dnote la fois une incomprhension de ce que recouvre rellement linformatique (manipuler une feuille de calcul dans un tableur ressortit-il
linformatique ?), un eroi devant une rvlation a priori dplaisante (linformatique est complexe) enn, un dcouragement devant leort suppos immense quil
faudrait dployer pour dominer cette science.
Si lon reprend les termes de cette question en les adaptant aux mathmatiques,
son inanit saute aux yeux car qui sexclamerait pourquoi les mathmatiques sontelles si compliques ? . Il est de notorit publique que les mathmatiques sont
compliques : un long apprentissage, comptant de nombreuses annes dtude et
accompagn dun discours appropri, nous en ont nalement persuads. Tapoter une
calculette, nous en sommes srs, ne sapparente pas faire des mathmatiques et se
tromper dans les touches nest pas vcu comme une insusance en mathmatiques.
Reprenons encore les termes pour les adapter la mcanique, pourquoi la
mcanique est-elle si complique ? pourrait sexclamer un automobiliste immobilis
le long dune autoroute. Il a encore (pour quelques annes seulement) la possibilit
douvrir le capot de sa voiture et de contempler la belle ordonnance de ls, de tuyaux
et de pices mtalliques qui autrefois fonctionnaient lorsquil mettait le contact. Mais,
fort heureusement pour lui, existent des garagistes et des mcaniciens qui pourront
remettre en tat sa voiture. Notre automobiliste naura plus que le got amer de
largent dpens sans savoir pourquoi cela ne marchait plus ni pourquoi cela remarche. Notons que, dans ce cas, recourir un professeur duniversit en mcanique
na que peu de chances dtre fructueux : lcart entre la science mcanique et la
technique tant par trop grand.
Conduire nest pas faire de la mcanique pas plus que mettre en gras un titre
nest faire de linformatique . En revanche, dceler un bruit bizarre en roulant et
lattribuer aux pneus ou au moteur, la direction ou au freinage, aide le diagnostic
du mcanicien. Dceler si un dysfonctionnement provient de lachage ou du rseau,
dun disque ou de lordonnancement facilite, de mme, le diagnostic. Encore faut-il,
tout comme en mcanique, connatre les grandes fonctions et leurs relations, savoir
ouvrir le capot et nommer les lments dcouverts. Cest ce but que sert louvrage
de Laurent Bloch.
Linformatique ne se rduit pas un ordinateur, ni mme aux logiciels qui
lquipent. Un ordinateur a une structure physique (unit centrale, priphriques,
etc.), il est anim par un systme dexploitation qui, lui mme, est structur (or-

Prface

donnancement, systme de chiers, rseaux, etc.) et sert de support de multiples


applications. Cette structure et son histoire, la lente maturation des concepts et
leur volution sous la pression des connaissances, des dsirs et de la mercatique sont
excellemment narres dans ce livre.
Ce livre est excellent et constitue une remarquable introduction linformatique,
science de labstrait, par le biais dun de ses produits les plus immatriels mais
des plus rpandus : les systmes dexploitation. Jen recommande la lecture tout
utilisateur conscient et curieux car sa future libert, en tant que simple utilisateur de
linformatique, dpend en grande partie de sa capacit comprendre les enjeux des
batailles politiques qui, en ce moment, font rage. Et si le lecteur de cette prface se
demande pourquoi la libert intervient dans ce qui nest quune matire technique,
nous linvitons derechef se plonger dans cet ouvrage.

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.

Chapitre 1 Prsentation des personnages

Sommaire
1.1
1.2
1.3
1.4
1.5
1.6
1.7

Mondanit des systmes . . . . . . . . . .


Quelques dnitions . . . . . . . . . . . .
La couche visible du systme . . . . . . .
Une reprsentation : le modle en couches
Linformatique est (aussi) une science . .
Architectures . . . . . . . . . . . . . . . .
Enjeux dune histoire . . . . . . . . . . .

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

. 5
. 6
. 7
. 8
. 9
. 11
. 11

1.1 Mondanit des systmes


Aujourdhui chacun a entendu parler de Windows, peut-tre moins de MacOS
(le systme du Macintosh), et chaque jour un peu plus de Linux, grce auquel lauteur confectionne les lignes que vous avez sous les yeux. Ces entits quotidiennes
sappellent des systmes dexploitation. Bon gr mal gr, une proportion de plus en
plus grande des personnes actives dans toutes sortes de domaines doivent acqurir
une certaine familiarit avec celui qui anime leur ordinateur an de pouvoir faire
leur travail, et cette acquisition ne va pas sans perte de temps, agacement, colre,
sourance, mais aussi quand mme joie et dcouvertes merveilles.
Le prsent ouvrage se propose dapporter, au gr dun voyage dans lhistoire de
linformatique, quelques claircissements sur les systmes dexploitation un lecteur
qui ainsi devrait se sentir moins dsarm face eux, et de ce fait plus enclin
la srnit face ce que, souvent, il pense tre leurs caprices. Il prsente quelques
aspects de leur nature, de leur naissance et de leur histoire, et cherche clairer,
sous langle obtenu de ce point de vue, lvolution et le rle dans notre socit de
linformatique et des ordinateurs auxquels elle est indissolublement lie.
Ce livre nest pas un ouvrage technique sur les systmes dexploitation, il
sadresse au lecteur curieux dhistoire des sciences, des techniques et plus gnralement de la vie intellectuelle, ainsi quau simple utilisateur dordinateur dsireux
de comprendre un peu mieux lorigine des dicults mais aussi, nous lesprons,
des joies que lui procure cette extraordinaire machine. En fait, ce livre pourra aussi
clairer linformaticien dont la spcialit nest pas le systme dexploitation, au sens
suivant : un livre destin de futurs ingnieurs en systme devra viser une couverture
complte des questions abordes ; au chapitre consacr par exemple aux algorithmes
dordonnancement de processus, il devra dcrire toutes les solutions possibles en
donnant les dtails ncessaires leur ralisation ; mon propos ici est autre, il sagit
seulement de faire comprendre la problmatique de ces algorithmes, en en exposant

Prsentation des personnages

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.

1.2 Quelques dnitions


Un systme dexploitation est un logiciel destin faciliter lutilisation dun ordinateur (je sais que cette assertion sera pour certains lecteurs une vritable provocation). Lordinateur constitue le matriel compos de ls, circuits, etc., inutilisable
sans le logiciel constitu de programmes. Les ordinateurs actuels sont susamment
complexes pour quil soit inconcevable de les utiliser sans la mdiation dun systme dexploitation, mais ce na pas toujours t le cas, et dailleurs certains petits
ordinateurs qui vivent cachs bord des fours microondes, des ascenseurs, des
baladeurs ou des avions en sont parfois encore dpourvus.
Nous dirons quun ordinateur est un automate capable deectuer des actions
dites primitives (cest--dire dtermines par ses concepteurs, et que nous nommerons dsormais primitives tout court), de les enchaner dans lordre voulu, de
les rpter et surtout de choisir, en fonction du rsultat des actions prcdentes, la
prochaine action eectuer entre deux ou plusieurs possibilits connues lavance.
Un programme est un texte qui numre, dans le bon ordre, les primitives de
lordinateur dont lexcution mnera la production du rsultat recherch. Cest le
texte du programme qui pilote la squence des actions eectues par lordinateur. Un
logiciel est un ensemble de programmes. Un systme dexploitation est un programme
dont la fonction principale est de dclencher lexcution dautres programmes, bon
escient de prfrence.
Nous pouvons aussi dire les choses de la faon suivante : un ordinateur est une
machine qui a des tats discrets. Ces tats sont enregistrs dans un dispositif appel
mmoire. Rdiger un programme pour un ordinateur, cest dcrire la squence de

La couche visible du systme

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.

1.3 La couche visible du systme


Pour lutilisateur dun micro-ordinateur, laspect le plus apparent (et souvent le
seul perceptible) du systme dexploitation, ce sont les dirents objets graphiques
qui sexhibent sur lcran : les fentres dans lesquelles sachent des textes ou des
images, les direntes barres et poignes qui servent dplacer les fentres ou
en modier les dimensions avec la souris, les barres de dlement qui permettent
de faire dler le contenu visible dans une fentre, les icnes sur lesquels on peut
cliquer pour lancer lexcution de tel ou tel programme, les menus qui proposent
un choix de fonctions excuter, telles quimprimer le contenu dune fentre ou...
arrter lordinateur. Cet aspect visible du systme dexploitation sert essentiellement ouvrir, prsenter et grer des fentres et objets graphiques analogues : nous
pouvons lappeler gestionnaire de fentres ou interface utilisateur graphique (GUI,
pour Graphical User Interface).

Prsentation des personnages

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.

1.4 Une reprsentation : le modle en couches


lautre extrmit du systme dexploitation, si jose dire, du ct de lordinateur, de ses circuits et de ses transistors, sont les programmes qui interagissent
directement avec les lments matriels de lordinateur. Ces parties du systme
constituent ce qui est souvent appel le noyau (kernel). Entre le noyau et linterface
utilisateur, il y a toute une srie de couches intermdiaires qui distillent les messages
cryptiques du matriel pour dlivrer lutilisateur une information comprhensible.
Les informaticiens utilisent communment cette reprsentation par une architecture
en couches imagine par le chercheur nerlandais Edsger Wybe Dijkstra (19302002)
dans un article fameux publi en mai 1968 par les CACM (Communications of the
Association for Computer Machinery), The structure of the THE multiprogramming system [23].
Avant dtre le plan de construction du systme concret, larchitecture en couches
est un modle destin se reprsenter intellectuellement les choses par des abstractions. Ce modle est utile pour penser un objet dans lequel plusieurs logiques
sarticulent (Michel Volle, http://www.volle.com/opinion/couches.htm), lorsquil faut sparer dirents niveaux dabstraction. On nommera couches basses les
parties du systme qui interagissent le plus directement avec le matriel de lordinateur, et couches hautes celles qui sont plus proches de lutilisateur. Il ny a l
encore aucun jugement de valeur implicite dans ces expressions couches basses et
couches hautes . Et la ralisation des couches basses est sans doute techniquement
plus complexe, demande des comptences plus rares que celle des couches hautes,
cependant que ces dernires exigent, outre des comptences techniques, des talents
artistiques et une imagination digne dun urbaniste.
Encore plus que dans le monde des systmes dexploitation, le modle en couches
a connu le succs dans celui des rseaux informatiques, o les couches basses dcrivent la transmission de signaux sur des supports physiques tels que cble tlphonique, faisceau hertzien ou bre optique, tandis que les couches intermdiaires
concernent lacheminement de messages complexes travers des rseaux la topologie galement complexe, et que les couches hautes traitent de la prsentation
de ces messages travers une interface utilisateur, de lidentication de leur des-

Linformatique est (aussi) une science

tinataire et de son authentication (ces derniers problmes sont galement traits


par les systmes dexploitation, soit dit en passant). Les ensembles de rgles et de
conventions qui rgissent les communications entre les couches de mme niveau de
plusieurs systmes communicants constituent des protocoles de communication. Les
rgles et les conventions qui rgissent les changes entre une couche donne et la
couche immdiatement infrieure dun mme systme constituent une interface.

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

Figure 1.1 : Exemple de modle en couches : le rseau

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.

1.5 Linformatique est (aussi) une science


Complter les dnitions ci-dessus par un plan densemble de la discipline informatique nest peut-tre pas si futile quil y parat et peut aider, dans la suite,
savoir de quoi lon parle. La gure 1.2 propose un tel plan.
Au sein de linformatique existent des disciplines dont la nomenclature nest pas
aussi bien tablie que celles des mathmatiques, certes, et la classication propose
ici est probablement contestable. Dans la partie dun seul tenant de mon plan en

10

Prsentation des personnages

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.

1.7 Enjeux dune histoire


Lhistoire de linformatique peut tre considre sous dirents angles : histoire
de la pense scientique, histoire des techniques de calcul automatique, histoire des
ordinateurs. Ces trois clairages (il y en aurait dautres) illumineraient une scne
qui se joue depuis plus longtemps quil nest envisag communment, la poursuite
du rve promthen de construire un tre mcanique pensant.
Si ce rve, on limagine volontiers, a mobilis les ingnieurs les plus inventifs, de
Ctsibios 1 dAlexandrie Steve Jobs 2 , on nglige souvent lengagement dans cette
voie de philosophes et savants parmi les plus minents, tels Blaise Pascal, Gottfried
Wilhelm von Leibniz, John von Neumann, ou on le sous-estime en rduisant cette
part de leur uvre un passe-temps. En fait Leibniz par exemple est le prcurseur
de linformatique moderne par trois contributions majeures (et ignores pendant
plus de deux sicles) : la ralisation concrte dune machine capable deectuer les
quatre oprations arithmtiques, la conception dune caractristique universelle qui
prgure les systmes formels de la logique moderne et, partant, les langages de
programmation, enn ltude, sur des documents chinois, de larithmtique binaire,
1. Inventeur dune clepsydre perfectionne et dun orgue eau.
2. Crateur dApple avec Steve Wozniak.

12

Prsentation des personnages

dont il peroit et analyse la simplicit quelle peut confrer un systme de calcul


automatique 3 . De mme von Neumann est plus respect pour la thorie des jeux ou
ses travaux de mathmatiques pures que pour son invention de lordinateur, la plus
importante du XXe sicle.
Dautres prcurseurs sont quant eux tout simplement sous-estims comme
hommes de science. Ce nest que rcemment que la vritable stature de Charles Babbage (17911871) est apparue : longtemps considr comme lingnieur maniaque de
machines calcul qui nont jamais march, il avait en fait conu avec sa machine
analytique un ordinateur complet auquel na manqu que la ralisation ; par ailleurs
son rle dans le progrs considrable des mathmatiques anglaises au XIXe sicle
est dsormais reconnu. La mme reconnaissance choit nalement Alan Turing,
malgr le ddain ou lignorance volontaire o les mathmaticiens, spcialement en
France, relguent tant la logique que les recherches sur les Fondements inities par
David Hilbert et Kurt Gdel. Bref, linformatique sera bientt vraiment reconnue
comme une science, peut-tre...
Il faut dire que nous revenons de loin. Si nous sommes revenus. Assez rcemment,
la n du sicle dernier, jai visit le trs beau Museum of Science and Industry de
Chicago. La salle consacre linformatique, grande et belle, illustrait le dclin fatal
inig la dimension spectaculaire des ordinateurs par la miniaturisation lectronique. Cela dit, malgr le panneau Computer Science lentre, quil sagisse l dune
science ntait gure patent : on voyait des exploits dingnieurs, ce qui dailleurs
donnait la part belle aux prcurseurs franais Blaise Pascal et Thomas de Colmar
qui partageaient avec Wilhelm Schickard et Charles Babbage le stand des prcurseurs davant llectricit, des ralisations industrielles, mais nulle mention quil y
et aussi, dans ce domaine, un paradigme, des thories, des concepts, certes plus
diciles mettre en vitrine que des disques durs. On pourra mobjecter que cest
aussi un muse de lIndustrie, mais bon, il y avait bien des salles de mathmatiques...
Cette salle qui se disait de Computer Science tait en fait de machines calculer et dordinateurs, ce qui nest quun versant de la chose. Lordinateur apparaissait comme le fruit dune volution quasi darwinienne prenant son origine chez
les machines mcaniques, passant aux machines mcanographiques des annes 1890
- 1950, puis aux grands calculateurs lectroniques pr-informatiques, pour aboutir
avec lENIAC lordinateur.
Cette vision de lhistoire informatique est assez rpandue, mais assez discutable
et surtout assez tronque. la sortie de cette salle du muse une pancarte donnait
un indice sur la nature du biais donn la prsentation et sur lorientation de
la vision qui avait pu lengendrer : tout ce que javais vu tait un cadeau de la
compagnie IBM. Je ne partage pas avec certains de mes collgues universitaires le
ddain pour les ralisations informatiques dIBM, qui a t lorigine dinnovations
majeures, comme le disque magntique, le processeur RISC, la multiprogrammation,
le processeur en pipeline et bien dautres. Mais il est invitable quune compagnie
dont les origines sont dans la mcanographie soit sujette y voir la naissance de
linformatique, plus que dans les recherches menes lIAS (Institute for Advanced
3. Cf. le texte de Leibniz, crit en franais par lauteur : http://www.laurentbloch.org/
MySpip3/spip.php?article98

Enjeux dune histoire

13

Studies) de Princeton par des thoriciens issus dhorizons dirents, en loccurrence


Church, von Neumann et Turing.

Chapitre 2 Principe de fonctionnement de lordinateur

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.

2.1 Modle de lordinateur


Cest John von Neumann, mathmaticien hongrois migr aux tatsUnis, qui
dans un document tout fait remarquable de 1945 intitul First Draft of a Report

16

Principe de fonctionnement de lordinateur

on the EDVAC et dsormais disponible en ligne [56] a propos pour lordinateur


larchitecture reprsente par la gure 2.1 1 .
Architecture de von Neumann

Unit de
Contrle

Unit
Arithmtique

Unit
dEntre-Sortie

Accumulateur A
Registre R

Mmoire pour les


Instructions et les Donnes

Figure 2.1 : Structure de lordinateur

Les units de contrle 2 , arithmtique et dentresortie constituent elles trois


lunit centrale, ou le processeur de lordinateur. Le processeur est constitu de circuits lectroniques qui peuvent excuter des actions ; de nos jours il est gnralement
ralis sous la forme dun composant lectronique unique nomm microprocesseur.
Lensemble des actions cbles dans le processeur constitue le jeu dinstructions
du processeur (les actions primitives ) et dtermine le langage lmentaire de son
utilisation, appel langage machine . chaque instruction identie par son code
correspond un circuit particulier.
Le rle de lunit de contrle consiste permettre le dclenchement de laction
(linstruction) voulue au moment voulu. Cette instruction peut appartenir lunit
arithmtique, lunit dentre-sortie ou lunit de contrle elle-mme. Une instruction peut en outre consulter le contenu de la mmoire (la lire ) ou modier le
contenu de la mmoire (y crire ). De faon gnrale, une action consiste soit
consulter ou modier ltat de la mmoire ou dun des registres A ou R (qui sont
des lments de mmoire spciaux incorpors lunit centrale), soit dclencher
une opration dentre-sortie (communication avec le monde extrieur et notamment
lutilisateur humain), soit encore modier la squence des instructions formules
par le programme en commandant de sauter un certain nombre dinstructions
sans les excuter, ou de revenir en arrire pour rpter des instructions dj
droules (le texte du programme nest pas modi, mais est modi lordre dans
lequel il est lu ).
Point fondamental, un ordinateur conforme au modle de von Neumann excute
une instruction, et une seule, la fois (principe dexcution squentielle). En ce
dbut de vingt-et-unime sicle, pratiquement tous les ordinateurs se conforment
extrieurement ce modle, quelques perfectionnements de ralisation technique
1. La gure et les deux alinas qui suivent sont emprunts mon livre Initiation la programmation avec Scheme, publi en 2001 par les ditions Technip, avec laimable autorisation de
lditeur.
2. Une traduction plus exacte de langlais control unit serait unit de commande . Lusage a
entrin limproprit.

Modle de lordinateur

17

prs qui amliorent les performances mais ne modient ni le modle dexcution ni


la smantique du traitement de linformation (nous donnons une brve description
de ces techniques au chapitre 9 page 211).
Comment indique-t-on lunit de contrle le moment voulu pour dclencher
telle ou telle action ? Cest crit dans le texte dun programme. O est le programme ?
Dans la mmoire.
La mmoire est constitue dlments susceptibles de prendre des tats. Un lment de base de la mmoire peut prendre deux tats distincts et peut servir
reprsenter une information lmentaire, ou bit (binary digit, chire binaire). Cette
reprsentation dune information par un lment de mmoire sappelle un code. Une
mmoire avec beaucoup de bits permet le codage dinformations complexes, dans la
limite de la taille de la mmoire.
Comme les constituants lmentaires de la mmoire ont deux tats, il est commode dutiliser la numration binaire pour les reprsenter et pour eectuer des
calculs leur sujet. lpoque de la scolarit de lauteur, les systmes de numration taient introduits en classe de cinquime, mais je me suis laiss dire que cette
introduction ntait plus systmatique. Lannexe A en donne les rudiments.
Si les constructeurs des premiers ordinateurs avaient imagin des constituants
lmentaires trois tats, linformatique aurait-elle t ternaire plutt que binaire ?
En fait tout laisse supposer que lextraordinaire dveloppement de linformatique
doit beaucoup la grande simplicit de la numration binaire. Gottfried Wilhelm von
Leibniz dj lavait conu 3 . Les nombreuses tentatives pour dvelopper des machines
dcimales ont t dcevantes, sauf pour les calculettes. Et mme si la technique
fournissait aujourdhui des composants ternaires conomiquement intressants, il y
a fort parier que linformatique resterait binaire pour proter de la simplicit, de
luniformit et de la rgularit, en un mot de llgance, des modles formels qui lui
donnent sa charpente.
Comme le bit est une unit dinformation trop lmentaire pour la plupart des
usages, on manipule ordinairement des mots de mmoire, constitus dun nombre
donn de bits (32 ou 64 usuellement). La taille du mot est une caractristique importante de larchitecture dun ordinateur. On peut se reprsenter ces mots comme
rangs dans un grand tableau de cases numrotes. Le numro de chaque case est
ladresse du mot quelle contient.
Le chemin par lequel unit centrale, mmoire et organes dentre-sortie communiquent sappelle de faon gnrique un bus . De faon un peu formelle, un bus
est un graphe connexe complet, ce qui veut dire en langage courant que tous les
lments connects au bus peuvent communiquer entre eux.

Quel fut le premier ordinateur ?


Comme suggr par le titre de son rapport, First Draft of a Report on the EDVAC
[56], les principes quy exposait von Neumann taient destins sappliquer la
construction dune machine nomme EDVAC qui aurait t la premire ralisation
de larchitecture dite depuis de von Neumann. Il en fut autrement.
3. http://www.laurentbloch.org/MySpip3/spip.php?article98

18

Principe de fonctionnement de lordinateur

Comment von Neumann, mathmaticien rput la position scientique bien


tablie dans plusieurs domaines, de la thorie des ensembles au calcul des probabilits, en tait-il venu sintresser au calcul automatique ? Dabord, il avait frquent
Alan Turing lIAS (Institute for Advanced Studies) de Princeton de 1936 1938
et il connaissait ses travaux. Plus tard, Herman H. Goldstine a racont dans son
livre [30] comment, en 1943, alors quil tait scientique du contingent dans
lU.S. Navy et quil travaillait au projet de calculateur ENIAC destin aux calculs
balistiques des canons de marine, il avait aperu von Neumann sur le quai de la gare
dAberdeen (Maryland), avait os laborder et lui avait parl de son travail. Von
Neumann avait t immdiatement passionn et stait joint au projet.
Le projet ENIAC (pour Electronic Numerical Integrator and Computer) devait
produire une grande machine calculer et il avait t mis en route lUniversit de
Pennsylvanie en 1943 sous la direction de J. Presper Eckert et de John W. Mauchly.
Une fois ralis ( la n de 1945), lENIAC serait le plus grand calculateur de son
temps. Mais lENIAC ne rpondait pas la dnition que nous avons donne de
lordinateur : une machine programmable, automatique et universelle. La ralisation
dun calcul avec lENIAC demandait des interventions manuelles pour adapter la
conguration de la machine, ce qui va lencontre de lexigence dtre automatique
et programmable. En fait la programmation tait ralise essentiellement au moyen
de commutateurs et de tableaux de connexions, comme sur les machines mcanographiques. Cest en pensant aux moyens damliorer ce fonctionnement que von
Neumann a conu son architecture.
Plus tard, Eckert et Mauchly ont accus von Neumann davoir pill leurs ides,
mais cette thse ne rsiste pas la simple lecture du First Draft of a Report on the
EDVAC. Il est lgitime de dire quentre lEDVAC et lENIAC il y a une dirence
du mme ordre quentre la lunette de Galile et les lunettes ralises auparavant par
un Hollandais anonyme : Galile a certes bnci de lexemple de son prdcesseur,
mais, comme la soulign Alexandre Koyr, sa lunette est la ralisation dune thorie
scientique, alors que linstrument de son prdcesseur tait le fruit dune dmarche
empirique. Le texte de von Neumann est un des fondements (avec la machine de
Turing) dune science nouvelle. La construction de lEDVAC prendra du retard, et
la premire machine de von Neumann sera britannique.
En 1995 de grandes manifestations ont t organises aux tats-Unis pour clbrer le cinquantenaire de lENIAC comme celui du premier ordinateur, mais ctait
abusif. LENIAC reprsente sans doute lapoge des calculateurs pr-informatiques.
En fait les premiers ordinateurs vritables furent le MARK 1 de lUniversit
de Manchester, ralis sous la direction de Max Newman, oprationnel en 1948, et
lEDSAC, construit lUniversit de Cambridge sous la direction de Maurice Wilkes
en 1949. Les querelles dantriorit entre ces deux machines ne sont et ne seront
sans doute pas tranches, mais le fait que cela se joue entre elles nest gure remis
en cause. Les principes la base de ces deux machines avaient incontestablement t
labors par John von Neumann aux tats-Unis, la thorie sous-jacente tait celle du
Britannique Alan Turing, mais les ralisation taient britanniques, do sans doute
la tentation dune usurpation commmoratrice amricaine...
Cette question de primaut ou pas de lENIAC est loin dtre un dtail. Selon la
rponse quon lui donne :
lordinateur a t invent par Eckert et Mauchly, ou par von Neumann ;

Traitement de linformation

19

la premire ralisation est amricaine, ou britannique ;


linformatique est ne de lvolution technique normale des machines mcanographiques, ou dune rupture pistmologique dont la source se trouve dans
la recherche fondamentale en mathmatiques ;
linformatique est un bricolage dingnieur astucieux, ou une perce intellectuelle de premire importance.

2.2 Traitement de linformation 4


Construire des ordinateurs, puis crire des programmes : le but poursuivi par ces
activits est de traiter de linformation. Traiter de linformation cest, partir de
donnes que nous conviendrons de nommer D, leur faire subir le traitement dcrit
par le programme P pour obtenir le rsultat R.
Ceci est trs gnral : D peut tre une liste de nombres dont nous voulons faire
laddition, R sera alors le nombre qui reprsente leur somme, et il faudra crire le
programme P de sorte quil mne au rsultat. Mais D peut aussi tre le manuscrit
du texte que vous tes en train de lire, R le mme texte mis en page et P devra
alors tre un programme typographique.
Le traitement devra tre ralis par un excutant dont nous navons pas besoin
de supposer quil est un ordinateur, ce stade du raisonnement. Simplement, si
lexcutant est un humain dot dun crayon et dun papier, les mthodes pour calculer
la somme dune liste de nombres ou pour mettre en page un manuscrit ne seront pas
les mmes que pour un ordinateur. Ltre humain et lordinateur ne sont pas aptes
aux mmes actions primitives (nous dirons dsormais primitives tout court). Ltre
humain, de surcrot, est capable dinventer tout moment de nouvelles primitives,
et den oublier dautres. Lordinateur est bien plus simple.
Le traitement des donnes doit tre eectif, cest--dire que la mthode de passage doit pouvoir aboutir pratiquement au rsultat. Prenons un exemple, soit D
lensemble des numros dimmatriculation des voitures immatricules en France.
Les symboles utiliss sont des chires et des lettres. Les rgles de formation des
numros dimmatriculation sont la syntaxe du langage. La smantique dun numro
est lidentit de la voiture qui le porte. Considrons R, lensemble des dpartements
franais. La correspondance qui, tout numro dimmatriculation bien form, fait
correspondre le dpartement dimmatriculation de la voiture qui le porte est un traitement de D, on sait comment le raliser. En revanche la correspondance qui, tout
numro dimmatriculation bien form, ferait correspondre la commune dimmatriculation de la voiture associe nest pas un traitement de D, car on ne sait pas laborer
cette information partir du numro, bien quelle existe srement ; les donnes qui
permettraient de la calculer ne font pas partie de D. Cette correspondance ne peut
pas tre dcrite de manire eective, cest--dire par un algorithme.
Un algorithme est la description, pour un excutant donn, dune mthode de
rsolution dun problme, autrement dit dune suite doprations qui fournissent le
rsultat cherch.
4. Les cinq alinas qui suivent sont emprunts mon livre Initiation la programmation avec
Scheme, publi en 2001 par les ditions Technip, avec laimable autorisation de lditeur. Ils doivent
beaucoup louvrage de Thrse Accart Hardin et Vronique Donzeau-Gouge [1].

20

Principe de fonctionnement de lordinateur

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.

2.3 Mmoire et action, donnes et programme


Nous avons dit que le programme rsidait dans la mmoire : ce point mrite dtre
soulign. Cest linnovation principale du modle de von Neumann, cette invention
porte le nom de machine programme enregistr .
De toute vidence, lorsque lon y rchit maintenant, un programme cest de
linformation. De linformation sur le traitement appliquer linformation, de
la mta-information, si lon veut. Mais lpoque de von Neumann le concept de
programme tait beaucoup moins bien form quaujourdhui. Dans les machines
calculer telles que lENIAC le programme nexistait nulle part en tant que texte, il
tait rparti entre dirents tableaux de connexions et autres commutateurs, do
nalement le dfaut de programmabilit de cette machine, et en tout cas limpossibilit de raisonner sur son programme.
Lide (gniale) de von Neumann consiste dire que programme et donnes
seront enregistrs dans la mme mmoire. Chaque case de mmoire peut contenir
un mot, ce mot peut reprsenter soit une instruction, soit un lment de donne. Un
lment de donne peut tre un nombre ou un caractre alphabtique, par exemple,
ou encore un nombre dont la valeur a une signication particulire : ladresse dune
autre donne ou dune instruction, cest--dire le numro de la case mmoire o se
trouve cette donne ou cette instruction.
Les instructions ne se rduiront pas dobscures connexions de ls et de circuits,
mais seront dabord des lments de signication (des verbes, oserai-je dire) qui
diront des choses trs simples (bien sr, lunit de contrle pourra, au vu de chacun
de ces verbes, slectionner le circuit logique correspondant).
Dans le paragraphe prcdent il y a une locution qui demande claircissement :
au vu. Comment lunit de contrle peut-elle voir le verbe ? Pour linstant nous
dirons simplement que les circuits logiques de lunit de contrle comportent des
aiguillages , qui selon la valeur dun ensemble de bits (le code opration de linstruction) dclencheront le fonctionnement du circuit correspondant 5 .
5. La description du fonctionnement des circuits logiques a t reporte en annexe B.

quoi ressemble le langage machine ?

21

2.4 quoi ressemble le langage machine ?


2.4.1 Premier programme
Voici un exemple de programme trs simple, nonc dabord en langage humain
et illustr par la gure 2.2 :
1. charge dans le registre A le nombre qui est dans la case mmoire numro 20 ;
2. teste le contenu de A : sil vaut zro passe directement linstruction 6 ; sinon
ne fais rien, cest dire continue en squence ;
3. additionne au contenu du registre A le nombre qui est dans la case mmoire
numro 21 (le rsultat eacera lancien contenu du registre A et prendra sa
place) ;
4. copie le contenu du registre A dans la case mmoire numro 22 (le rsultat
eacera lancien contenu de la case mmoire numro 22 et prendra sa place) ;
5. imprime le contenu de la case mmoire numro 22 ;
6. n.
La gure 2.2 montre les dplacements de donnes en quoi consiste ce programme ;
on se rappellera que les registres ne sont rien dautre que des positions de mmoire
spciales places dans les circuits du processeur pour que les traitements qui les
aectent soient plus rapides ; les numros des instructions concernes gurent dans
des cercles ct des ches qui indiquent les mouvements de donnes.
Unit centrale
Unit
arithmtique
et logique

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

Figure 2.2 : Excution de programme

22

Principe de fonctionnement de lordinateur

Chaque lment de la liste ci-dessus dcrit en langage humain une instruction


dordinateur. Dans la mmoire, ces textes sont cods sous forme dun certain
nombre de bits selon un format xe. Par exemple, supposons que nous disposons de
16 bits pour reprsenter une instruction (notre ordinateur a des mots de 16 bits),
nos instructions pourront avoir le format suivant :
bits 0 4
code
opration

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

chargement mmoire registre


copie registre mmoire
addition mmoire registre
imprimer mmoire
test registre et branchement si zro
n

00001
00010
00011
00100
00101
00110

bits 7 15
adresse
mmoire

nom
mnmonique
LOAD
STORE
ADD
PRINT
BZ
END

La colonne intitule nom mnmonique nous sera utile ultrieurement, pour


linstant disons quelle peut nous servir dsigner commodment les instructions.
Avec ce codage, et en supposant que la premire instruction est charge en mmoire
ladresse 0 (les numrotations des informaticiens commencent souvent 0) notre
petit programme scrit en binaire :
code
opration
00001
00101
00011
00010
00100
00110

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

soit, une fois limines les oritures lusage du lecteur humain :


0000
0010
0001
0001
0010
0011

1100
1100
1100
0100
0100
0100

0001
0000
0001
0001
0001
0001

0100
0101
0101
0110
0110
0110

Lunit de contrle va chercher ces instructions lune aprs lautre et dclencher


leur excution. Le dcodage par lunit de contrle du code opration (5 premiers
bits) permet dactiver le circuit logique qui correspond linstruction dsire.
Nous donnons la sous-section 9.2.1 du chapitre 9 des dtails plus ns sur
lexcution des instructions, mais le modle simple ci-dessus permet de comprendre
lessentiel.

Mot dtat de programme (PSW)

23

2.4.2 Questions sur le programme


Ce programme peut susciter quelques interrogations :
Que signie la valeur dadresse 5 (dcimal) dans la seconde instruction ? Ceci :
si la premire instruction est charge, nous le supposerons pour cet exemple,
dans la case mmoire 0, la sixime sera dans la case 5. Ladresse, on la vu,
nest pas autre chose que le numro de case mmoire. Et linstruction test
registre et branchement ordonne, si le test est positif, que le droulement
du programme soit modi pour se continuer par lexcution de linstruction
qui se trouve cette adresse (pour sauter cette adresse). Si le test est
ngatif, lexcution se poursuit par linstruction suivante, comme si de rien
ntait.
Pourquoi nos instructions ont-elles deux champs registre alors quelles
utilisent un ou zro registre ? Parce que le format des instructions de notre
ordinateur ctif est xe, et quil est prvisible quil aura besoin dinstructions
qui concernent deux registres, par exemple une addition registre registre.
Il nous serait videmment loisible dimaginer un ordinateur dont le format
dinstruction soit dirent, mais il faut bien faire un choix. Ce qui est sr,
cest quun format dinstruction uniforme et de longueur xe simplie considrablement lunit de contrle, et que les ordinateurs rels contemporains
sont ainsi conus 6 (il y a longtemps, des processeurs avaient des instructions
de longueurs diverses et mme variables : il sest avr que les inconvnients
outrepassaient largement les avantages).
Pourquoi les instructions numro 5 et 6, qui ne font rfrence aucun des
deux registres A et R, ont-elles une valeur dans chaque champ registre, en
loccurrence 1 qui dsigne A et 0 qui dsigne R ? Parce que le format des
instructions de notre ordinateur ctif est xe, que chacune de ses instructions
a par hypothse deux champs registre et quil faut bien quun bit vaille 0
ou 1.

2.5 Mot dtat de programme (PSW)


Nous avons crit plusieurs reprises des locutions telles que le programme
saute telle adresse pour excuter linstruction qui sy trouve : prcisons ici cette
notion assez vague de saut.
tout moment le processeur dtient ladresse de la prochaine instruction excuter dans le compteur de programme (PC, pour Program Counter, ou IP pour Instruction Pointer ; pour les processeurs Intel lappellation est eip ; on trouve aussi
compteur ordinal). Lors du dmarrage de lordinateur, le PC est charg avec ladresse
de la premire instruction excuter, et lors de lexcution de chaque instruction
ultrieure le processeur place dans le PC ladresse de linstruction conscutive. Un
saut, ou branchement, consiste placer dans le PC ladresse de lemplacement dans
le texte du programme o est situe linstruction dsire.
Pour anticiper un peu, lorsque le systme dexploitation retire le contrle du
processeur un processus pour le donner un autre, le PC du nouveau processus
6. ... lexception notable des processeurs Intel x86.

24

Principe de fonctionnement de lordinateur

est charg la place de celui du prdcesseur, et ce PC nouvellement charg contient


ladresse laquelle le processus doit redmarrer (sil avait t pralablement interrompu) ou ladresse de dmarrage du programme correspondant, sil sagit dun
processus vierge .
Le PC est dans la plupart des processeurs un des lments dun groupe dinformations appel mot dtat de programme ou Program Status Word (PSW), que
nous retrouverons plus loin.

2.6 Premier mtalangage


2.6.1 Vers un langage symbolique
Au tout dbut des ordinateurs les programmes scrivaient littralement comme
celui de la section 2.4.1, avec des 0 et des 1. Ctait videmment insupportable. Aussi
a-t-on rapidement invent une notation mnmonique mieux adapte lusage par
les tres humains. Cette notation consiste en ceci :
donner un nom symbolique chaque code opration (dans notre exemple,
ceux du second tableau de la section 2.4.1) ;
reprsenter les nombres en notation dcimale ;
sparer les oprandes par des virgules ;
supprimer la mention des oprandes sans objet ;
placer (si besoin est) devant chaque instruction une tiquette symbolique qui
permet de la dsigner.
Notre programme devient maintenant :
tiquette

FIN

code op.
LOAD
BZ
ADD
STORE
PRINT
END

oprandes
1, 20
1, FIN
1, 21
1, 22
22

Les transformations quil faudra appliquer ce programme symbolique pour


produire le texte du programme binaire, seul comprhensible par les circuits
logiques de lordinateur, sont simples et surtout trs mcaniques. La plus complexe
concerne le traitement des tiquettes ; ainsi pour transformer la seconde instruction
BZ 1, FIN en :
0010 1100 0000 0101
il faudra calculer ladresse qui correspond FIN dans la sixime instruction, ce qui
revient compter combien il y a de mots entre la premire et la sixime instruction.
On dit que FIN est un nom symbolique qui dsigne linstruction dadresse 5. Cet
usage de noms symboliques est important et nous y reviendrons, notamment la
section 4.3.2.
De mme que le symbole FIN correspond une adresse, nous pouvons imaginer
de dsigner par des symboles les adresses des cases mmoire qui contiennent les
donnes et le rsultat du calcul. Notre programme deviendra alors :

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)

Comment les symboles vont-ils tre transforms en adresses ? La rponse quelques


lignes plus bas.

2.6.2 Adresses absolues, adresses relatives


Nous avons dit que les symboles FIN, VAL1, VAL2, RESULT dsignaient des cases
dans la mmoire, ou pour le dire autrement reprsentaient des adresses. Il sagit
jusquici de dsigner chaque case par son numro, cest--dire son adresse absolue :
il pourrait tre plus commode que ce soit une adresse relative, par rapport au dbut
du texte du programme. Ceci permettrait de saranchir de lhypothse selon laquelle
le programme est forcment charg partir de ladresse 0.
Supposons que le programme soit charg une adresse quelconque, par exemple
256 ; nous allons supposer aussi que nous disposions dun registre pour conserver
cette information ; ce registre sera appel le registre de base pour le programme
considr. Chaque adresse manipule par le programme sera en fait calcule comme
la somme de ladresse relative qui gure dans le texte du programme (sous forme
numrique ou comme un symbole) et du contenu du registre de base. Ainsi le fonctionnement de notre programme sera indpendant de son emplacement en mmoire.
Nous reviendrons sur ce mcanisme la section 4.3.2.
Le programme que nous avons en remplaant les valeurs numriques des adresses
par des noms symboliques, les codes opration binaires par des noms mnmoniques et
les valeurs binaires par des nombres dcimaux sappelle un programme symbolique.
Ces transformations simples transforment radicalement lacte de programmer : au
lieu dune suite illisible de 0 et de 1 le programmeur dispose dun langage symbolique,
certes rudimentaire mais inniment plus expressif.
Le texte du programme que nous avons sous les yeux maintenant est assez diffrent de celui en langage machine binaire : sil est assez vident quil est plus facile
crire pour un tre humain, il va nous falloir disposer dun outil de traduction du
programme symbolique en langage machine.

2.6.3 Assembleur, table des symboles


Le programme qui ralise cette traduction du langage symbolique en texte binaire directement excutable par la machine sappelle un assembleur. Par extension
lhabitude sest tablie de nommer assembleur un tel langage symbolique. Notre
exemple est bien sr extrmement simpli par rapport aux assembleurs rels, mais

26

Principe de fonctionnement de lordinateur

cet assembleur-jouet est un modle raisonnablement raliste et sura au propos de


ce livre, qui nest pas de vous apprendre programmer en assembleur.
Il reste un mystre lucider : comment lassembleur procde-t-il pour traduire
les noms symboliques en adresses ? Lassembleur va construire un lment important
du programme, la table des symboles, ce qui se fait en deux temps : dans une premire
passe lassembleur dresse la liste de tous les symboles quil rencontre, dans une
seconde passe il calcule la distance (en nombre de cases mmoire) entre le dbut du
texte du programme et lemplacement o le symbole est dni ; cette distance est
ladresse relative dsigne par ce symbole par rapport au dbut su programme, et
sa valeur est place dans la table.
Lassembleur reprsente par rapport au langage machine un mtalangage, plus
loin de la ralit concrte de lordinateur, cest--dire plus abstrait et de ce fait plus
simple pour ltre humain. En fait, ceci est la premire marche de lescalier de mtalangages de plus en plus abstraits que gravit lusage contemporain des ordinateurs
pour tre plus accessible aux personnes. Simplement, pour quun langage, aussi abstrait soit-il, puisse prtendre la programmation des ordinateurs, il faut prouver que
tout programme bien form, cest--dire conforme sa syntaxe et sa smantique,
peut se traduire en langage machine, de faon univoque, et par un algorithme.

2.6.4 Traduction de langages


Jai mentionn plus haut le rsultat thorique trs important de Bhm et Jacopini
[10] qui donne du mme coup la voie dune telle preuve et son quivalence avec le
modle de la machine de Turing. Un langage qui satisfait toutes ces conditions est
dit Turing-quivalent. Cest le cas des langages de programmation gnraux, tels que
C, Java, Lisp ou Fortran, mais il a des langages non-Turing-quivalents et nanmoins
trs utiles, comme le langage SQL daccs aux bases de donnes, HTML et XML
pour dcrire des documents, etc.
Un programme qui traduit un langage de programmation dans un autre, gnralement de plus bas niveau, sappelle un compilateur. Un mtalangage de lassembleur
est appel un langage volu. Fortran fut en 1954 le premier langage volu. Un langage volu est en principe indpendant de lordinateur utilis : il sut pour excuter
un programme crit en langage volu sur un ordinateur quelconque de disposer dun
compilateur qui le traduise vers lassembleur propre cet ordinateur.

2.7 Comment cela dmarre-t-il ?


Pour expliquer le fonctionnement du programme ci-dessus nous avons suppos
quil tait charg en mmoire ladresse 0. Mais comment sest-il retrouv l, sachant
que la mmoire des ordinateurs est ralise, en ce dbut de vingt-et-unime sicle, par
des dispositifs techniques tels que ltat en est eac ds la coupure de lalimentation
lectrique ? Le principe est le suivant :
Pendant son excution, le programme, sous la forme binaire que nous venons
de dcrire, est enregistr dans la mmoire centrale.
Quand lordinateur est teint (ou quand un autre programme est en cours
dexcution), ce mme programme est stock, sous cette mme forme binaire,

Quel est le rle de la mmoire ?

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.

2.8 Quel est le rle de la mmoire ?


Nous avons introduit la notion de mmoire en disant quune action du processeur consistait consulter ou modier ltat de la mmoire. Cette dnition de
laction est trs importante, elle trace la ligne de sparation entre la conception mathmatique traditionnelle du calcul et la conception informatique lie la notion
de procdure eective. La mathmatique ignore cette notion dtat, qui introduirait
dans son univers dabstraction un aspect physique totalement incongru.
Linformatique, et plus prcisment la programmation des ordinateurs, confre au
calcul une dimension concrte, eective. Cest un peu comme si le papier sur lequel
le mathmaticien inscrit les signes du calcul avec un crayon acqurait un statut
7. Il y aurait dire sur lusage de la prposition sur quand il sagit dune mmoire externe par
opposition dans pour la mmoire centrale. Les mmoires externes sont presque toujours des dispositifs o eectivement linformation est enregistre la surface dun mdium (disque magntique,
cassette ou mme CD-ROM) cependant que jadis la mmoire centrale tait ralise par de belles
structures tridimensionnelles de tores de ferrite traverss de ls conducteurs, mais cette distinction
a survcu leur remplacement par des circuits lectroniques multicouches mais assez plats.

28

Principe de fonctionnement de lordinateur

thorique. Ce passage permanent du concret labstrait est dailleurs lagrment


suprmement fascinant de la programmation : dire cest faire. Jnonce la formule
dune action, et la machine lexcute.
La mmoire possde donc un statut thorique important : ce qui matrialise le
calcul, ce sont les tats successifs de la mmoire, et le moteur qui anime lordinateur
et produit cette succession dtats est laptitude de lunit centrale aecter la
mmoire, modier son tat, eectuer ce que lon appelle une aectation.
Parlons de laectation. Un mot de mmoire peut donc tre utilis pour emmagasiner un tat du calcul. On dira que cest une variable, au sens de la programmation,
qui est dirent de lacception mathmatique usuelle. Une variable au sens de la
programmation est un objet dot des qualits suivantes :
un nom ; en langage machine, le nom dune variable est son adresse, dans les
langages volus cest un symbole plus commode mais quivalant en dernire
analyse une adresse ;
une valeur ; la valeur est celle du nombre binaire contenu dans le mot, mais il
est possible de le considrer comme un code auquel on confre une smantique
particulire, par exemple un caractre alphabtique, ce qui ouvre la voie au
traitement de texte ;
il est possible de prendre cette valeur, par exemple en langage machine
pour la recopier dans un registre ou dans un autre mot de la mmoire ;
il est possible de modier cette valeur, par exemple en copiant dans le mot le
contenu dun registre ou dun autre mot de la mmoire : cest laectation 8 .
Le modle thorique qui rend compte de ce que nous venons de dire de la mmoire
est la machine de Turing.

2.9 La machine de Turing 9


Le but de Turing lorsquil a imagin sa machine (toute abstraite et thorique, il
va sans dire) tait de donner une chair la notion abstraite de procdure eective.
Une procdure eective, cest un procd pour eectuer un calcul, par exemple la
dmarche suivre pour faire une multiplication, telle quelle vous a t enseigne
lcole.
Le modle formel dune procdure eective (pour dcrire un algorithme) doit
possder certaines proprits. Premirement, chaque procdure doit recevoir une dnition nie. Deuximement, la procdure doit tre compose dtapes distinctes,
dont chacune doit pouvoir tre accomplie mcaniquement. Dans sa simplicit, la
machine de Turing dterministe compose des lments suivants rpond ce programme :
une mmoire innie reprsente par un ruban divis en cases. Chaque case
du ruban peut recevoir un symbole de lalphabet dni pour la machine ;
une tte de lecture capable de parcourir le ruban dans les deux sens ;
un ensemble ni dtats parmi lesquels on distingue un tat initial et les
autres tats, dits accepteurs ;
8. Nous ranerons cette dnition de la variable la section 4.2.3.
9. Les cinq alinas qui suivent sont emprunts mon livre Initiation la programmation avec
Scheme, publi en 2001 par les ditions Technip, avec laimable autorisation de lditeur.

La machine de Turing

29

une fonction de transition qui, pour chaque tat de la machine et chaque


symbole gurant sous la tte de lecture, prcise :
ltat suivant ;
le caractre qui sera crit sur le ruban la place de celui qui se trouvait
sous la tte de lecture ;
le sens du prochain dplacement de la tte de lecture.
La conguration dune machine de Turing peut tre reprsente par un triplet
(q, m, u) o q est ltat de la machine, m le mot qui apparat sur le ruban avant la
position de la tte de lecture, u le mot gurant sur le ruban entre la position de la
tte de lecture et le dernier caractre non blanc.
Un arc du graphe de la fonction de transition peut tre reprsent par un quintuplet (qi, si, sj, x, qj) o :
qi est ltat de dpart ;
si est le symbole point avant lexcution du cycle ;
sj est le symbole qui doit remplacer si ;
x est un lment de {G, D, w} (G pour gauche, D pour droite, w pour un
dplacement nul) ;
qj est ltat de n de cycle.
Pour se donner une intuition de la chose, imaginons une M.T. (machine de Turing) avec un alphabet {0, 1,<espace>} ; nous conviendrons dutiliser le systme de
transparents sans titre
Page 1 Jeudi 29
Janvier 1998 13:41
numration
unaire
(celui
que vous utilisez pour marquer les points au ping-pong,
autrement dit les btons ) et de sparer les nombres par des 0. Pouvons-nous
additionner deux nombres ?
Machine de Turing
table des transitions :
((q0i, s0i, s0j, x0, q0j)
(q1i, s1i, s1j, x1, q1j)
(q2i, s2i, s2j, x2, q2j)
...)

0 1 1 1 0 1 1 1 1 0

Figure 2.3 : Un modle thorique

Le ruban mentionne successivement les nombres 4 et 3. Pour les additionner


il sut que la tte de lecture lise successivement les quatre chires unaires qui
constituent le nombre 4, dont la n sera indique par loccurrence du signe zro. Il
faudra alors supprimer le zro et rcrire dune case droite les chires du nombre 3,
jusqu la rencontre dun signe zro, qui subira le mme traitement, pour obtenir 7.
Lcriture de la table des transitions constituera pour le lecteur un exercice amusant.
On peut doter sa Machine de Turing de lalphabet ni de son choix. Son ruban
peut tre inni dans les deux sens ou dans un seul. Elle peut mme avoir plusieurs
rubans. On montre (Turing a montr) que ces diverses machines sont quivalentes.

30

Principe de fonctionnement de lordinateur

Tous les langages de programmation modernes sont quivalents la Machine de


Turing.

Chapitre 3 Du systme dexploitation au processus

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

Du systme dexploitation au processus

3.1 Premiers essais


lpoque des premiers ordinateurs, la n des annes 1940, il ny avait rien
qui annont les systmes dexploitation. Maurice Vincent Wilkes a racont le lancement et lexcution du premier programme sur lEDSAC : son texte tait sous une
forme tout fait similaire au format binaire donn en exemple la section 2.4.1.
Chaque chire binaire tait introduit manuellement laide de commutateurs. Puis
le programme se droulait durant des dizaines dheures, pour nalement acher le
rsultat attendu (une table de nombres premiers en loccurrence). On a vu comment
linvention des langages symboliques, puis dautres niveaux de mtalangages, allait
simplier les oprations de rdaction proprement dite du programme. Mais il fallait aussi faire des progrs sur la faon dintroduire programmes et donnes dans la
machine et den extraire les rsultats.
Lintroduction manuelle des donnes tait une perte de temps : un ingnieur qui
travaillait dans lquipe de Gene Amdahl (un des plus fameux architectes dordinateurs), Nathaniel Rochester, imagina au dbut des annes 1950 de les enregistrer sur
bande magntique au pralable. Le premier ordinateur qui les utilisa, lIBM 701, fut
livr en 1953 au Department of Defense amricain (DoD dans la suite de ce livre), ce
qui illustre la tradition continue de nancement des progrs de linformatique sous
limpulsion des commandes militaires, ici celles de la guerre de Core.
Cette utilisation des bandes magntiques connut un nouveau dveloppement avec
lIBM 704, livr n 1955. Sur cette machine conue par Gene Amdahl, lingnieur de
General Motors Bob Patrick crivit un programme qui enchanait automatiquement
entre des donnes, calcul, impression des rsultats, entre des donnes, etc. LIBM
704 fut dailleurs le support dun nombre considrable dinnovations capitales 1 .
Assez vite une constatation se t jour : limpression des rsultats, la cadence
dun tltype capable dimprimer dix caractres par seconde, voire mme leur criture sur bande magntique, pouvait prendre un temps aussi long que le calcul proprement dit, ce qui immobilisait la coteuse unit centrale pour une tche somme toute
subalterne. Le mot coteuse doit tre replac dans le contexte de lpoque : le
prix du 704, avec sa mmoire de 4096 mots de 36 bits qui semblait norme lpoque
(elle fut ensuite tendue 32 768 mots, comparer au milliard de mots du plus petit
ordinateur en vente aujourdhui au supermarch le plus proche de votre domicile !),
se chirait en millions de dollars de lpoque, et il ny eut quune vingtaine dexemplaires construits pour des clients fortuns tels que les militaires ou de grands centres
de recherche comme le MIT (Massachusetts Institute of Technology).
Il aurait t possible de rduire la perte de temps due limpression des rsultats
en les crivant provisoirement sur une mmoire auxiliaire lectromagntique (disque,
bande, tambour...) beaucoup plus rapide quune imprimante, puis en les imprimant
plus tard, pendant que lunit centrale eectuerait dautres calculs. Cela semblait
possible parce que la tche dimpression, ralentie par les oprations mcaniques de
1. Le parti-pris de cet ouvrage est de ne pas entrer dans le dtail de lhistoire des ordinateurs,
laquelle ont dj t consacrs des livres excellents dont le lecteur trouvera les rfrences dans la
bibliographie de celui-ci. Je me contenterai de donner la liste de ces innovations sans les dcrire :
seconde utilisation (derrire lUNIVAC 1103A) de la mmoire tores de ferrite invente par An
Wang en 1950, arithmtique virgule ottante, premier langage de programmation volu (Fortran),
premier langage de programmation fonctionnelle (Lisp).

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.

3.2 Simultanit et multiprogrammation


Nous avons annonc au dbut du chapitre 2 que nous allions complter notre dnition du systme dexploitation par la capacit quil pourrait confrer lordinateur
par lui pilot de faire plusieurs choses la fois. Or nous avons aussi mentionn comme
une caractristique essentielle de larchitecture de von Neumann que les ordinateurs
excutaient une et une seule instruction la fois. Sagit-il l dune contradiction ?
En fait, cest le principe de von Neumann qui est exact, et le systme dexploitation ne procurera que lillusion de la simultanit, une pseudo-simultanit 2 ,
Devons-nous nanmoins acheter des ordinateurs aussi fallacieux ? Oui. En eet, le
temps dexcution dune instruction cble du processeur est trs court, de lordre de
la nano-seconde, ce qui procure plusieurs centaines de millions dinstructions par seconde, et ainsi une tranche de temps de quelques fractions de seconde, partage entre
plusieurs processus, donne lchelle macroscopique lillusion de la simultanit.
2. Ceci est vrai pour les ordinateurs qui ont un seul processeur. Il y a des ordinateurs plusieurs
processeurs capables dexcuter plusieurs programmes en vraie simultanit. En premire approximation nous considrerons un ordinateur n processeurs comme n ordinateurs indpendants. Un
tour dhorizon des extensions et des dpassements de larchitecture de von Neumann gure au
chapitre 9.

34

Du systme dexploitation au processus

3.2.1 Chronologie dune entre-sortie


Voyons ce qui se passe lorsque lutilisateur dun ordinateur demande une opration macroscopique au logiciel quil utilise, par exemple dplacer le curseur du
traitement de texte la n de la ligne :
Cette opration va peut-tre demander lexcution de plusieurs milliers dinstructions lmentaires, disons dix mille en tant large.
Le temps mis par lutilisateur pour commander le dplacement du curseur
vers la n de la ligne sera, disons, dun quart de seconde. Pour simplier le
modle nous supposerons que lopration est commande par un raccourci
au clavier qui consomme vingt mille instructions. (Lusage de la souris
engendre des vnements dont la dtection et le traitement par le systme
sont complexes.)
Pour quaucun temps dattente ne soit perceptible lutilisateur, ce qui produirait de linconfort, il faut que laction, une fois commande, soit eectue
dans un dlai de deux centimes de seconde (cest ici encore trs gnreux).
Le budget des dlais pour notre opration est donc le suivant : nous disposons
tout dabord de 0,25 seconde pour excuter 20 000 instructions, puis de 0,02
seconde pour excuter 10 000 instructions. Or si notre ordinateur peut excuter un milliard dinstructions par seconde, valeur banale en cette anne 2013,
nous voyons quil nous reste normment de marge, puisquen 0,25 seconde
il peut excuter 250 millions dinstructions lmentaires, et en 0,02 seconde,
20 millions.
Le systme dexploitation va donc permettre lexcution pseudosimultane de plusieurs programmes tels que celui que nous avons dcrit :
Nous avons dit quil fallait lutilisateur 0,25 seconde pour eectuer la
commande par un raccourci au clavier : cest plutt vers la n de ce
dlai que, les oprations manuelles termines, le logiciel de traitement
de texte (et en fait dautres programmes lis notamment au gestionnaire
de fentres, mais ngligeons ces aspects pour linstant) vont excuter les
20 000 instructions ncessaires pour capter cette commande. Ces 20 000
instructions vont sexcuter en 0,000 020 seconde, ce qui laisse pendant les
oprations manuelles (ou plus exactement digitales) un temps inoccup de
0,249 980 seconde, disponible pour lexcution de 249 980 000 instructions
appartenant dautres programmes.
De la mme faon, nous voyons que les 10 000 instructions ncessaires pour
envoyer le curseur en bout de ligne vont laisser pendant le dlai de 0,02
seconde que nous nous sommes impos pour le confort de notre utilisateur
bien-aim un temps libre susant pour excuter 19 990 000 instructions
au prot dautres programmes, dits programmes concomitants (en
anglais concurrent, ou si lon veut concurrents pour laccs au temps de
processeur).

3.3 Notion de processus


De la section prcdente nous pouvons dduire la notion de processus : le rle
du systme dexploitation sera de distribuer harmonieusement le temps disponible
(de faon plthorique semble-t-il daprs lexemple ci-dessus) entre dirents pro-

Notion de processus

35

grammes en train de sexcuter pseudosimultanment . Lorsque lon considre


des programmes sous langle de leur concurrence pour laccs au temps du processeur, nous les appellerons des processus. Larbitrage de la rpartition du temps
entre les processus est la fonction fondamentale du systme dexploitation, cest une
fonction, bien sr, de bas niveau , qui relve des couches basses .
La capacit pour le systme dexploitation dorganiser le partage des ressources
entre plusieurs processus concomitants qui sexcutent en pseudosimultanit sappelle la multiprogrammation.
Nous pouvons emprunter Andrew Tanenbaum [74] la mtaphore du ptissier
qui prpare deux gteaux : le programme, cest la recette du gteau, cest la mme
pour les deux gteaux, elle dcrit des actions qui, dans le livre de cuisine, sont ltat
abstrait. Le processus, cest la suite dactions eectives qui va mener la ralisation
dun gteau concret. Pour aboutir, le processus gteau numro 1 doit se voir
attribuer un certain nombre de ressources : farine, ufs, sucre, un certain laps du
temps du ptissier, une certaine priode de disponibilit du rouleau ptisserie, une
certaine dure de cuison dans le four. Certaines contraintes doivent tre respectes : le
rouleau et la planche ptisserie doivent tre aects au processus gteau numro
1 en mme temps, et avant laectation du four. Nous supposerons que le four ne
peut contenir quun seul gteau la fois, de mme que le processeur dun ordinateur
ne peut excuter quune instruction la fois. Les ufs, le sucre et la farine de gteau
1 sont bien entendus distincts de ceux de gteau 2.
Pour prparer ses gteaux, le ptissier a le choix entre deux mthodes : prparer
dabord lun, jusqu la n du processus, puis lautre, ou bien mener de front la
confection des deux gteaux, en se consacrant alternativement lun, puis lautre,
ce qui permettra par exemple de rouler la pte de gteau 1 pendant que celle de
gteau 2 repose. La seconde mthode permettra sans doute de servir plus rapidement
le client du second gteau, sans trop retarder la livraison du premier, mais il y faudra
plus dorganisation et de coordination. Ainsi, lorsque le ptissier passera du gteau
1 au gteau 2, il faudra quil note (ne serait-ce que dans sa mmoire) certaines
informations sur ltat du processus gteau 1 : a-t-il dj mis du sucre, ou pas ? Ce
qui revient cocher au crayon quel endroit du texte de la recette il sest interrompu
dans le processus gteau 1 pour passer au processus gteau 2.
En procdant ainsi, le ptissier ralise deux gteaux en pseudo- simultanit ,
ce qui permettra ses deux clients dtre servis temps pour le dessert.
Nous avons dj vu la page 23 un moyen quont les ordinateurs de noter o
ils en sont dans un processus : le compteur ordinal, ou compteur de programme,
nomm en abrg PC (program counter), qui indique chaque pas du programme
ladresse de linstruction suivante excuter, et qui souvent fait partie du mot dtat
de programme. Eh bien le PC sert aussi cela : pour savoir o on en est dans le
processus gteau 1 au moment o on va labandonner pour soccuper de gteau 2, on
note quelque-part la valeur du PC. Nous entrerons plus en dtail dans la description
de ces mcanismes, plus particulirement aux sections 3.7 et 3.11, ce qui prcisera
notamment la position de ce quelque-part o est note la valeur du PC.

36

Du systme dexploitation au processus

3.4 Rication du calcul


Nous avons vu la section 2.3 que les deux principes la cl de larchitecture
de von Neumann taient lexcution squentielle et le partage dune mmoire unique
pour les instructions et les donnes du calcul. Cette runion du programme et des
donnes permet de considrer le programme comme de linformation, au mme titre
que les donnes, et cela a des consquences normes en termes de raisonnement
sur les programmes, de transformations appliques des programmes par dautres
programmes, de traduction de programmes, pour tout dire cela permet le concept
de programme.
Mais avant que la pense en son mouvement runisse donnes et programme elle
avait d apprendre les distinguer. En eet pour le mathmaticien traditionnel la
question de cette distinction nexiste pas, cest un problme qui na pas lieu.
Lide de rication du processus de calcul apparat avec Babbage, dont la machine analytique devait comporter une unit de contrle constitue de cylindres
picots, une unit de calcul (le moulin ), une mmoire centrale (le magasin ),
un systme dentres-sorties de donnes sur carton perfor emprunt aux orgues de
barbarie, et enn un dispositif de circulation de donnes par tringles crmaillre.
Incidemment, nous voyons ici une autre ide fondamentale de Babbage, la distinction entre unit de contrle et unit de calcul, la premire supervisant lexcution
des oprations de la seconde, ce qui permet dassurer un de nos postulats de dpart :
en fonction du rsultat dune opration de calcul, lunit de contrle pourra rompre
la squence dexcution des instructions pour commander un branchement vers une
instruction situe plus loin dans le texte du programme, ou au contraire un retour
en arrire pour rpter une squence dj eectue.
Par donnes enregistres sur carton perfor nous entendons aussi les programmes,
et Lady Ada Lovelace, lle du pote Byron, mcne de Babbage et dautres hommes
de science anglais tels que Faraday et gure intellectuelle importante de son poque,
a rdig les premiers textes de programmes de lhistoire. Cest en son honneur que
le langage de programmation Ada a t ainsi nomm 3 .
Les logiciens de la premire moiti du XXe sicle abordent le problme de la
rication de faon plus abstraite, sur les traces de Leibniz, par les systmes formels.
Kurt Gdel et sa suite Alan Turing avaient d inventer des notations pour dsigner
des procdures eectives, les transformer, leur faire subir des traitements. Alonzo
Church runit ces ides en un formalisme qui aujourdhui encore satisfait thoriciens
et praticiens de la programmation, le -calcul. En 1956 John MacCarthy labore
partir du -calcul un langage de programmation, LISP, pour lequel il implmente
partir de 1958 un traducteur sur lIBM 704.
3. La gense de ces programmes met en scne un autre personnage fameux, lingnieur et mathmaticien italien Luigi Menabrea, futur premier ministre de son pays, qui publia en 1842 (en
franais ; il tait natif de Chambry, mais cest sans doute le rle prminent du franais dans le
monde mathmatique qui a dtermin le choix de cette langue ; incidemment, Leibniz crivait aussi
en franais) le premier article sur les travaux de Babbage. Babbage avait demand Ada de les
traduire en anglais ; cest au cours de ce travail de traduction et dadditions quAda commena
crire des programmes destins rsoudre dirents problmes danalyse mathmatique. Lorsque le
langage machine de Babbage se rvlait trop peu maniable pour un certain problme, elle en demandait la modication. Une abondante littrature est maintenant disponible sur ce sujet passionnant,
y compris en dition franaise.

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.

3.5 Notion de sous-programme


ce stade de lexpos il convient dexposer une notion dune importance thorique et pratique cruciale, la notion de sous-programme, par quoi il est possible
de diviser la dicult de rdaction dun programme en le dcoupant en plusieurs
programmes plus simples.
Un programme signicatif reprsente un texte dune longueur respectable (par
exemple 10 000 lignes), et il faut organiser ce volume dinformation pour que les
humains qui lcrivent et le modient puissent sy retrouver. Un moyen trs gnral
et simple est davoir un programme principal qui joue en quelque sorte le rle de table
des matires et qui transfre le contrle des sous-programmes chargs de telle ou
telle fonction particulire, eux-mmes dcoups en sous-programmes plus petits, etc.
Ce transfert de contrle est nomm appel de sous-programme (ou de fonction,
ou de procdure, voire de mthode, ces mots dsignent des objets similaires dans le
contexte envisag ici). Il faut garder lesprit quil sagit essentiellement dorganiser
linformation constitue par le texte du programme lusage du lecteur humain ;
une fois traduit en langage machine il restera une suite monolithique de 0 et de 1.
Quand un programme appelle un sous-programme 4 il doit lui transmettre des
informations : supposons que je dispose dun sous-programme pour le calcul du
cosinus dun angle ; je vais lutiliser chaque fois que dans mon travail jaurai un angle
dont jai besoin de connatre le cosinus ; il faudra que je transfre au sous-programme
la valeur de langle, cest largument ou le paramtre de mon sous-programme ; il
faut aussi que le sous-programme connaisse deux autres choses, ladresse laquelle
transfrer le contrle quand il aura ni, dite adresse de retour, et ladresse o dposer
le rsultat an que le programme appelant puisse en prendre connaissance.
Un sous-programme peut tre crit par la mme personne que le programme
principal, et ils seront assembls en un tout par un programme spcial, lditeur de
liens. Un progamme crit et compil par nous utilise en fait dautres programmes
fournis par le systme dexploitation, par exemple pour communiquer avec le systme, ou par le compilateur. Ces programmes sont dans des bibliothques, qui sont
des chiers qui contiennent des programmes dj tout prts lusage. Au moment
de ldition de liens, soit ils sont inclus dans le chier excutable (dition de liens
statique), soit lditeur de liens place dans le chier excutable une rfrence vers
leur emplacement dans une bibliothque partageable (dition de liens dynamique) et
cest au moment du chargement que les rfrences qui permettent la liaison entre ces
dirents lments de programmes seront tablies par un programme ad hoc nomm
chargeur ou, par exemple sous Linux, interprteur de programmes.
4. Incidemment tout programme est un sous-programme, le programme principal est appel
par le systme dexploitation auquel il rend la main en se terminant.

38

Du systme dexploitation au processus

Observons quisoler une fonction particulire dans un sous-programme qui sera


dsign par un nom particulier (par exemple sinus pour le programme de calcul du
sinus dun angle) revient crer une mta-instruction qui enrichit notre langage de
programmation. Les langages issus du -calcul tels que LISP et Scheme se prtent
particulirement bien ce processus denrichissement par abstraction de fonctions.

3.6 Points de vue sur les programmes


Nous commenons avoir une ide de ce quest un programme : arrtons-nous
sur les direntes faons de lenvisager :
Comme la description dun algorithme sous une forme excutable en machine :
cest le point de vue du programmeur, que nous avons principalement envisag
jusqu maintenant.
Comme de linformation sous forme de donnes en mmoire : cest le point
de vue mtalinguistique de lauteur de compilateur, qui doit traduire le
texte du programme vers un langage de plus bas niveau et, ultima ratio, en
langage machine.
Comme un processus en cours dexcution et qui ce titre utilise les ressources
de lordinateur : mmoire, temps de processeur, dispositifs dentre-sortie ;
cest principalement le point de vue du systme dexploitation. Inversement,
le processus peut tre vu comme le contexte dexcution du programme.
Enn le programme a une existence matrielle sous la forme dun chier
binaire excutable stock quelque part sur une mmoire auxiliaire : cest un
point de vue que nous dvelopperons la section 3.10 et au chapitre 5.

3.7 Vision dynamique du programme : le processus


Le programme, du point de vue du systme, est une entit active qui consomme
des ressources, et qui pour les obtenir entre en concurrence avec dautres demandes.
Le programme vu sous cet angle est appel un processus, process en anglais (le terme
tche, task en anglais, est parfois employ, dans les sources du noyau Linux par
exemple). Ainsi, si un instant donn quinze personnes utilisent lditeur de texte
Xemacs sur le mme ordinateur, il y aura quinze processus dirents, mme sils
partagent la mme copie du programme en mmoire (rappelons-nous la mtaphore
du ptissier et des gteaux, ci-dessus page 34), qui nous a permis dintroduire cette
notion de processus).
Le systme dexploitation (operating system, OS) est un programme qui arbitre
les demandes de ressources des dirents processus et les satisfait en se conformant
une stratgie. La stratgie mise en uvre par le systme vise satisfaire plusieurs
impratifs :
assurer le fonctionnement correct de lordinateur, et donc du systme luimme : une allocation incohrente de ressources cruciales comme le temps de
processeur ou la mmoire peut provoquer un blocage ou un arrt complet du
systme ;
distribuer les ressources de telle sorte que tous les processus correctement
congurs en reoivent une allocation susante pour sexcuter normalement ;

Attributs du systme dexploitation

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.

3.8 Attributs du systme dexploitation


Quelles doivent tre les caractristiques dun systme dexploitation, propres
mettre en uvre la stratgie dcrite ci-dessus ? Avant de rpondre trop htivement
cette question il convient de sarmer de relativisme. Le systme dexploitation des
gros ordinateurs centraliss qui ont connu leur apoge pendant les annes 1970 ne
peut sans doute pas ressembler celui qui habite dans votre tlphone portable.
Moyennant quoi lexamen des systmes produits du milieu des annes 1960 lore
des annes 2000 rvle une grande stabilit des ides qui ont guid les rponses aux
questions de la section prcdente malgr une grande varit dinterfaces personne
ordinateur. Cest sans doute quil nest pas si simple dimaginer dautres solutions,
ou bien que celles qui se sont dgages lissue des premires expriences se sont
rvles assez satisfaisantes dans une grande varit de contextes.

3.8.1 Mode dexcution privilgi


De ce qui prcde dcoule que le systme dexploitation doit pouvoir faire des
choses que les programmes ordinaires ne peuvent pas faire (les programmes ordinaires ne doivent pas pouvoir faire les mmes choses que le systme). Ceci est
gnralement ralis par le processeur, qui distingue deux modes dexcution des
instructions : le mode privilgi et le mode normal. Certaines oprations ne sont
accessibles quau mode privilgi. Nous verrons que certains systmes ont ran
cette hirarchie de modes dexcution avec plusieurs niveaux de privilges. Le mode
privilgi est aussi appel mode superviseur, ou mode noyau.

40

Du systme dexploitation au processus

3.8.2 Contrle des programmes


Lorsque lon veut excuter un programme sur un ordinateur pilot par un systme dexploitation, cest lui que lon en demande le lancement. Nous dcrirons ce
processus plus en dtail la section 3.10 ci-dessous.

3.8.3 Contrle de lactivit de tous les processus


partir du moment o le systme, premier programme sexcuter aprs le
dmarrage de lordinateur, sest octroy le mode dexcution privilgi, et comme
cest lui qui va lancer les autres programmes, il lui est loisible de leur donner le
niveau de privilges quil juge ncessaire, et qui sera sauf exception le mode normal.
Il peut galement interrompre un programme en cours dexcution, il contrle les
communications entre processus et empche toute promiscuit non dsire 5 .

3.8.4 Monopole dattribution des ressources


Cest le systme et lui seul qui attribue aux dirents processus les ressources
dont ils ont besoin, mmoire, temps de processeur, accs aux entres-sorties. En eet
sans ce monopole plusieurs entits pourraient rivaliser pour loctroi de ressources, de
quoi pourrait rsulter une situation de blocage. Mme avec le monopole du systme
les situations de blocage entre processus peuvent advenir, mais elles sont plus rares
et plus souvent solubles par le systme. titre dillustration nous allons dcrire une
situation classique dinterblocage, l treinte fatale .
treinte fatale
Un groupe de processus P1 , P2 , ... Pn est dit en situation dtreinte fatale si
chaque processus Pi est bloqu en attente dune ressource dtenue par un processus
Pj dirent. Comme aucun processus nest en mesure de progresser dans son excution, aucun ne pourra atteindre le point o il librerait la ressource attendue par
un autre, et la situation est donc fatale, sauf si une entit extrieure est en mesure
dintervenir pour interrompre un des processus en esprant dbloquer tous les autres
en chane. Le diagramme du tableau 3.1 illustre le phnomne avec deux processus
seulement.

3.8.5 Contrle de la mmoire


De toutes les ressources, la mmoire est la plus cruciale, sans mmoire aucune
information ne peut exister dans lordinateur, et bien sr le systme a le monopole
de son allocation, de sa protection et de sa libration. Rien ne serait plus grave que
lempitement dun processus sur une zone mmoire alloue un autre, et cest ce
qui arriverait sans une instance unique de contrle.
5. Lanthropomorphisme dbrid de cet alina et dautres venir peut choquer : le systme bien
sr ne dsire ni ne juge ni ne soctroie quoi que ce soit. Les algorithmes crits par son concepteur et
les paramtres qui leur sont fournis sont les seuls dterminants des mcanismes en jeu. Nanmoins
ces faons de parler allgent lexpression des priphrases quil faudrait sans cesse y introduire. Nous
demandons au lecteur dimaginer leur prsence.

Attributs du systme dexploitation


Processus P1
...
Allocation de la ressource A
...
...
Tentative dallocation de la
ressource B : chec, blocage
...
...
...
...
Libration de la ressource A :
hlas P1 narrivera jamais l.
...
...
...

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)

Dans le cas de la multiprogrammation (voir section 3.2) le partage de la mmoire


entre les processus est une fonction essentielle du systme dexploitation.

3.8.6 Contrle des entres-sorties


Laccs aux dispositifs dentre-sortie est un type de ressource parmi dautres, et
ce titre le systme doit en possder le contrle exclusif, quitte dlguer ce contrle
un processus dans certains cas particuliers. La rgle gnrale est quun processus
qui veut eectuer une opration dentre-sortie (recevoir un caractre tap sur le
clavier, acher un caractre lcran, crire un bloc de donnes sur disque...) adresse
une demande au systme, qui ralise lopration pour son compte. Ainsi est assur
le maintien de la cohrence entre les multiples oprations, et vite loccurrence
dtreintes fatales. Comment le systme dexploitation sy prend-il pour orchestrer
le fonctionnement coordonn de multiples appareils dentre-sortie sans conits ni
perte de temps ? Nous le verrons plus loin.
Comme consquence (ou contre-partie) de ce monopole des entre-sorties, le systme en procure aux autres processus une vue abstraite et simplie.

3.8.7 Contrle du temps


Le systme maintient une base de temps unique pour tous les processus et fournit
des services de gestion du temps aux processus qui le demandent : estampillage,
chronologie, attente, rveil...

3.8.8 Contrle de larrt et du dmarrage de lordinateur


Nous savons dj que le systme dexploitation est le premier programme recevoir le contrle lors du dmarrage de la machine. Il doit aussi recevoir le contrle

42

Du systme dexploitation au processus

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.

3.9 Notion dappel systme


Pour mettre en uvre les principes numrs ci-dessus le systme dexploitation
reoit le monopole de certaines oprations, dites oprations privilgies : allouer des
ressources, dclencher et contrler des oprations dentre-sortie, dautres que nous
verrons ultrieurement. Mais les programmes ordinaires risquent dtre singulirement limits si par exemple ils ne peuvent pas faire dentres-sorties : il ny aurait
par exemple plus de logiciel de traitement de texte possible parce quil ne serait
autoris ni recevoir le texte frapp au clavier par lutilisateur, ni lacher
lcran, ni limprimer. Et nous savons bien quil existe eectivement des logiciels
de traitement de texte qui font tout cela. Comment ? Je vais vous le narrer.
Lorsquun processus ordinaire a besoin deectuer une opration privilgie il
demande au systme dexploitation de la raliser pour son compte, et ventuellement
de lui renvoyer le rsultat. Cette demande de service est nomme un appel systme.
Les oprations privilgies sont considres comme autant de primitives du systme
dexploitation, qui peuvent tre invoques par les programmes ordinaires pourvu
quils soient dots des autorisations adquates. Signalons par exemple, pour Unix :
fork, pour crer un processus ;
kill, pour dtruire un processus ;
exec, pour charger un programme en mmoire ;
signal, qui permet un processus de signaler un vnement un autre
processus ;
read, pour lire des donnes ;
write, pour crire des donnes ;
brk, pour allouer ou librer une zone de mmoire dynamiquement.

3.10 Lancement dun programme


Nous prendrons lexemple du systme Unix. Unix distingue nettement les notions de processus, considr comme le contexte dexcution du programme, et le
programme lui-mme, constitu du texte excutable en langage machine. Le lancement de lexcution dun programme comportera donc deux oprations : la cration
dun processus par lappel systme fork et le chargement par lappel systme exec
du programme qui va sexcuter dans le contexte de ce processus. exec est une forme
gnrale parfois spcialise sous le nom execve.
Nous allons dcrire les vnements qui se droulent aprs lamorage du systme
et le dmarrage du noyau qui ont fait lobjet de la section 2.7. Nous prendrons
lexemple dUnix, qui cre des processus avec lappel systme fork. fork procde
par clonage : le processus ls reoit au dpart une copie de lenvironnement du
processus pre, et cest exec qui va constituer ensuite son environnement propre.

Lancement dun programme

43

Au commencement, le noyau lance le premier processus qui se droule en mode


utilisateur et dans lespace mmoire rserv aux utilisateurs : il sappelle init. init
lance par lappel systme fork divers processus systme utilitaires, puis (toujours
par fork) une copie de lui-mme associe chaque terminal destin aux connexions
des utilisateurs. Ces clones dinit vont dclencher la procdure didentication par
nom identiant et mot de passe des utilisateurs qui se connectent 6 . Une fois lidentit authentie, le programme login utilise lappel systme execve pour charger
en mmoire un interprteur de commandes de lutilisateur, ce que lon nomme un
shell. Le shell va prendre en mmoire la place de login et permettre lutilisateur
dinteragir avec le systme dexploitation ; ce programme mrite que lon sy arrte
un instant.

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

Du systme dexploitation au processus

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.

3.11 Synchronisation de processus, interruption


Nous avons dit que le systme dexploitation, avec laide de dispositifs appropris du matriel, pouvait rpartir le temps de processeur entre plusieurs processus
pseudosimultans. Ceci suppose quun processus, un instant donn, puisse tre
dans ltat actif, un instant suivant dans ltat dormant (en attente), puis encore
un autre instant redmarrer, cest--dire passer de ltat dormant ltat actif.
Nous pouvons concevoir quun processus actif se mette volontairement ltat
dormant. En revanche le passage de ltat dormant ltat actif suppose lintervention du systme dexploitation ou dun autre processus pour rveiller le processus
7. Au cinquime tage du btiment du MIT qui labritait, MAC signiait Multiple Access Computers, au neuvime tage, Man and Computer. Linitiateur du projet tait Robert M. Fano, professeur
au MIT, sur une suggestion de J. C. R. Licklider.
8. J. C. R. Licklider est une des personnalits dont linuence sur le dveloppement de linformatique a t la plus forte. Il fut directeur de la division Information Processing Techniques Oce
(IPTO) de lARPA (Advanced Research Projects Agency), une agence du ministre amricain de la
dfense, dans les annes 1960, et fut ainsi lorigine de projets qui dbouchrent sur les interfaces
personnesordinateurs que nous utilisons aujourdhui, ainsi que sur la cration de lInternet. Ses
deux articles les plus clbres portent des titres prophtiques : Man-Computer Symbiosis (1960) et
The Computer as a Communications Device (1968, en collaboration avec Robert Taylor).

Synchronisation de processus, interruption

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.

3.11.1 Demande dentre-sortie


Les oprations dentre-sortie, nous lavons vu, sont des oprations privilgies,
du monopole du systme dexploitation. Lorsquun logiciel veut eectuer une entresortie il doit eectuer un appel systme. Pour raliser cette opration dentre-sortie
(universellement dsigne par IO, comme input-output, E/S en franais), plusieurs
composants de lordinateur et du systme entrent en jeu :
Le programme eectue un appel systme.
Le systme excute un programme spcial, dit pilote de priphrique (driver),
qui transmet la demande au contrleur de priphrique. Le contrleur est un
circuit de commande du priphrique physique, qui dans le cas des disques
durs est un vritable petit ordinateur spcialis dot de mmoire pour le
stockage des donnes en transit et de capacits de multiprogrammation pour
conduire plusieurs disques simultanment.
Le priphrique physique eectue laction relle : lire, crire, enregistrer, imprimer, mettre un son... Puis il prvient le contrleur quand il a ni en
mettant un signal particulier sur un l particulier. La dure de laction
du priphrique mcanique, nous lavons vu, est beaucoup plus longue que
toutes les actions des composants lectroniques : de lordre de 100 000 fois
plus longue pour une criture sur disque.
Comment cela nit-il ? Nous allons le voir. Le diagramme des oprations est
dcrit par la gure 3.1.
Programme
...
...
...
demande dE/S
mise en attente sur drapeau
...
...
...
rveil
le programme redevient
excutable

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

Figure 3.1 : Diagramme dune opration dentre-sortie (E/S)

Le haut de ce diagramme correspond aux tapes initiales dune opration


dentre-sortie, elles sont comprhensibles avec les notions que nous possdons dj :
Le programme sexcute normalement, puis il met une demande dentresortie (un appel systme).

46

Du systme dexploitation au processus


Immdiatement aprs la demande dentre-sortie 9 le programme se met volontairement en attente, en sommeil. La mise en sommeil se fait par un appel
systme qui transfre le contrle au superviseur aprs avoir sauvegard en
mmoire le contexte dexcution du processus (PSW, registres).
Pour que cette mise en sommeil ne soit pas dnitive il faut prvoir un mcanisme de rveil. En eet un programme qui sest arrt ne pourra pas se
remettre en action spontanment. On pourrait imaginer un htel o chaque
client avant de se coucher accrocherait lextrieur de sa chambre une petite
che o il aurait crit lheure laquelle il souhaite tre rveill et ce quil
veut manger son petit djeuner. Au matin, lemploy dtage eectue une
ronde priodique dans le couloir, consulte les ches et rveille les clients dont
le temps de sommeil est expir. Dans notre cas lappel systme (sleep ou
wait selon les cas) place un endroit connu du systme les informations qui
permettront, lorsque lE/S sera termine, de savoir quel processus rveiller et
quelle information lui donner. Sinon on ne saurait jamais tablir le lien entre
le rsultat de lentre-sortie et le programme qui lavait demande, et celui-ci
ne pourrait jamais reprendre son excution. Un tel ensemble dinformations
est appel une structure de donnes. Son adresse est mentionne par une
toute petite structure appele, par exemple, bloc de contrle dvnement
(ECB, Event Control Block) dans les systmes OS/360.
La demande dentre-sortie est prise en charge par le systme, qui sempresse
de la mettre en le dattente. Sur un systme en multiprogrammation les
demandes dentre-sortie sont en eet multiples et il faut y mettre un ordre.
La partie du systme charge de traiter les demandes dentre-sortie va, plus
tard, extraire notre demande de la le et la traiter, soit en bref la transmettre
au contrleur, qui la transmettra au priphrique physique. Et l commencera
le dlai, incommensurablement long au regard de ce qui prcde, ncessaire
laction elle-mme.

3.11.2 Interruption de n dentre-sortie


Puis lentre-sortie suit son cours, et viendra le moment o le priphrique
(disque dur, clavier, cran...) aura ni son travail. Comment le signaler au programme interrompu ? Celui-ci est dormant, il ne peut recevoir dinformation. Il faut
donc passer par lintermdiaire du systme dexploitation.
lissue du dlai considrable durant lequel le priphrique a travaill, il envoie
au contrleur un signal pour le prvenir, quelques informations qui constituent un
compte-rendu dexcution de la tche, et ventuellement les donnes qui lui taient
demandes, si par exemple il sagissait dune lecture de donnes sur un disque. Voyons
la suite des oprations, pour laquelle nous allons supposer quil sagit prcisment
dune lecture sur disque.
Quand le contrleur a reu la demande dentre-sortie, elle contenait un certain nombre de renseignements, notamment ladresse de la zone de mmoire
9. Par immdiatement on entend avant la n de lexcution de lE/S par le matriel , contrleur et priphrique proprement dit, ce qui, nous lavons vu la section 3.2.1, laisse au processeur
largement le temps dexcuter quelques milliers dinstructions

Synchronisation de processus, interruption

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

Du systme dexploitation au processus


Le superviseur fait passer le processus metteur de ltat dormant ltat dispatchable ou prt, cest--dire candidat redevenir actif, ligible pour lexcution.
Le superviseur dinterruptions passe ensuite la main une autre partie du
systme, lordonnanceur, ou programmateur (en anglais scheduler).

3.12 Ordonnancement de processus


Les systmes que nous envisageons permetttent la multi-programmation, cest-dire que plusieurs processus sont un moment donn en concurrence pour disposer
du processeur, dont on rappelle quen vertu de larchitecture de von Neumann il
excute une seule instruction la fois 10 . Pour permettre cette concurrence, aux
deux sens du terme, commercial et tymologique, il faut que le systme soit capable
de retirer le contrle du processeur un processus pour le donner un autre. La
partie du noyau du systme qui fait cela est lordonnanceur ou programmateur (en
anglais scheduler).
Lordonnanceur reoit la main un moment o tous les processus sont dans ltat
dattente. Certains sont prts (ligibles) pour lexcution (dispatchable), cest--dire
quils ne sont pas en attente dun vnement tel quune n dentre-sortie ou lexpiration dun dlai, et quils nattendent que le feu vert pour recommencer sexcuter.
Dautres sont ltat dormant, par exemple en attente sur un drapeau. Le rle de
lordonnanceur est de slectionner parmi les processus prts celui qui va tre activ.
La mthode de slection peut dpendre de plusieurs paramtres : dlai dattente dj
coul pour chaque processus, niveau de priorit, etc. Puis lordonnanceur passe la
main au distributeur (en anglais dispatcher), qui remet eectivement en activit le
processus slectionn en restaurant son contexte dexcution (PSW, registres). Cest
sur ce processus complexe que sappuie lexemple de la gure 3.1.
Cette description du traitement dentre-sortie nous a amen prciser notre
vision de la gestion des processus et comprendre le fonctionnement eectif de la
multiprogrammation. Tout programme rel interagit avec le monde extrieur par des
entres-sorties ; ce faisant, nous venons de le voir, il se met en attente dun rsultat
dentre-sortie, et par l mme il donne lordonnanceur loccasion de donner la
main un autre programme. Et cest ainsi que chaque programme sexcute son
tour, en pseudosimultanit avec les autres. Nous avons vu aussi le rle fondamental
des interruptions pour le fonctionnement de la multiprogrammation.
Nous comprenons aussi quun programme qui ferait beaucoup de calculs et trs
peu dentres-sorties, par exemple un programme qui devrait calculer et acher la
millionime dcimale de , risquerait de bloquer tous les autres parce quil ne rendrait
jamais la main. Pour parer une telle menace, plusieurs solutions sont envisageables.
10. Rappelons aussi que tous les systmes utiliss rellement aujourdhui (2 dcembre 2013) sont
conformes macroscopiquement larchitecture de von Neumann, cest--dire que les modications
quils lui apportent ne modient pas substantiellement les consquences que lon peut tirer du
principe dexcution squentielle.

Ordonnancement de processus

49

3.12.1 Stratgies dordonnancement


La solution dordonnancement la plus simple consiste dcouper le temps en
tranches et dire quaucun processus ne pourra avoir la main pendant deux tranches
de temps conscutives. Chaque expiration dune tranche de temps dclenche une interruption et donne la main lordonnanceur, qui peut ainsi viter la monopolisation
du processeur par un programme gourmand.
Une autre solution consiste aecter chaque processus une priorit. Lordonnanceur donne toujours la main au processus prt (dispatchable) de plus haute
priorit. Il sut de donner une priorit basse aux processus qui font peu dentressorties et une priorit haute ceux qui en font beaucoup, et dont on sait quils vont
se mettre en attente volontairement souvent.
Il est possible de combiner toutes ces stratgies de rpartition du temps de processeur pour obtenir un systme autorgul. Nous aurons des tranches de temps et des
priorits, qui de surcrot seront variables dynamiquement. Un processus aura deux
faons de sinterrompre : soit volontairement en faisant une demande dentresortie ou tout autre appel systme suivi dune mise en attente, soit en atteignant la
n dune tranche de temps. Lordonnanceur se voit attribuer une prrogative supplmentaire : les bons processus qui se seront interrompus volontairement
verront leur priorit augmente, les mauvais processus qui auront atteint la limite
dune tranche de temps, manifestant par l une tendance nfaste la monopolisation,
verront leur priorit diminue, ce qui amliorera la uidit de la multiprogrammation. Lhypothse sous-jacente est : qui a fait des entres-sorties, en refera ; qui a
calcul, calculera. Notons nanmoins que ce dispositif nimplique pas de prdestination, et quil laisse grande ouverte la porte de la rdemption.

3.12.2 Interruptions et exceptions


Nous avons examin le cas particulier de linterruption dentre-sortie, qui est
provoque par un lment matriel extrieur au processeur, indpendant du cadencement des instructions. Cest une interruption asynchrone. Il existe par ailleurs
des interruptions provoques par le processeur lui-mme, par exemple lorsquil dtecte une condition anormale, ou simplement la demande dun programme. Ces
interruptions sont synchrones, parce que le processeur ne les produit quaprs avoir
termin lexcution dune instruction, et elles sont aussi nommes exceptions.

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

Du systme dexploitation au processus

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.

3.12.4 Systmes non-premptifs


Certains concepteurs de systmes pour micro-ordinateurs ont cru pouvoir faire
lconomie de la premption, qui suppose en eet beaucoup de complexit 11 . Leur
ide (dans les annes 1980) tait que les utilisateurs de leur systme nutiliseraient
quun seul programme la fois, et quil tait donc inutile de gaspiller de la mmoire
pour implanter des mcanismes qui ne serviraient que si lon voulait faire deux choses
la fois, ou plus. En fait, ce raisonnement est fallacieux : mme si lutilisateur ne
lance que le logiciel de traitement de texte, par exemple, ds quil veut imprimer
il fait deux choses la fois, parce quil veut pouvoir continuer taper son texte
pendant limpression.
Ds que le micro-ordinateur est en rseau, les choses se corsent : par dnition,
ds que lon est en rseau on fait plusieurs choses la fois, le traitement local
et les interactions avec le rseau. En outre, les manifestations du rseau viennent
de lextrieur, donc par dnition un instant non prvu (on dit que ce sont des
vnements asynchrones). Nous venons de voir un bon moyen de faire face ce
type de situation : le traitement des interruptions. Mais justement ces systmes
sans premption ne disposent pas dun vrai systme de traitement des interruptions.
Du coup, ils sen remettent la chance : lutilisateur de traitement de texte, nous
lavons vu la section 3.2.1, nutilise quun part inme du temps du processeur, qui la
plupart du temps est donc inactif ; la probabilit que linterruption en provenance du
rseau survienne pendant une priode dactivit est inme ; chaque fois quil se met
en attente dun vnement (par la fonction WaitNextEvent dans le cas de MacOS 9,
par exemple) le systme accorde aux interruptions un certain dlai pendant lequel
elles pourront survenir impunment, parce quil suppute que pendant ce dlai rien ne
se passera : le doigt de lutilisateur ne tapera ni ne cliquera. Si limprobable conit
survient, le systme se plantera , mais aprs tout cela narrivera pas trop souvent
et puisquil sagit dun ordinateur bon march utilis par une seule personne, le client
se fera une raison.
11. Les systmes dont nous parlons sont essentiellement MS-DOS et les systmes fentres qui
reposaient sur lui.

Ordonnancement de processus

51

Les rsultats de ce calcul mesquin ont bien sr t catastrophiques. Avec le


dveloppement des rseaux, ces micro-ordinateurs se sont vite trouvs dans des environnements plus complexes que prvu, sur des rseaux de centaines ou de milliers
de postes. Les plantages ne survenaient plus tous les deux ou trois jours mais
deux ou trois fois par jour. Les clients ont commenc utiliser des logiciels plus
exigeants, notamment les jeux, qui ont souvent des interfaces graphiques trs complexes et qui consomment normment de temps de calcul. Comme ce qui tenait
lieu de systme dexploitation tait indigent, toutes les fonctions complexes ont t
dportes ailleurs, beaucoup dans les cartes graphiques, et le reste dans le logiciel
lui-mme. Cela ne va pas trop mal tant quon utilise un seul logiciel avec une seule
carte graphique, mais il vient bien un moment o il faut sortir de lautisme et changer
de logiciel : et l, en gnral, cela se passe assez mal.
Du fait de la dcience du systme dexpoitation, cest au logiciel de traitement de
texte, par exemple, dassurer lui-mme les fonctions qui normalement incomberaient
celui-l, comme lallocation de mmoire, les entres-sorties, et surtout la raction
aux interruptions asynchrones ; le logiciel devient norme et complexe, mais en plus
il doit esprer que les autres logiciels auront la mme vision du monde que lui et
adopteront les mmes conventions, sinon il y aura des conits. Par exemple, chaque
logiciel gre lui-mme ses entres-sorties, et comporte une heuristique pour estimer
le temps que cela va prendre ; il rend la main pendant ce dlai an quun autre
logiciel en tche de fond , comme on dit dans cet univers, puisse sexcuter. En
procdant ainsi, on commet deux actes de foi : on espre que les autres logiciels
ont des comportements compatibles avec le sien, notamment pour rendre la main
lissue du dlai supput, et que le dlai sera bien respect, parce que si lentre-sortie
se termine inopinment plus tt que prvu, cest le plantage assur. videmment,
si on achte tous ses logiciels chez le mme fournisseur, qui serait aussi le brillant
concepteur du nonsystme dexploitation, on peut esprer limiter les risques...
Jai lu des articles o ces bricolages taient prsents par leurs auteurs comme
une nouvelle faon de concevoir les programmes, plus sympathique et dcontracte
que lancienne mthode encadre par des rgles rigides. Ctait de la programmation
oriente vers les applications , avec des applications coopratives . Bref, ctait
cool et moderne, alors que les vieux systmes dexploitation avaient bien lair davoir
t crits par de svres instituteurs du XIXesicle en blouse grise... Dans un monde
o le client est le plus souvent incomptent, ce genre de dmagogie fonctionne assez
bien, et prsenter ses dciences comme des qualits peut marcher.
Les systmes qui ont succd ces ralisations discutables, Windows NT, 2000,
XP et la suite, sont dots de mcanismes de premption et de traitement multi
tches, mais comme il fallait bien assurer la compatibilit avec la pass, les logiciels
courants sont toujours dots de leurs excroissances palliatives censes corriger les lacunes des systmes dexploitation, do de nouvelles sources de conits qui rsultent
dsormais en crans bleus, caractristiques des plantages de ces systmes (voir aussi
le chapitre 11 consacr la micro-informatique). Le comble de lhorreur est atteint
avec les pilotes de cartes graphiques, grandes sources de catastrophes...

3.12.5 Synchronisation de processus et sections critiques


Nous sommes bien contents davoir un systme premptif, mais si nous rchissons un peu nous voyons apparatre quelques inconvnients. Un processus qui

52

Du systme dexploitation au processus

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

Du systme dexploitation au processus

le systme est cohrent lissue de lopration.


La solution rpond parfaitement lnonc, le problme est quen un cycle de
processeur on ne fait pas grand chose, et notamment on naccde pas la mmoire
principale, on ne peut donc esprer eectuer de cette faon la mise jour complexe
de tables dallocation de ressources. En fait, il est seulement possible, au prix dune
certaine virtuosit dans la conseption des circuits logiques, de tester une position de
mmoire (par exemple un registre du processeur) qui reprsente un drapeau logique
(0 libre, 1 verrouill, par exemple) et, dans le mme cycle, si le test est favorable,
den modier une autre. Cette instruction est gnralement nomme TAS (Test
and Set). Un programme en langage C ne peut garantir latomicit dune de ses
expressions, parce que cela dpend de lusage qui sera fait du langage machine par
le compilateur. Pour franchir cet obstacle, le noyau Linux procure des fonctions destines faire usage des possibilits atomiques du langage machine, nommment
atomic_dec_and_test(v) et atomic_inc_and_test(v).
Les processeurs modernes disposent dinstructions ventuellement plus complexes mais qui assurent latomicit de faon brutale, mme dans le cas de multiprocesseurs, en bloquant laccs au bus mmoire jusqu la n de linstruction.
Les oprations atomiques sont trs limites par leur concision, mais elles peuvent
servir de base des mcanismes plus complexes de protection de sections critiques,
comme ceux que nous allons examiner ci-dessous.
Masquage des interruptions
Tous les processeurs courants possdent un dispositif de masquage des interruptions. Pour la gamme IBM 360 et ses successeurs, il sagit simplement dun bit du
PSW, pour les processeurs Intel rcents un champ du registre eflags. Ici encore,
nous disposons dun moyen radical de protection dune section critique : aucune
interruption ne peut se manifester tant que le drapeau est positionn. Les limites
de cette mthode tiennent sa puissance mme : pendant que les interruptions sont
masques, tous les changes entre le processeur et les organes priphriques sont bloqus. De plus, il est impossible de masquer les interruptions pendant une squence
dinstructions qui risque elle-mme de faire une demande dentre-sortie, cest--dire
dentrer dans un tat dormant : le systme ne se rveillera jamais et restera gel, le
seul recours sera le bouton RESET...
Verrouillage de la section critique
Quand il faut crer une section critique trop longue ou trop complexe pour
quil soit possible de la raliser atomiquement, ou de la protger en masquant les
interruptions, il faut recourir au verrouillage par un procd plus complexe. Il existe
classiquement trois familles de procds, dont on peut dmontrer quelles donnent
des rsultats quivalents : les smaphores invents par Edsger Wybe Dijkstra, les
moniteurs ds C. Antony R. Hoare [32], les bibliothques de fonctions.
Toutes les mthodes de verrouillage reposent sur des principes communs. Un
chemin de contrle du noyau qui doit accder, par exemple, une table dallocation dune ressource systme doit auparavant acqurir un verrou pour cette table. Le
verrou nest rien dautre quune structure de donnes en mmoire : cest purement logique, il ne faut imaginer l aucun dispositif matriel qui verrouillerait physiquement

Ordonnancement de processus

55

une zone de mmoire, ou un lment du processeur, ou un priphrique. Cest--dire


quil na decacit que parce que tous les chemins de contrle susceptibles daccder
la mme ressource utilisent la mme convention de verrouillage, donc cherchent
acqurir le mme verrou. En pratique, ils doivent utiliser tous la mme squence
dinstructions. Inutile de dire que cette squence est partie intgrante du noyau, et
quil est vivement conseill de ne pas laisser les programmes en mode utilisateur accder aux flicits du verrouillage... ce que sempressent de faire, bien videmment,
les applications destines aux systmes non premptifs, avec les rsultats que chacun
peut constater.
Dans son tat le plus simple, le verrou se rduit un bit : libre ou occup. Il
peut avoir une structure plus complexe, et accder ainsi au rang de smaphore, qui
confre les champs suivants (pour le noyau Linux) :
count valeur numrique : si elle est suprieure 0, la ressource est libre, si elle est
infrieure ou gale 0 la ressource est occupe et la valeur absolue de count
est gale au nombre de chemins de contrle qui attendent pour y accder ;
wait adresse de la le dattente des processus 14 en attente daccs la ressource ;
waking une variable dont la valeur sert slectionner dans la le dattente le prochain chemin de contrle qui accdera la ressource, selon un algorithme dont
nous dirons deux mots ci-dessous.
Bref, le smaphore est un verrou dot dune valeur qui dit combien de clients
on peut laisser passer la fois. Traditionnellement, les smaphores sont manipuls
au moyen de deux oprations primitives mystrieusement nommes P et V, initiales
de leurs noms nerlandais 15 , puisque uvre dE.W. Dijkstra. P est invoque par un
processus qui cherche accder la ressource, V par un processus qui la libre et
laisse la place au suivant. Claude Kaiser, un des auteurs de Crocus [19], ma con un
procd mnmotechnique pour ne pas les confondre : P pour Puis-je ? et V pour
Vas-y ! . Le noyau Linux les a prosaquement baptises down (qui dcrmente
count) et up (qui incrmente count).
Lorsquun processus invoque P avec en argument ladresse dun smaphore, la
primitive dcrmente le champ count du smaphore et examine son signe (les deux
actions au moyen dune unique instruction atomique vue la section 3.12.5, sinon
un autre processus pourrait tenter la mme opration en mme temps). Si count est
positif ou nul, le processus acquiert le contrle du smaphore, et lexcution continue
normalement. Si count est ngatif, le processus entre dans ltat dormant et est plac
dans la le dattente dsigne par wait.
Lorsque le processus qui contrlait le smaphore a ni dutiliser la ressource
correspondante, il invoque la primitive V. Celle-ci incrmente le champ count et
examine son signe (les deux actions au moyen dune unique instruction atomique
vue la section 3.12.5, sinon un autre processus pourrait tenter la mme opration
en mme temps). Si count est positif, aucun processus nattendait la ressource,
et lexcution de V se termine. Sinon, elle incrmente le champ waking (opration
14. Conformment lusage nous employons ici et dans les lignes qui suivent processus la
place du fastidieux chemin daccs du noyau excut pour le compte dun processus qui serait
plus exact.
15. P est pour passeren, passer, et V pour vrijgeven, librer.

56

Du systme dexploitation au processus

protge par un verrou et le masquage dinterruptions pour viter toute concurrence)


et rveille les processus de la le dattente pointe par wait. Chaque processus rveill
excute alors la suite de P, qui contient une section critique pour tester si waking est
positif. Le premier excuter cette section critique dcrmente waking et acquiert le
contrle du smaphore, les suivants trouvent waking ngatif ou nul et se rendorment.
Leet produit par linvocation de P et de V dpend de la valeur initiale de
count ; si elles est de 1, P et V ralisent lexclusion mutuelle entre des processus qui
essaient daccder une ressource partage ; P est excut lentre dune section
critique, V sa sortie, et le rsultat est que seul un processus peut sexcuter dans
la section critique la fois.
Cet algorithme donne le rsultat voulu parce que tous les processus en concurrence excutent les mmes appels systme et obissent aux mmes conventions pour
se synchroniser. Inutile de dire que dans un systme (ou prtendu tel) non premptif
qui table sur la bonne volont cooprative des logiciels dapplication pour assurer
cette cohrence, il sut dun logiciel mal crit pour provoquer des catastrophes, et
lexprience prouve que cela se produit.

Chapitre 4 Mmoire

Sommaire
4.1
4.2

4.3

4.4

4.5
4.6

4.7

Les problmes rsoudre . . . . . . . . . . . . . . . . . . . . . .


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 . . . . . . . . . . . . . . . . .
Partage de mmoire en multiprogrammation . . . . . . . . . . .
4.3.1 Exemple : lOS/360 . . . . . . . . . . . . . . . . . . . . .
4.3.2 Translation des programmes . . . . . . . . . . . . . . . .
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,
TLB) . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.4.6 Tables de pages inverses . . . . . . . . . . . . . . . . . .
4.4.7 Mmoire virtuelle segmente . . . . . . . . . . . . . . . .
4.4.8 Petite chronologie de la mmoire virtuelle . . . . . . . .
Hirarchie de mmoire . . . . . . . . . . . . . . . . . . . . . . . .
4.5.1 Position du problme . . . . . . . . . . . . . . . . . . . .
La technique du cache . . . . . . . . . . . . . . . . . . . . . . . .
4.6.1 Cache mmoire . . . . . . . . . . . . . . . . . . . . . . .
4.6.2 Hirarchie de mmoire : donnes numriques 2009 . . . .
4.6.3 Mise en uvre du cache . . . . . . . . . . . . . . . . . .
Langage et mmoire . . . . . . . . . . . . . . . . . . . . . . . . .
4.7.1 Langages mmoire statique . . . . . . . . . . . . . . .
4.7.2 Vecteur dtat dun programme . . . . . . . . . . . . . .
4.7.3 Langages mmoire dynamique . . . . . . . . . . . . . .
Allocation de mmoire sur la pile . . . . . . . . . . . . .
Allocation de mmoire sur le tas . . . . . . . . . . . . .
Gestion de la mmoire dynamique . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.

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

4.1 Les problmes rsoudre


La mmoire, terme dun anthropomorphisme abusif hrit des cerveaux articiels et auquel les Anglo-Saxons ont raison de souvent prfrer storage, est un

58

Mmoire

lment essentiel de larchitecture de von Neumann. Lorsquun calcul est eectu


par un ordinateur, ses phases successives sont reprsentes par dirents tats de la
mmoire, ce qui est la ralisation technique du ruban de la machine de Turing. Ds
que le calcul se complique, lorganisation de la mmoire joue un rle important dans
lecacit et lintelligibilit du programme.
En outre, ds quun systme dexploitation permet la prsence simultane en
mmoire (et lexcution pseudosimultane ) de plusieurs programmes il faut
partager entre eux la mmoire disponible et veiller viter que lun nempite sur
la zone rserve lautre. Les systmes modernes permettent galement dallouer
dynamiquement des zones mmoires pour y reprsenter des objets temporaires qui
seront supprims avant la n du programme, ce qui permettra de rendre disponible
la zone mmoire correspondante.
Enn, encore aujourdhui la mmoire rapide est une ressource coteuse, aussi
les ordinateurs modernes sont-ils dots non pas dune mmoire homogne dun seul
tenant, mais dune hirarchie de mmoires, en commenant par une toute petite
mmoire trs rapide pratiquement incorpore au circuit du processeur, puis des mmoires de plus en plus grandes et de plus en plus lentes, pour nir par un espace sur
disque magntique o sont recopies les zones mmoire provisoirement inutilises. La
petite mmoire trs rapide contient des donnes en cours de traitement, les grandes
mmoire lentes (et bon march) contiennent des donnes en attente.
Toutes ces questions, regroupes sous le titre de gestion de la mmoire , sont
lobjet des soins attentifs des architectes de processeurs et des crivains de systmes
dexploitation, parce que leur solution plus ou moins heureuse jouera un rle primordial pour lecacit plus ou moins grande du couple processeursystme, et que
la conception du matriel et celle du logiciel sont ici trs troitement intriques. Un
systme de mmoire rat lors de la conception initiale dune architecture est un des
rares dfauts non rattrapables.

4.2 La mmoire du programme


Nous avons dit que les tats successifs de la mmoire reprsentent les tapes
successives dun calcul. La thorie de cette reprsentation, telle quillustre la
grande poque des systmes formels par Kurt Gdel, Alan Turing et Alonzo Church,
conduit des notations dune rigueur implacable mais dun maniement dlicat, qui
rserverait la programmation des ordinateurs une lite trie sur le volet de la
mathmatique. Lhistoire des langages de programmation est marque par une volution vers lexpressivit, destine faciliter lcriture comme la comprhension des
programmes.

4.2.1 Les mots de mmoire


Ds von Neumann la mmoire est structure, nous lavons vu, en mots qui regroupent un certain nombre de bits. Un dtail ne pas oublier : tous les mots ont la
mme taille constante. Si lon considre chaque bit comme un chire binaire et un
mot de taille n comme un nombre binaire de n chires, nous avons llment de base
dune arithmtique. Lannexe A donne quelques dtails sur sa ralisation concrte.
Nous avons vu que nous devons aussi reprsenter en mmoire bien dautres choses
que des nombres. Dabord et malgr quen aient les physiciens et les numriciens,

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 .

4.2.2 Les adresses


Il faut allouer chacun de ces objets un ou plusieurs mots de mmoire, et ensuite
pouvoir les y retrouver. Ceci suppose un systme didentication et de reprage des
mots individuels, un systme dadresses. Beaucoup de solutions ont t essayes,
mais aujourdhui tous les concepteurs se sont rallis la plus simple : les mots de la
mmoire centrale sont numrots du premier au dernier et chaque mot est identi
par son numro dordre qui est son adresse. Enn, un facteur prs : pour des
raisons de commodit lunit adressable de mmoire est le plus souvent aujourdhui
un octet de 8 bits, le mot comportera quatre ou huit octets et les adresses de mots
seront des multiples de 4 ou de 8.
Ceci semble anodin et simple, et il sagit pourtant dun choix technique absolument crucial. Ladresse est un numro, donc un nombre, un nombre binaire, on laura
devin. Les adresses, nous lavons vu en 2.4.1, sont manipules par les instructions,
cest--dire quelles doivent tenir dans les registres 2 . La taille dun registre en bits
est la borne suprieure du nombre de chires binaires dune adresse. Si le registre
a n bits, la plus grande adresse vaudra 2n 1, et donc aucun ordinateur conforme
cette architecture ne pourra avoir une capacit mmoire suprieure 2n octets.
Cette valeur de n intervient partout dans larchitecture et dans les programmes, si
on la prvue trop petite au dpart cest irrparable.
Larchitecture 360 conue au dbut des annes 1960 comportait des mots, et
donc des registres, de 32 bits, ce qui permettait une taille mmoire maximum de 232
octets, un peu plus de 4 milliards. lpoque cette valeur semblait norme, et les
ingnieurs limitrent la taille des adresses 24 bits donnant accs une mmoire de
16 millions doctets. En eet chaque bit dadresse supplmentaire cote trs cher :
les adresses sont transmises entre le processeur, la mmoire et les priphriques
par des bus spciaux (les bus dadresse) qui comportent un l par bit. La largeur
du bus dadresse pse lourd dans le budget du processeur en termes de surface, de
consommation lectrique, de complexit des dispositifs, sans parler de la taille accrue
des circuits logiques de toutes les instructions qui doivent manipuler des adresses.
Les concepteurs du matriel mirent en garde les concepteurs de logiciels : interdiction dutiliser les huit bits vides qui restaient dans les mots de mmoire ou les
registres qui contenaient des adresses, ils seraient prcieux pour une extension ultrieure de larchitecture ! Mais une poque o chaque bit de mmoire tait utilis
avec parcimonie et bon escient ctait un supplice de Tantale. Lorsqu la n des
1. Les instructions des processeurs RISC contemporains (architectures ARM et MIPS par
exemple) sont de longueur xe et occupent chacune un mot (de 32 ou 64 bits), ce qui simplie
la conception de beaucoup de composants du processeur et du systme. Les grands systmes IBM
(larchitecture 360 et sa postrit) ont des instructions sur un demi-mot, un mot ou un mot et demi.
Sur le processeur Itanium (architecture IA-64) trois instructions de 41 bits et un masque de 5 bits
se partagent un double mot. Voir le chapitre 9 pour plus de dtails.
2. Notre programme dexemple avait un jeu dinstructions autorisant la prsence dadresses
directement dans les instructions, ce qui nest plus le cas des architectures rcentes, o les adresses
sont manipules dans les registres.

60

Mmoire

annes 1970 la limite de 16 millions doctets se rvla une contrainte insupportable,


les systmes dexploitation dvelopps par IBM soi-mme pour larchitecture 360 utilisaient rgulirement les huit bits de poids fort des mots dadresse pour toutes sortes
dusages, et la conversion larchitecture XA (pour Extended addressing, passage
aux adresses sur 32 bits) imposa un remaniement complet de milliers de modules de
logiciel, au prix dannes de travail et de millions de dollars 3 . Cette imprvoyance
eut de fait des consquences bien plus lourdes mme si bien moins mdiatiques que
le soi-disant bug de lan 2000 .

4.2.3 Noms et variables


Ladresse, que nous venons de dcrire, a deux fonctions bien direntes : elle
repre la position physique dun emplacement en mmoire, et elle permet un
programme en langage machine (ou en assembleur) den dsigner le contenu. Dans
ce dernier rle ladresse exerce la fonction de nom : un lment de langage (un
lexme) qui dsigne est un nom.
En langage machine ou assembleur les noms sont des adresses, mais dans des
langages de plus haut niveau les noms sont des lexmes plus abstraits, en fait plus
similaires ce que nous appelons nom dans la grammaire des langages humains.
De tels noms seront gnralement appels des identiants. Mais pour tre excut
le programme en langage de haut niveau sera traduit en langage assembleur, puis
en langage machine, et ses noms (ses identiants) se rsoudront en adresses qui
permettront daccder physiquement la donne.
En langage machine ou assembleur mme, la donne traite nest pas toujours
dsigne directement par une adresse simple. Un mot peut contenir ladresse dun
autre mot qui, lui, contient ladresse de la donne, cest ladressage indirect. Il peut
aussi tre commode de traiter de faon itrative une srie de mots adjacents comme
un tableau : un registre R1 contiendra ladresse du premier mot, et un registre R2
contiendra le rang du mot courant dans la srie, ventuellement multiplie par la
taille du mot en octets : ainsi ladresse relle du mot traiter sera R1 + R2. R1 sera
appel registre de base et R2 registre index du tableau. Lart de la programmation
en assembleur consiste utiliser judicieusement les possibilits dadressage indirect
et index.
Dans un langage volu, en gnral, on a envie de conserver des rsultats intermdiaires, ou des valeurs signicatives dun calcul ou dun traitement de quelque
sorte. Ces valeurs, de quelque type (nombre, texte, image), occupent un ou plusieurs
mots qui constituent un objet lmentaire. Bref, on souhaite pouvoir retrouver,
la demande, la valeur dun objet du langage. La solution retenue consiste souvent
associer la valeur un nom (un identiant) de telle sorte que lvocation ultrieure
de ce nom procure un accs la valeur. Lidentiant sera le nom de lobjet.
Lobjet le plus habituel des langages de programmation volus est la variable. La
variable, nous lavons vu la section 2.8, est un objet dot des proprits suivantes
(que nous enrichissons ici) :
3. En ralit XA est un adressage sur 31 bits ; pour viter les conits trop graves avec les anciens
programmes, on conserve les adresses traditionnelles sur 24 bits et on dgage 231 octets adressables
nouveaux en utilisant des adresses ngatives (voir lannexe A pour la reprsentation des nombres
binaires ngatifs, qui explique cet artice).

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.

4.2.4 Protection de la mmoire


Ds que les systmes se compliqurent, et surtout ds quil y eut plusieurs programmes en mmoire, des accidents arrivrent. Si lon a en mmoire le petit programme en langage machine de la section 2.4.1, il est clair quune erreur de programmation trs banale peut envoyer une donne une mauvaise adresse, et craser une
donne ou une instruction qui ne devrait pas ltre, ce qui perturbera radicalement
les traitements ultrieurs. Si encore le programme erron dtruit ses propres donnes
ou son propre texte, lauteur na qu sen prendre lui-mme, mais sil sagit de

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.

4.3 Partage de mmoire en multiprogrammation


Les sections 3.2 et 3.8 ont dcrit les principes de la multiprogrammation et ses
consquences dans le domaine de la mmoire ; il faut maintenant prciser comment
se fait lattribution de la mmoire chacun des programmes concomitants pseudosimultans.

4.3.1 Exemple : lOS/360


Les premiers systmes dexploitation destins larchitecture IBM 360, au milieu
des annes 1960, procdaient de faon statique : une zone xe en mmoire tait
attribue chaque programme son dmarrage et il la gardait jusqu la n de son
excution. Il existait deux variantes :
Avec lOS/MFT (Multiprogramming with a xed number of tasks), la mmoire
tait dcoupe en partitions xes au dmarrage du systme. Il appartenait
ladministrateur du systme de xer judicieusement le nombre de partitions
et la taille de chacune dentre elles. Les travaux taient rpartis en classes
(en fait des les dattente) et chaque classe tait ligible pour une ou plusieurs partitions, principalement en fonction de la taille mmoire ncessaire
lexcution des travaux de la classe. On pouvait ainsi prvoir plusieurs petites partitions pour petits travaux et une grande partition pour les gros. Le
modle de le dattente pour lexcution des travaux est laiss en exercice au
lecteur.
Linconvnient de ce systme est facile imaginer : les partitions sont des
lits de Procuste. Leur taille est toujours plus ou moins arbitraire et tous
les programmes ne peuvent pas sy adapter exactement. De surcrot les les
dattente de certaines classes peuvent tre vides alors que dautres peuvent
tre embouteilles. Tout ceci entrane un risque de mauvaise utilisation de la
mmoire.
La version plus perfectionne, OS/MVT (Multiprogramming with a variable
number of tasks), abolit le dcoupage rigide de la mmoire. Chaque pro-

Partage de mmoire en multiprogrammation

63

gramme annonce la taille de la rgion de mmoire ncessaire son excution


et ds quelle est disponible elle lui est attribue, toujours une fois pour toutes
et jusqu la n de son excution. Dtail important : la rgion de mmoire
ainsi alloue est contigu.
OS/MVT est beaucoup plus complexe mais beaucoup plus satisfaisant
quOS/MFT. Nanmoins on voit bien que ce nest pas vraiment satisfaisant : les programmes ont des tailles et des dures dexcution arbitraires.
Lorsquun programme se termine il libre une rgion de mmoire qui laisse
un trou une adresse arbitraire au milieu de la mmoire. Rien nassure que
parmi les programmes en le dattente il y en aura un qui logera dans ce
trou. Il peut ainsi se crer un eet fromage de gruyre , o plusieurs trous
de mmoire atteignent taille cumule susante pour les travaux en attente,
mais comme chacun est trop petit, la le dattente est bloque.
Ce dfaut de la gestion de mmoire de lOS/360 sera corrig par lintroduction de la mmoire virtuelle que nous tudierons la section suivante,
mais auparavant il nous faut complter ce qui vient dtre dit en expliquant
la translation des programmes, sans quoi nous ne pourrions avoir plusieurs
programmes en mmoire simultanment.

4.3.2 Translation des programmes


Oui il sagit bien de translation, puisquaujourdhui il faut prciser en employant
ce mot que lon nest pas en train de faire une erreur de traduction (justement) de
langlais translation qui signie traduction en franais 4 . Nous avons donc parl plus
haut de la traduction des programmes, ici cest de leur translation quil sagit.
Le lecteur vigilant, la lecture des alinas prcdents, aura d se demander comment il est possible de charger des programmes en mmoire des adresses somme
toute imprvisibles sans en perturber la fonctionnement ? Lors de nos essais en langage machine nos programmes comportaient des adresses qui dsignaient sans ambigut un mot de mmoire bien dtermin o devait se trouver une instruction ou
une donne indispensable au bon droulement des oprations. Locus regit actum...
Si maintenant on nous dit que le programme va tre charg une adresse qui ne
sera plus ladresse 0, mais une position quelconque et imprvue en plein milieu de la
mmoire, tout le texte va tre dcal, et chaque objet dsign par le programme aura
une adresse qui ne sera plus ladresse absolue partir de 0 que nous avions crite,
mais cette adresse additionne de ladresse de chargement du programme. Comment
est-ce possible ? Nous avons dj abord cette question la section 2.6, nous allons
y revenir ici.
Lorsquon programme en assembleur, on crit rarement des adresses absolues.
Les assembleurs allgent la tche du programmeur en lui permettant de dsigner
la position dun octet dans le texte du programme par un nom symbolique, que
4. Je voudrais en proter pour rhabiliter aussi consistant, qui nest pas la traduction franaise
de consistent, laquelle est cohrent . Linconvnient de ces confusions est la perte de signis.
La consistance et la translation sont des concepts intressants et utiles, menacs de disparition
par extinction (usurpation ?) de leurs signiants. Si aujourdhui dans un milieu mathmatique vous
vous risquez ne pas employer consistant o il faudrait cohrent, au mieux vous ne vous ferez pas
comprendre, et vous serez souponn de ne pas tre un habitu des confrences anglo-saxonnes.

64

Mmoire

lassembleur se chargera de traduire en adresse. Nous avons vu un exemple dusage de


nom symbolique dans le programme assembleur de la section 2.6, avec le traitement
de ltiquette FIN, qui dsignait linstruction situe ladresse absolue 5. Un tel
symbole peut de la mme faon dsigner le premier octet dune zone de mmoire qui
contient une donne.
Nous voulons maintenant que ce symbole ne dsigne plus ladresse absolue 5,
mais une adresse relative par rapport au dbut du programme, lequel ne serait
plus ncessairement ladresse 0. Pour ce faire, notre assembleur devra oprer une
traduction un peu plus complexe ; chaque symbole sera traduit en adresse selon le
schma suivant : ladresse sera exprime comme la somme de deux termes :
un dplacement par rapport au dbut du programme, gal ladresse que
nous avions crite de faon absolue ;
une valeur dite de base, qui correspondra ladresse de chargement du programme, et sera contenue dans un registre, dit registre de base.
Pendant lassemblage proprement dit, le registre de base recevra la valeur 0. Au
moment de lexcution, il recevra ladresse du point de chargement du programme
en mmoire, et ainsi nos adresses exprimes sous la forme base + dplacement seront
juste. Le mcanisme qui place dans le registre de base ladresse de dbut du programme varie selon les systmes, il est parfois la charge du systme dexploitation,
dautres ralisations laissent cette action la charge du programmeur qui dispose
dinstructions capables de leectuer (cest le cas de lOS/360). Enn, noublions pas
que lorsque que nous disons programmeur il faut la plupart du temps entendre compilateur, parce que cest lui qui va traduire en assembleur les programmes crits en
langage volu par des humains qui nauront pas eu se soucier de ces contingences
techniques pourtant passionnantes.
Ce perfectionnement de lassembleur nest pas trs spectaculaire, mais sans lui la
multiprogrammation serait plus complexe raliser. Les programmes assembls selon ce principe avec des adresses sous forme de base + dplacement sont appels des
programmes translatables. La translation des programmes est parfois aussi nomme
rimplantation . Nous retrouverons un autre usage de cette proprit lorsque nous
parlerons de ldition de liens, qui permet de runir plusieurs modules de programmes
compils indpendamment (cest--dire ventuellement crits dans des langages diffrents) pour constituer un seul programme.

4.4 Mmoire virtuelle


4.4.1 Insusance de la mmoire statique
Nous avons vu ci-dessus que lallocation un programme de la zone mmoire
dont il avait besoin, de faon xe une fois pour toutes au dbut de son excution,
avait un inconvnient qui tait la fragmentation de la mmoire au fur et mesure du
lancement des instants alatoires de programmes de tailles htrognes. Ainsi peut
tre libre une zone de mmoire de taille susante pour lancer un programme sans
que le lancement soit possible, parce que cette zone libre est constitue de fragments
disjoints.
Certains systmes des annes 1960 (Univac, Control Data) palliaient cette inecacit en rorganisant priodiquement la mmoire pour tasser les zones utilises

Mmoire virtuelle

65

les unes contre les autres. Mais une solution bien plus radicale allait advenir : la
mmoire virtuelle. La voici.

4.4.2 Organisation gnrale


Lorganisation de mmoire virtuelle que nous allons dcrire est inspire de celle
des systmes IBM 370 et suivants, mais les autres ralisations sont assez comparables.
Il y a eu des organisations direntes, mais celle-ci, qui est la plus simple, sest aussi
rvle la plus ecace, ce qui a assur son succs gnral.
Il existe dans cette organisation trois tats de la mmoire : virtuelle, relle,
auxiliaire. La mmoire virtuelle est celle que les programmes utilisent, mais elle
nexiste pas vraiment. Un emplacement de la mmoire virtuelle peut avoir ou ne
pas avoir de contenu ; sil na pas de contenu il est simplement virtuel et le restera
jusqu ce que le programme dcide dy placer un contenu ; sil a un contenu il faut
bien que celui-ci existe quelque part, et ce quelque part sera soit la mmoire relle,
soit une zone tampon sur disque appele mmoire auxiliaire.
La mmoire virtuelle rpond deux proccupations. La premire vise viter le
gaspillage de fragments de mmoire en permettant la mmoire linaire vue par le
programme dtre physiquement constitue de fragments disjoints, ce qui supprime
linconvnient de la fragmentation de la mmoire, au prix dun mcanisme que nous
allons tudier pour rtablir la ction de la linarit 5 .
Localit des traitements
La seconde proccupation rpond un phnomne appel localit des traitements. Si nous observons, cycle par cycle, le droulement dun programme dont la
taille mmoire est par exemple de un million doctets, nous constaterons que pendant
une tranche de temps donne, brve par rapport au temps dexcution total, il ne
fait rfrence qu un petit nombre dadresses proches les unes des autres. Ceci veut
dire qu chaque instant le programme a besoin de beaucoup moins de mmoire quil
ne lui en faut au total, et que le contenu de la mmoire inutile un instant donn
pourrait tre stock provisoirement dans un endroit moins coteux, par exemple sur
disque.
Lorsque le systme dexploitation lance lexcution dun programme, il lui alloue
un espace de mmoire virtuelle. Comme cette mmoire est virtuelle, donc gratuite ou
presque, lespace allou est aussi vaste que lon veut, dans les limites de ladressage
possible avec la taille de mot disponible.
Cet espace de mmoire virtuelle est dcoup en pages de taille xe (souvent
212 = 4 096 octets, pour xer les ides) et dcrit par une table des pages. En fait, pour
viter davoir une seule grande table incommode manipuler on aura gnralement
une table plusieurs niveaux, avec une table de segments au niveau le plus lev,
un segment comprenant par exemple 32 pages et chaque segment ayant une petite
table de pages, mais lide est la mme.
5. Malgr les avantages quelle apporte, la mmoire virtuelle na pas eu que des acionados.
Seymour Cray, qui fut le concepteur des ordinateurs les plus puissants du XXe sicle, de 1957
1972 pour Control Data Corporation , puis jusqu sa mort en 1996 pour Cray Research, a dit :
La mmoire, cest comme le sexe : cest meilleur quand cest rel.

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

Le DAT consulte la table des pages pour y chercher lentre correspondant au


numro de page virtuelle voulu. Selon les trois cas numrs ci-dessus trois situations
peuvent se prsenter :
Dans le cas 1 de la liste ci-dessus la page existe et possde une incarnation
en mmoire relle. Le circuit de traduction dadresse trouve dans la table des
pages ladresse du cadre de page qui contient la page virtuelle. Cette adresse
est additionne au dplacement dans la page, ce qui donne ladresse relle
laquelle le programme doit accder.
Voyons ensuite le cas 2 : ladresse voque par le programme na encore fait
lobjet daucune rfrence, non plus quaucune adresse de la mme page.
Cette situation peut se produire au lancement dun programme, ou aprs
lallocation dune zone de mmoire dynamique vierge, par exemple. Il va
falloir obtenir du systme une page relle neuve et placer son adresse dans
la table des pages, ainsi nous serons ramens au problme prcdent, aprs
la consommation dun nombre non ngligeable de cycles de processeur. La
MMU gnre une exception dite de dfaut de page (la section 3.12.2 donne la
dnition des exceptions), et le gestionnaire de dfaut de page va tre charg
dobtenir une page relle neuve.
Registre STOR (pointe sur la table des segments
du processus courant)
Adresse virtuelle traduire
2

1234

Table des pages du processus


courant

Table des segments du processus


courant
N de segment

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

Le systme va chercher llment


correspondant
dans la table des pages externes

Table des pages externes


N de page

Table des cadres de page


N de cadre

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

Case de page externe

La page est charge


dans la mmoire relle
Toutes les tables sont
mises jour.

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.

Une vision de la pagination


La technique de pagination a suscit une oraison de mtaphores explicatives,
qui aident comprendre la question. Celle que je cite ici ma t fournie par mon
collgue Henri Leridon :
Finalement, tout a me semble relever du problme du garon de plage sur la
Cte dAzur au mois daot. Je mexplique. Le plagiste doit grer au mieux un
espace limit, avec des clients qui vont et viennent en exprimant des besoins (de
surface au sol : on les laisse se dbrouiller dans leau) varis. On peut compliquer
un peu en supposant que les premiers arrivs dune mme famille ne savent pas
lavance combien ils seront au total, ni quelle heure arrivera le reste de la famille,
mais quils voudront tre tous ensemble. On pourrait aussi admettre quil y a deux
plagistes, situs chacun une extrmit de la plage et grant plus ou moins le mme
espace. Et pourquoi ne pas admettre que les clients seraient en droit de changer de
place (pour se rapprocher du bar, par exemple), les plagistes devant alors svertuer
conserver leur adresse ?

Mmoire virtuelle

69

4.4.4 Espaces adresse


Les premiers systmes mmoire virtuelle (chez IBM par exemple OS/VS1 et
VS2 en 1972) allouaient pour lensemble du systme un espace unique de mmoire
virtuelle dont la taille tait xe par la valeur maximum dune adresse. Cet espace
virtuel tait partag entre les programmes selon les mmes principes que dans les
anciens systmes sans mmoire virtuelle, tels que nous les avons exposs au dbut
de ce chapitre. Ceci prsentait lavantage que ladjonction de la mmoire virtuelle
modiait assez peu le systme dexploitation.
Cependant le caractre virtuel de la mmoire alloue permet dimaginer dautres
solutions, notamment allouer chaque programme un espace de mmoire virtuelle
entier. Pour raliser un tel systme il faut donner chaque programme une table
des pages particulire, qui dcrit tout lespace adressable. Quand le systme dexploitation donnera la main un autre programme il changera galement de table
des pages. Ce sera chez IBM le systme MVS (Multiple Virtual Storage) en 1974,
chez Digital Equipment VMS en 1978, chez Data General AOS/VS... Une mmoire
virtuelle espaces adresse multiples est illustre par la gure 4.2.
Il ne devrait pas chapper au lecteur attentif une consquence importante de cette
multiplication des espaces de mmoire virtuelle (ou espaces adresse) : une adresse
virtuelle donne est dsormais traduite dans le contexte dexcution dun programme
donn, la mme adresse dans le contexte dun autre programme est traduite partir
dune autre table des pages, et correspond donc une autre adresse relle. Il est de ce
fait impossible un programme de faire rfrence une adresse qui appartient une
page de mmoire virtuelle dun autre programme. La mmoire virtuelle espaces
adresse multiples amliore la scurit des donnes.
Autre consquence : dans les systmes espace adresse unique (virtuel ou non)
ladresse de chargement dun programme dpend de lemplacement de la zone de
mmoire libre que le systme a pu lui allouer, elle est donc variable, do les techniques de translation exposes la section 4.3.2. Maintenant que chaque programme
a son espace priv, rien ninterdit de le charger toujours la mme adresse, et davoir
une carte de la mmoire identique dune excution lautre. Cela dit les techniques
de translation conservent leur utilit pour pouvoir lier ensemble des programmes
crits sparment, elles ont mme trouv un surcrot dutilit avec les techniques de
processus lgers connus sous le nom dactivits (threads) : la multi-activit (multithreading) consiste faire excuter plusieurs parties de programmes en pseudo
simultanit dans le mme espace adresse (voir section 10.4). Linstabilit notoire
de certains programmes qui reposent sur cette technique, au premier rang desquels
les navigateurs du WWW, dcoule peut-tre de cette promiscuit en mmoire, qui
a par ailleurs des avantages : il est commode de pouvoir acher plusieurs fentres
du navigateur lcran, et de consulter une page dans une fentre cependant quune
autre se charge dans une fentre dirente et quun transfert de chier a lieu dans
une troisime. Vous ne le saviez peut-tre pas mais cest de la multi-activit.
Que chaque programme sexcute dans son espace priv inaccessible aux autres
parce que tout simplement aucun nom nest disponible pour en dsigner les emplacements, trs bien, mais il y a quand mme des choses partager. Notamment le
systme dexploitation, qui aprs tout est lui aussi un programme, avec des sousprogrammes qui doivent pouvoir tre appels par les programmes ordinaires. Le
systme dexploitation comporte aussi de nombreuses tables qui contiennent des in-

70

Mmoire

formations relatives ltat de lordinateur et du systme, comme par exemple le


fuseau horaire de rfrence, des moyens daccs aux donnes sur disque ou au rseau,
etc. Comment y accder ?
6me espaceadresse

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

Figure 4.2 : Mmoire virtuelle espaces adresse multiples

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...

4.4.5 Registres associatifs (Translation Lookaside Buer, TLB)


Tout ceci fonctionne, mais il est dicile de ne pas se poser la question suivante : si
chaque accs la mmoire entrane une traduction dadresse, et que celle-ci entrane
la consultation dune table des pages, cela risque de consommer un temps considrable, mme avec une table hirarchise et un circuit spcial. Un espace adresse de
232 octets (adresses sur 32 bits) dcoup en pages de 4 096 octets aura une table des
pages avec un million dentres, alors ne parlons pas dadresses sur 64 bits qui nous
entraneraient vers une table 252 entres...
En fait, un systme de mmoire tel que celui dcrit jusquici serait dune lenteur
excrable. Pour en accrotre la vitesse les MMU relles ont recours un dispositif
qui ne change rien aux grands principes de fonctionnement mais qui procure une
acclration spectaculaire : le tampon de traduction anticipe (Translation Lookaside
Buer, TLB).
Lide est de tirer parti une seconde fois de la localit des traitements (cf. section
4.4.2). Puisquun programme un moment donn ne fait rfrence qu un petit
nombre dadresses proches les unes des autres (cest un fait dobservation gnrale),
cest quil utilise (pendant ce laps de temps) toujours les mmes pages. Il serait donc
judicieux de garder sous la main, cest--dire dans quelques registres implants sur le
circuit du processeur, et de ce fait dun accs beaucoup plus rapide que la mmoire,
le rsultat des traductions les plus rcentes, soit une table de correspondance numro
de page virtuelle numro de cadre de page pour ces quelques pages utilises.
Comment dterminer les pages privilgies dont le cadre de page de rsidence
gurera dans le TLB ? Ce seront les pages les plus rcemment utilises. chaque
rfrence la mmoire, le MMU dclenche en parallle deux mthodes de traduction
dadresse : consulter le TLB pour voir si la page cherche ny gure pas, activer le
DAT pour parcourir la table des pages. Si la consultation du TLB russit, le DAT
beaucoup plus lent est arrt. Si elle choue le DAT poursuit la traduction jusqu
son terme et en place le rsultat dans le TLB pour la prochaine fois.
O le DAT va-t-il placer le rsultat de la traduction quil vient deectuer ? la
place dune autre entre.
Pour tre ecace, le TLB na pas besoin dtre trs grand : en fait, une taille
tonnamment petite sut, en gnral 64 entres. Gnralement, les systmes espaces adresse multiples voqus la section prcdent 4.4.4 mettent le TLB en chec,
et chaque commutation de contexte, qui entrane un changement despace adresse,
ncessite la remise zro du TLB. Le plus surprenant est que le TLB reste nanmoins ecace. Signalons que certains processeurs, tel le MIPS R4000, utilisent un
TLB tiquet (tagged TLB), cest--dire que chaque entre de TLB comporte lidentiant de lespace adresse auquel elle appartient, ce qui vite la pnalit que nous
venons dvoquer.
Ce dispositif est si ecace et rsout une si grande proportion des traductions
dadresses (plus de 99% !) que certains concepteurs se sont dit que le DAT servait
trs rarement et quil susait de le raliser en logiciel, ce qui est beaucoup plus lent
mais plus simple et moins coteux, et libre des nanomtrescarrs prcieux sur le

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.

4.4.6 Tables de pages inverses


Nous venons de voir quavec lavnement des adresses sur 64 bits, et donc des espaces adresse de 264 octets, il nous faudrait des tables de pages avec 252 entres, soit,
avec huit octets par entre, 30 millions de gibioctets 6 . Cest impossible aujourdhui
et pour encore pas mal de temps. Une solution, retenue sur les premires versions
de lAlpha et de lItanium, est de rduire arbitrairement mais radicalement la taille
mmoire adressable en limitant le nombre de lignes du bus dadresses, mais ce nest
gure satisfaisant.
Une solution ce problme, dite des tables inverses, est la suivante : au lieu
davoir une table des pages avec une entre par page virtuelle, on a juste une table
des cadres de page qui contient pour chaque cadre la rfrence de la page virtuelle
quil contient, cette rfrence comportant le numro de page virtuelle et lidentiant
du programme propritaire de lespace adresse. Lavantage de la table des cadres de
pages, cest quelle est beaucoup plus petite, et par dnition dans un rapport de
taille avec la mmoire relle de lordre de un pour mille.
Lon a ainsi une table qui donne la correspondance cadre de page physique
page de mmoire virtuelle, mais en gnral on cherche faire la conversion en sens
inverse, et avec une telle table cela risque dtre trs laborieux : la seule solution
consiste examiner une par une en squence les entres de la table, en esprant
trouver notre page plutt vers le dbut. Cela semble dsesprant, mais nous allons
tre sauvs. Par quoi ? par le TLB, pardi. Navons-nous pas vu, la section 4.4.5
il y a un instant, quil fournissait des traductions virtuel rel avec une ecacit
tonnante et sans table des pages ? Alors voil...
6. La taille de la mmoire, principale ou auxiliaire, est exprime en multiples de 1 024 octets
nagure nomms k, pour kilo-octet, avec des multiples comme le mga-octet, le giga-octet, etc.
Cette dnomination avait linconvnient de crer une confusion avec les multiples de 1 000 utiliss
dans le cadre du Systme International. Une norme internationale promulgue par la Commission
Internationale dlectrotechnique (IEC) y a mis bon ordre en dcembre 1998. Dsormais k dsigne
103 tandis que Ki (le kibi ) dsigne 210 = 1 024, Mi (le mbi) dsigne 220 = 1 048 576, Gi
(le gibi) 230 = 1 073 741 824. Si lon compte en bits on aura un kibibit (1 024 bits, 1 Kib), un
mbibit (1 Mib) (1 048 576 bits). Ces prxes sappliquent aux octets, soit en anglais o octet
se dit byte et o un mebibyte (1 MiB) vaut 1 048 576 octets, soit en franais o un gibioctet (1
Gio) vaut 1 073 741 824 octets. Ces nombres bizarres sont des puissances de 2. On consultera ce
sujet avec prot (mais sans trop se faire dillusions sur ladoption de cette norme) le site http:
//physics.nist.gov/cuu/Units/binary.html.

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.

4.4.7 Mmoire virtuelle segmente


Les systmes de mmoire virtuelle que nous avons dcrits jusquici utilisent des
espaces adresse uniformes, cest--dire dcoups en pages de tailles identiques, ellesmmes regoupes par simple raison de commodit de manipulation en segments de
tailles identiques. Certaines rgions de la mmoire virtuelle pourront tre dvolues
un usage particulier, mais ceci ne se rete pas dans la structure de lespace adresse,
qui reste uniforme, et plus prcisment linaire : les adresses se succdent comme
la suite des nombres entiers, avec des frontires de page tous les 4 096 octets et des
frontires de segment tous les 32 4 096 = 131 072 octets, par exemple.
Dautres architectures de mmoire virtuelle ont t imagines, avec des segments
de tailles variables, adapts des rgions particulires du programme, par exemple
un segment pour le code du programme, un segment pour les donnes initialises au
lancement du programme, un segment pour les donnes non initialises, un segment
de donnes non modiables, un segment pour les structures de donnes cres par le
systme pour ce processus, etc. De tels systmes conservent en gnral une taille de
page xe, mais le nombre de pages dun segment est arbitraire. La gestion est plus
complexe, puisque les tables de pages deviennent elles aussi de taille arbitraire.
Larchtype de ces systmes mmoire virtuelle segmente est Multics (voir chapitre 8). Les Unix modernes tels que Linux recourent la notion de segment, mais
elle est alors orthogonale la notion de page : lespace adresse dun processus est partag en segments (un pour le code du noyau, un pour les donnes du noyau, un pour
le code utilisateur, un pour les donnes utilisateur, un segment dtat de tche par
processus (TSS, Task State Segment), un segment pour la table de descripteurs de
segments). Par ailleurs ces segments sont pagins ; limpression est quils ne servent
pas grandchose.

4.4.8 Petite chronologie de la mmoire virtuelle


La premire ralisation de mmoire virtuelle avec pagination date de 1961 et
gure lactif de lUniversit de Manchester, qui dveloppait en collaboration avec le
constructeur le systme de lordinateur ATLAS de Ferranti. Le systme de lATLAS
tait prcurseur dans bien des domaines et surtout il fut lobjet de publications trs
compltes.
En 1962 Burroughs (devenu depuis sa fusion avec Univac Unisys) lanait son
modle B 5000, qui apportait les innovations suivantes :
utilisation de piles 7 pour grer les donnes locales des processus ; larchitecture de la machine comportait des instructions de gestion de pile ;
mmoire virtuelle segmente ;
allocation dynamique de mmoire par demande de segment ;
7. La pile dont il est question ici nest pas une pile lectrique, mais une structure de donnes
qui voque une pile dassiettes, et dont nous donnerons une description un peu plus loin.

74

Mmoire

systme crit en langage volu (Algol 60).


1961 vit les dbuts du projet MAC dirig par Fernando Corbat au MIT, et
dans ce cadre la ralisation du systme CTSS (Compatible Time Sharing System),
anctre de Multics, sur ordinateur IBM 709 puis 7094. CTSS comportait un systme
de swap, qui recopiait sur mmoire auxiliaire les programmes mis en attente par le
systme au prot de programmes ractivs et rechargs depuis la mmoire auxiliaire
vers la mmoire vive. Ce systme de swap, qui peut tre considr comme la mmoire
virtuelle du pauvre, se retrouve sur le PDP-1 de Digital mis au point en 1962 pour
BBN (Bolt, Baranek & Newman), un nom que nous retouverons au chapitre consacr
aux rseaux, puis sur beaucoup de machines de la gamme PDP.
En 1963 la socit franaise SEA dirige par F.H. Raymond ralisait pour sa
machine CAB 1500 un systme qui reposait sur des principes dirents, les noms
gnraliss.
En 1967 IBM ralise le modle 360/67, qui tait un 360/65 dot des dispositifs de
mmoire virtuelle que nous avons dcrits plus haut, avec des pages de 4 096 octets et
en outre un dispositif logiciel que lon pourrait appeler hyperviseur, CP/67, que nous
voquerons au chapitre 10, qui permettait de simuler le fonctionnement de plusieurs
ordinateurs virtuels dots chacun de son systme.
En 1972 IBM gnralise la mmoire virtuelle sur sa gamme 370.

4.5 Hirarchie de mmoire


4.5.1 Position du problme
La recherche dinformations dans des espaces de mmoire trs vastes nous a amens poser des questions de performance : parcourir squentiellement une table pour
y chercher une information quelconque demande lexcution dun nombre dinstructions proportionnel la longueur de la table. Ds que cette table devient longue il
faut trouver une solution plus subtile. Cest un problme trs frquent en programmation.
Un schma trs gnral de solution possible, inspir dailleurs des mthodes exposes ci-dessus, est le suivant : si dans cette table gurent dune part une petite
minorit dinformations trs souvent utilises et de lautre une majorit dinformations rarement utilises, et que nous disposions dun moyen didentier la petite
minorit active de notre stock dinformation (le working set ), il serait alors possible de raliser deux versions de la table : une petite table pour le working set,
daccs rapide parce que petite, et la grande table complte, peu rapide daccs mais
rarement utilise. Lors dune recherche on lancera simultanment la consultation
dans les deux tables, et que le meilleur gagne : si linformation cherche est dans la
petite table, cest elle qui gagnera (sauf si le rsultat est au dbut de la grande
table), sinon on fera la recherche longue dans la grande table. Cest lide de la
hirarchie de mmoires, une mmoire petite et rapide en avantplan dune mmoire
vaste, plus lente mais complte.
Notre problme est un peu plus complexe : la composition du working set varie
dans le temps, une information trs utile un instant va devenir inutile quelques
microsecondes plus tard, cependant que dautres informations vont sortir de lombre
pour occuper le devant de la scne. Il nous faudra disposer dun algorithme de
remplacement des informations vieillies par de nouvelles vedettes. Remarquons que

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.

4.6 La technique du cache


Le mot cache, curieux retour au franais dun emprunt anglais, suggre ici lide
de cacher dans un coin (techniquement parlant, dans une zone de mmoire petite
mais accs trs rapide) pour lavoir sous la main une chose que lon ne veut pas
avoir aller chercher la cave ou au grenier (i.e., dans la mmoire centrale, vaste
mais accs lent par rapport la vitesse du processeur), pour gagner du temps.
moins quil ne sagisse de limage de la chose, au premier plan dune scne, qui cache
la chose elle-mme, larrire-plan.

4.6.1 Cache mmoire


Les processeurs modernes utilisent la technique du cache pour les accs la
mmoire. De quoi sagit-il ?
Supposons que laccs du processeur la mmoire par le bus systme se fasse
en un temps t. Une petite quantit de mmoire trs rapide va tre implante sur le
processeur proprement dit, ce sera le cache de premier niveau (L1, pour Level 1) qui
t
aura un temps daccs de 40
(habituellement un ou deux cycles de processeur, soit
de lordre de la nano-seconde). Puis une quantit un peu moins petite de mmoire
un peu moins rapide va tre connecte au bus interne du processeur, avec un temps
t
daccs, par exemple, de 10
. Ce sera le cache de niveau 2, L2, avec un dbit daccs
de quelques milliards doctets par seconde (les ratios de temps daccs indiqus ici
sont des ordres de grandeur vraisemblables).
Le cache L1 de lItanium 2 (2002), reprsent par la gure 4.3, contient 32 Kio
de mmoire par cur (16 Kio pour les donnes, 16 Kio pour les instructions) avec
un dlai daccs (temps de latence) de 2 cycles, son cache L2, qui est sur le mme
circuit (la mme puce) que le processeur, 256 1280 Kio par cur avec un accs en
6 cycles, et il a un cache externe L3 de 1,5 24 mbioctets selon les congurations
avec un accs en 21 cycles.

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

Figure 4.3 : Hirarchie de mmoire dItanium

Laccs la mmoire principale se fait un dbit de de 2,1 gibioctets 8 par


seconde par un bus 133 Mhz.
Pour prendre un type de processeur plus rcent, lIntel Xeon E3-1285 v3 avec
quatre curs 3,6 GHz, en gomtrie 22 nm, possde 64 Kio de cache L1 et 256
Kio de cache L2 par cur, et 8 Mio de cache L3. On voit que si le pas de la gravure
(usuellement reprsent par la longueur de la grille dun transistor) et les vitesses
de processeur qui en rsultent ont connu une volution spectaculaire, les donnes
relatives aux tailles des caches ont volu plus modrment. En eet, la localit des
traitements (telle que dnie la section 4.4.2) fait quagrandir inconsidrment les
tailles de cache ne procure que des gains de performance rapidement dcroissants.

4.6.2 Hirarchie de mmoire : donnes numriques 2009


Jemprunte Jerey Dean [20], architecte systme chez Google, le tableau des
temps daccs compars (en nanosecondes) aux dirents niveaux de mmoire quil
a prsent en 2009 la confrence Large Scale Distributed Systems and Middleware
(LADIS) 9 :

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

4.6.3 Mise en uvre du cache


Comment seront utiliss ces caches ? Leur utilit repose sur la localit des traitements (cf. 4.4.2) : on a observ qu une chelle de temps petite pour lobservateur
mais grande par rapport la vitesse du processeur, disons pendant lexcution dun
sous-programme moyen, le processeur accde toujours peu prs aux mmes zones
de la mmoire. Donc si on charge ces zones dans le cache on va acclrer les traitements.
Lalgorithme de gestion du cache consiste y charger toute zone de mmoire demande par le processeur la place de la zone la moins rcemment utilise de celles
qui taient dj l, en spculant sur le fait que si cette zone est demande maintenant elle va ltre souvent (des milliers de fois) dans les instants qui suivent (quelques
milli-secondes). La partie plus complique de lalgorithme consiste maintenir la cohrence entre les caches et la mmoire principale par la rcriture des zones modies
dans le cache. Le lecteur trouvera dans le livre de Hennessy et Patterson [31] toutes
informations souhaitables sur ce mcanisme de hirarchisation de la mmoire. Sil
est soucieux de se tenir au courant des derniers dveloppements techniques il devra
sabonner lexcellente revue Microprocessor Report [51]. Deux choses importantes
doivent tre retenues propos de la technique du cache : elle procure des augmentations de performances trs spectaculaires, et aucun modle gnral satisfaisant de
son fonctionnement na pu tre propos ce jour.

4.7 Langage et mmoire


Le systme dexploitation alloue chaque programme lespace de mmoire ncessaire son excution. Comment se prsente cet espace, du point de vue du programme ? Cela dpend du programme, et singulirement du langage de programmation utilis, ou plus exactement du traducteur. Mais auparavant il naura sans
doute pas t inutile de se remmorer les dveloppements page 37 sur la notion
de sous-programme, qui permet de dcouper un grand programme en entits plus
maniables.

78

Mmoire

4.7.1 Langages mmoire statique


Le cas le plus simple est celui des langages gestion de mmoire statique comme
Fortran (nous parlons du Fortran IV traditionnel ou de son successeur Fortran 77,
pas du langage au baroquisme bouriant qui porte aujourdhui ce nom), pour les
programmes desquels la mmoire est alloue une fois pour toutes au lancement du
programme. Le texte du programme en langage machine et les variables sont des
emplacements xes et ne sont pas extensibles, cest--dire que tous les noms prsents
dans le programme sont associs (lis) des emplacements de mmoire lors de la
compilation. Le compilateur construit limage binaire du programme traduit et de
ses zones de donnes, lditeur de liens assemble les dirents sous-programmes sans
oublier les sous-programmes de bibliothque en eectuant les translations appropries (voir la page 63), et le rsultat est un chier binaire excutable prt tre
charg en mmoire pour sexcuter.
De cette politique dallocation de mmoire il rsulte que les variables locales dun
sous-programme sont au mme endroit chaque activation du sous-programme.
Cette technique dallocation a trois inconvnients :
1. la taille de chaque structure de donne doit tre connue une fois pour toutes
la compilation et elle ne pourra plus varier pendant lexcution ;
2. les sous-programmes ne peuvent pas sappeler eux-mmes (ce que lon appelle
rcursion) parce que les objets locaux pour chaque activation partageraient les
mmes emplacements de mmoire ;
3. il nest pas possible de crer des objets dynamiquement lexcution.
et elle a deux avantages :
1. les programmes crits dans des langages statiques peuvent tre rapides, parce
quils ne ncessitent pas de cration de structures de donnes pendant lexcution, et parce que lemplacement xe des objets permet lusage de ladressage
direct, plus ecace que ladressage indirect ;
2. un programme mmoire statique est par construction labri de lchec par
pnurie de mmoire en cours dexcution.

4.7.2 Vecteur dtat dun programme


Tout sous-programme sexcute dans un contexte 10 qui comporte au moins les
informations que nous avons mentionnes ci-dessus la page 37 : ladresse de la liste
(ventuellement vide) des arguments que lui aura transmis le programme appelant,
ladresse de retour laquelle il devra eectuer un branchement quand il se sera termin, ladresse o dposer le rsultat de son excution. Il faut y ajouter les variables
10. Le contexte que nous envisageons ici est celui du programme vu comme la description dun
traitement. Il est distinct du contexte du programme vu comme processus que nous avons voqu aux
section 3.11.1 et 3.11.2. Le contexte du programme est cr et utilis selon la logique du droulement
du traitement, dans lespace adresse de lutilisateur, cependant que le processus peut tre interrompu
tout moment par un vnement extrieur, asynchrone et sans respect pour le traitement en cours.
La restauration du contexte du processus, qui comporte notamment les contenus du PSW et des
registres, permet videmment de retrouver le contexte du programme qui rside dans son espace
adresse.

Langage et mmoire

79

internes (locales) au sous-programme. Ces lments de contexte constituent ce que


nous appellerons vecteur dtat du (sous-)programme, et il sagit donc dune (petite)
collection de mots.

4.7.3 Langages mmoire dynamique


Tous les langages ne sont pas, tel Fortran IV, conns une mmoire statique. Les
systmes dexploitation proposent depuis des lustres des mcanismes et des appels
systme qui permettent un processus dacqurir une zone de mmoire supplmentaire, et les langages en font usage pour surmonter les limitations mentionnes la
section 4.7.1.
Il y a deux grandes catgories de mthodes pour allouer de la mmoire supplmentaire dynamiquement un programme lors de son excution : sur la pile et dans
le tas. La plupart des langages modernes utilisent les deux :
on utilise gnralement la pile pour les donnes qui tiennent dans un mot
(nombre, adresse, pointeur...) ou peu de mots, doivent tre traites rapidement (liste darguments dun sous-programme), et qui en outre ne doivent
pas avoir une dure de vie qui excde la terminaison de lexcution courante
du sous-programme ;
le tas est utilis pour les donnes de taille quelconque et ventuellement variable (tableau, chane de caractres, liste...), ainsi que pour les donnes qui
doivent survivre au sous-programme courant.
Nous allons examiner ces deux techniques. Mais ne perdons pas de vue quil sagit
toujours dallouer de la mmoire disponible dans lespace adresse du processus :
quand cet espace-adresse sera satur, les tentatives dallocation dclencheront des
erreurs.
Allocation de mmoire sur la pile
Dans un langage gestion de mmoire dynamique, le systme, pour chaque
appel de sous-programme, cre un vecteur dtat (activation record, ou activation
frame en anglais ; il contient, rappelons-le, les arguments passs par le programme
appelant, ladresse de retour, ladresse du rsultat ventuel, et les variables locales),
et le dtruit lorsque la procdure se termine.
Pour raliser cela le compilateur utilise une structure de donnes appele pile (en
anglais stack) : les vecteurs dtat successifs, au fur et mesure de leur cration, vont
tre empils comme des assiettes, puis dpils au fur et mesure de la terminaison des
sous-programmes correspondants. chaque instant un pointeur permet de connatre
le sommet de la pile, qui correspond au sous-programme actif cet instant.
Pour empiler un vecteur cest simple : on place les mots de mmoire qui le
constituent dans la zone qui commence ladresse immdiatement suprieure la
valeur courante du pointeur de pile, puis on additionne celui-ci la taille du nouveau
contexte an quil pointe bien sur le sommet de la pile.
Pour dpiler un vecteur cest encore plus simple, il sut de soustraire du pointeur
de pile la taille du vecteur supprimer. En gnral, le rsultat renvoy par un
sous-programme qui se termine aura t plac dans la pile, un endroit convenu
du vecteur dtat du programme appelant, cest--dire en dessous du vecteur
courant.

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

5.1 Mmoire auxiliaire


Ces structures magniques construites dans lespace immense de la mmoire virtuelle par des processus qui accomplissent un milliard dactions par seconde, quen
reste-t-il lorsque lon interrompt lalimentation lectrique de lordinateur, ou mme
simplement lorsque le processus se termine ? Rien. La technique employe actuellement pour raliser la mmoire centrale repose sur des bascules semi-conducteurs
dont ltat dpend de la tension lectrique aux bornes, et disparat sans recours
en labsence de celle-ci. Il nen a pas toujours t ainsi : jusque dans les annes
1970 la technologie de mmoire dominante reposait sur une invention dAn Wang
de 1950 et utilisait des tores de ferrite magntiss. Un courant de commande crait
une magntisation dont lorientation dterminait la valeur du bit, 0 ou 1. Le champ
magntique subsistait linterruption de lalimentation lectrique, ce qui permettait
thoriquement de retrouver ltat de la mmoire au redmarrage. Mais cette possibilit tait rarement utilise : la mmoire tait petite, les champs magntiques taient
susceptibles aux perturbations cres par les courants de rupture lors de larrt de la
machine, le redmarrage du systme dexploitation comportait des oprations nombreuses qui utilisaient elles-mmes la mmoire... Bref, si lon voulait conserver les
donnes et les rsultats labors par le programme pendant son excution, et cette
conservation apparaissait bien ncessaire, il fallait dautres dispositifs de mmoire
dite auxiliaire, par opposition la mmoire centrale.
Le type le plus rpandu de mmoire auxiliaire est le disque magntique. Dautres
technologies ont vu le jour, mais, comme dans le domaine des processeurs, une
technologie sest dveloppe avec un tel succs que les autres ont t clipses, peuttre provisoirement dailleurs. La mmoire bulles magntiques connatra peuttre le renouveau, notamment dans les environnements o la prsence de courants
lectriques nest pas souhaitable, en conjonction avec les processeurs uidiques, mais
aujourdhui leurs performances excessivement infrieures celles obtenues par les
moyens classiques les condamnent loubli. Quant aux calculateurs quantiques ou
biologiques, ce sont des objets de recherche thorique bien loigns dune ventuelle
ralisation industrielle.

5.1.1 Structure physique du disque magntique


Nous nentrerons pas dans la description dtaille du disque magntique. Disons
seulement ceci. Il comporte gnralement plusieurs plateaux circulaires xs en leur
centre sur un axe, comme on peut le voir sur la gure 5.1. Chaque face dun plateau est recouverte dune substance magntisable assez semblable celle qui revt
la bande dune cassette de magntophone. Chaque surface est survole par une tte
de lecture-criture constitue dun lectro-aimant. Pour crire, le dispositif de commande envoie dans le bobinage de llectro-aimant un courant de sens et dintensit
propre crer un champ magntique qui va inscrire sur la surface du disque un bit
0 ou 1. Pour lire, llectro-aimant va se laisser traverser par le champ magntique
du bit inscrit sur la surface, ce qui va crer dans son bobinage un courant induit que
le dispositif de commande va interprter comme un 0 ou un 1.
Les bits sont situs sur des pistes concentriques, cest--dire que pendant une
opration de lecture ou dcriture la tte est xe au-dessus de la surface du disque,
jusqu la n du traitement de la piste, puis elle se dplace radialement, par exemple

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

Figure 5.1 : Organisation physique dun disque

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

au-dessus du bon cylindre, slectionne la tte correspondant au bon plateau et attend


que le bon secteur passe dessous. Les donnes sont lues et envoyes au systme.
Actuellement tous les contrleurs prsentent au systme un adressage linaire
uniforme des secteurs, cest--dire que tous les secteurs sont numrots en squence.
Le contrleur fait son aaire de traduire ce numro dordre en numro de cylindre,
numro de tte de lecture, numro de secteur. Le contrleur dispose aussi dune
mmoire tampon (buer) assez vaste pour regrouper et optimiser les accs physiques.
Un disque de gros ordinateur la n des annes 1960 pouvait contenir 14 millions
de caractres, avec un diamtre de 14 pouces (36 cm) et une dizaine de plateaux, soit
peu prs 15 cm de haut. En 2013 les disques rcents pour serveur peuvent avoir une
capacit de 4 000 milliards de caractres avec un diamtre de 3,5 pouces (9cm) et trois
plateaux (2,5 cm dpaisseur totale). Les temps daccs moyens ont beaucoup moins
progress, et sont de lordre de 4 millisecondes pour un accs alatoire comportant
un dplacement des ttes de lecture et une demi-rotation. Les vitesses de rotation,
longtemps de 3 600 tours/minute, atteignent aujourdhui 15 000 tours par minute.
Les dbits de transfert atteignent les cent millions de caractres par seconde. Dans ce
domaine des performances il convient de noter que les temps daccs peuvent varier
considrablement selon le contexte dutilisation, et que ces variations sont mises
prot par les publicits de certains vendeurs pour annoncer des chires tudier
avec prcaution. Ainsi des temps daccs moyens de 2 ms ne sont possibles que lors
daccs squentiels o les secteurs dune mme piste sont lus successivement avec
des dplacements de tte rares, la n de chaque piste, ce qui ne correspond pas
un accs alatoire.
De plus en plus se gnralisent les disques SSD (pour Solid-State Drive), qui
ne sont en fait pas des disques, mais de la mmoire Flash analogue celle
des cls USB, cest--dire sans pice mcanique mobile, ce qui assure dexcellentes
performances, en contrepartie dune capacit plus faible cause du prix plus lev
de ce type de support (dun facteur 6 8 en 2013). Le temps daccs typique est de
lordre de 0,1 ms, et il est constant du fait de labsence de dplacement de pices
mcaniques. Les dbits de transfert atteignent les six cent millions de caractres par
seconde (six fois ceux des meilleurs disques classiques). La capacit peut atteindre
2 000 milliards de caractres, mais le cot est lev (0,6 dollar par gigaoctet, contre
0,10 dollar en technologie classique).

5.1.2 Visions de la mmoire auxiliaire


Ds lorigine il y a eu deux visions de la mmoire auxiliaire. La premire la considre comme une extension moins rapide et de plus grande capacit de la mmoire
centrale, avec une proprit supplmentaire : la persistance. Ce serait un peu comme
si, aprs la terminaison dun processus, le contenu de son espace de mmoire virtuelle
tait conserv en mmoire auxiliaire de pages pour un usage ultrieur par le mme
programme ou par un autre. Le processus en se terminant aurait soin de laisser dans
cet espace de mmoire des donnes pertinentes et dont la conservation soit utile.
La seconde vision considre les donnes persistantes comme foncirement htrognes au contenu de la mmoire centrale. La notion de chier , mtaphore qui
sous-tend cette vision, est celle dun employ administratif, des services scaux par
exemple, qui calculerait les impts dune population de contribuables : il disposerait
en entre du chier des personnes imposables, avec une che par personne, et par

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

registrement de chaque donne (la non-redondance) concourt garantir la cohrence


de la base.
La commodit apporte par les bases de donnes dans la gestion des informations persistantes a donn lide de crer des systmes dexploitation entirement
construits autour dun SGBD. Ce furent essentiellement le systme Pick et la Srie 3 dIBM, dont la postrit a franchi le changement de millnaire sous le nom
dAS/400. Pick, luvre de Richard Pick, tait un systme excellent pour la gestion
de toutes sortes dobjets, mais la corporation des informaticiens a eu sa peau. Il faut
dire que Pick apportait une telle simplication la gestion que sa gnralisation
aurait oblig une quantit de programmeurs occups des tches banales et rptitives, dsormais ralisables par des non-informaticiens, trouver un travail plus
exigeant.
Aujourdhui les recherches dans le domaine des systmes dexploitation bass sur
une mmoire persistante se poursuivent, et nous pensons que leur succs serait la
source de progrs notables dans la facilit dusage des ordinateurs par les humains.
Nous y reviendrons.

5.2 Systme de chiers


Puisque tous les systmes dexploitation disponibles pratiquement aujourdhui
utilisent des chiers, nous allons dcrire leur organisation. Nous prendrons comme
exemple le systme de chiers des systmes Unix ou Linux, qui dfaut dune
ecacit foudroyante a lavantage de la simplicit et de llgance.
Pour Unix un chier est une suite de caractres, un point cest tout. Le programme qui accde au chier reoit les caractres les uns aprs les autres comme
un ux, et cest au programmeur davoir prvu les actions ncessaires pour reconnatre dans ce ux des structures de donnes plus complexes quil pourra organiser
et traiter.
Les caractres qui constituent ce ux squentiel quest le chier rsident sur
disque dur, o ils occupent un certain nombre de pistes elles-mmes dcoupes en
secteurs (voir la gure 5.1). Un secteur contient gnralement 512 caractres. Les secteurs qui constituent un chier peuvent tre physiquement conscutifs sur le disque,
mais ce nest pas forcment le cas. Pour retrouver un chier, il faut un systme de rpertoire : chaque chier possde un nom et le rpertoire permet de faire correspondre
au nom un emplacement sur le disque (cylindre-piste-secteur), ou plus exactement
une collection demplacements. Pour viter un trop grand morcellement les secteurs
de 512 octets peuvent tre allous un chier par blocs de taille suprieure, en
gnral pas plus de 16 secteurs par bloc, soit 8 192 octets.

5.2.1 Structure du systme de chiers Unix


Notion de systme de chiers
Pour utiliser un disque avec Unix, avant de pouvoir y crire des chiers, il faut
y installer un ou plusieurs systmes de chiers. Ce terme, systme de chiers, dsigne la fois le principe dorganisation des chiers, les lments de logiciel qui
implmentent (ralisent) ce principe, et un ensemble de chiers organiss selon ce
principe. Dans le cas o plusieurs systmes de chiers (au sens : ensemble de chiers)

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

groupe de blocs dinoeuds

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

Atributs du fichier : droits


daccs, propritaire, ...

Bloc de
donnes

12 blocs adressage
direct

Bloc
indirect

Bloc de
donnes
Bloc de
donnes
Bloc de
donnes

vers blocs adressage indirect


vers blocs double indirection
vers blocs triple indirection

Bloc de
donnes
Bloc de
donnes
Bloc de
donnes
Bloc de
donnes
Bloc de
donnes
Bloc de
donnes

Bloc de
donnes
Bloc de
donnes

Figure 5.3 : Structure di-nud

sa date de dernire modication ;


et dautres...
Le contenu dun i-nud peut tre consult par la commande Unix ls.
Le grand avantage de la structure de la i-liste sur dautres mthodes de gestion,
cest quun i-nud na besoin dtre charg en mmoire que si le chier quil dcrit
est en cours dutilisation. Une table linaire des blocs de disque devrait, a contrario,
rsider en mmoire de faon permanente, et avec les disques actuels ce serait vraiment
encombrant.
Rpertoires de chiers
La i-liste permet de retrouver les chiers sans ambigut par leur numro de inud, dont lunicit est garantie, mais ce nest pas un procd rellement commode.
Les tres humains prfrent souvent dsigner un chier (ou un autre objet) par un
nom propre qui leur rappelle la nature des donnes, comme Photo_Tante_Lonie
ou fichier_clients_2013. Pour rpondre cette attente, la plupart des systmes
dexploitation proposent des rpertoires (en anglais directories), appels parfois aussi
dossiers (folders) ou catalogues.
De mme quun rpertoire tlphonique permet, pour une personne dont on
connat le nom, de retrouver son numro de tlphone, un rpertoire de chiers permet pour un chier de nom connu de retrouver son numro de i-nud, qui lui-mme
permettra daccder au chier. Un rpertoire nest quun chier un peu particulier,
dont le contenu est en fait une liste de chiers, dont certains peuvent dailleurs

92

Persistance

tre eux-mmes des rpertoires, appels pour loccasion sous-rpertoires. Dans la


liste gure, pour chaque chier, son nom et son numro di-nud, ce qui permet de
retrouver commodment le chier par son nom.
La gure 5.4 donne le format des entres de rpertoire pour un systme de chiers
sous Unix (en loccurrence ici ext2 ou ext3 pour Linux). Les entres sont de taille
variable, ce qui ore lavantage de permettre des noms de chiers longs sans pour
autant gaspiller trop despace disque 4 .
numro
dinoeud

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)

Du point de vue de lutilisateur, un systme de chiers se prsente donc avec une


structure darbre.
Un arbre est une structure de donnes dnie de la faon (rcursive) suivante :
un arbre est soit larbre vide soit un nud ;
un nud a des ls qui sont des arbres ;
si tous les ls dun nud sont larbre vide on dit que ce nud est une feuille ;
outre des ls, chaque nud comporte une valeur.
Un arbre peut en outre avoir une racine, qui est un nud situ en haut quand on le
dessine, contrairement aux arbres des forts. Les nuds qui ne sont pas des feuilles
sont parfois appels nuds intrieurs .
La racine de larbre systme de chiers est un rpertoire tel que tous les
chiers du systme de chiers considrs gurent soit dans ce rpertoire racine, soit
dans un sous-rpertoire du rpertoire racine. Les sous-rpertoires sont les nuds
intrieurs, et les chiers ordinaires les feuilles de cet arbre.
Les gures 5.5 et vreg :arbrerepertoire reprsentent une partie dun systme de
chiers Unix. Un systme Unix comporte au moins un systme de chiers, dcrit par
un rpertoire appel racine (root). Il comporte traditionnellement les sous-rpertoires
suivants :
4. Lexamen des sources du noyau et la lecture des bons auteurs ma rvl la surprenante
diversit des formats de rpertoire parmi mme direntes versions dune mme varit dUnix,
Linux en loccurrence. Je donne donc ici un format gnrique, non pas une rfrence utiliser
les yeux ferms. Je ne parle ici que des systmes de chiers classiques , parce que les systmes
novateurs comme Reiserfs, XFS et JFS ont abandonn les rpertoires structure de liste linaire
au prot de structures en arbre, consultation plus rapide.

Systme de chiers

93

rpertoire

bin

mail

racine (root)

fichier

home

tmp

usr

martin

bloch

date

brouillon.txt

var

passwd

vmlinuz

etc

hosts

Travaux

livre.tex

photo1.jpg

Figure 5.5 : Arborescence des rpertoires et chiers Unix

etc contient les chiers de conguration du systme et des principaux logiciels ;


bin contient les programmes excutables fondamentaux ;
local contient les donnes et programmes gnraux propres au systme local ;
home contient les rpertoires des utilisateurs ;
et dautres...
Ainsi, le chier photo_Tante_Leonie.jpg qui appartient lutilisateur Marcel P., dont le nom dutilisateur est marcel, sera rpertori dans le rpertoire
marcel, lui-mme sous-rpertoire de home, lui-mme sous-rpertoire de la racine, laquelle on ne donne pas de nom. Par convention, le caractre /
sert marquer les chelons descendus dans larborescence du rpertoire : ainsi
le chier photo_Tante_Leonie.jpg a-t-il comme nom complet depuis la racine
/home/marcel/photo_Tante_Leonie.jpg. Comme nous navons pas donn de nom
la racine, tous les shells saccordent la nommer par convention / . Le nom complet dun chier, qui comporte les noms de tous les rpertoires quil faut parcourir
pour parvenir lui depuis la racine, est aussi nomm chemin (path).
Outre les sous-rpertoires dj indiqus, le rpertoire racine rpertorie aussi des
chiers ordinaires (par opposition aux rpertoires) tels que /vmunix, le chier excutable du noyau, que lauteur de Linux a baptis quant lui /vmlinuz.
Le terme de dossier employ parfois pour dsigner les rpertoires ne me semble
pas trs heureux parce quil suggre un contenant dans lequel seraient contenus les
chiers, ce qui nest pas le cas. Un rpertoire na dtendue que celle ncessaire
loger ses propres informations sur les chiers, mais pas les chiers eux-mmes,
et encore moins les i-nuds. Il est vrai que la tentation de cette mtaphore est
omniprsente : lorsque lon enregistre un rpertoire dans un autre rpertoire, dont
il devient de ce fait un sous-rpertoire, tous les chiers quil rpertorie apparaissent
dsormais comme des feuilles de larbre de ce rpertoire pre. Comme, dexprience
commune, la navigation dans une telle arborescence est dicile faire comprendre
aux utilisateurs, lespoir que la mtaphore du dossier rende la chose plus accessible
tait lgitime, mme si peu conrm.

94

Persistance

la racine du systme : /

/home SF des utilisateurs

/bin
/etc
/usr
/home
...

sarraute
mahfouz
kawabata
bloch

/home/mahfouz
Impasse2Palais
...

/home/bloch/Travaux
LivreProgrammation
LivreSysteme

/home/kawabata

mon rpertoire racine : /home/bloch


Travaux mes travaux...
bin
mes programmes
Images
mes photos
Mail
mon courrier
Projets
mes projets
.bashrc
mes prfrences
brouillon.txt comme son nom...

/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...

Figure 5.6 : Rpertoires et chiers

Cration dun systme de chiers


On choisit gnralement de fractionner lensemble de cette arborescence en plusieurs systmes de chiers. Ainsi les chiers des utilisateurs sont-ils gnralement rpertoris partir dun rpertoire /home, qui rpertoriera les rpertoires personnels
des utilisateurs, qui eux leur tour rpertorieront les sous-rpertoires et les chiers
personnels. Il est considr comme de bonne gestion de placer le rpertoire /home
et tous ses sous-rpertoires dans un systme de chiers part. Ainsi, notamment,
lorsque lon installera dans / une nouvelle version du systme dexploitation
en eaant tout lancien contenu, les chiers des utilisateurs ne seront pas aects.
Pour raliser ceci partir dun ordinateur vierge de tout systme, on va partir par
exemple dun CD-ROM qui contiendra dune part les lments du futur systme
dexploitation installer sur disque dur, dautre part une version rudimentaire du
systme pour pouvoir raliser ce travail, et on procdera ainsi :
On cre avec un programme utilitaire spcial (par exemple fdisk) sur le ou les
disques dont on dispose des partitions dont le nombre et la taille sont choisis
aprs lecture de la documentation du systme et selon les projets que lon

Systme de chiers

95

forme quant lutilisation de lordinateur. La cration dune partition installe


sur le disque un certain nombre de structures de donnes. Nous prendrons
lexemple dun disque congur pour le systme de chiers ext2 sous Linux
sur un ordinateur de type PC.
le premier secteur du disque, nomm Master Boot Record (MBR), contient
la table des partitions du disque, repres par les numros de leurs secteurs
de dbut et de n ; une ou plusieurs de ces partitions peuvent tre bootables, cest--dire contenir un systme dexploitation susceptible dtre
charg en mmoire ; le MBR contient aussi un petit programme qui permet lutilisateur de choisir au dmarrage la partition de boot (damorage) ; ce petit programme peut par exemple tre LILO, mais il y a des
alternatives ;
chaque partition a pour premier bloc un bloc damorage, an de pouvoir
tre bootable ;
le reste de la partition est divis en groupes de blocs ; tous les groupes de
blocs ont la mme longueur et la mme structure ; ils contiennent chacun
une copie de la structure de donnes appele super-bloc et une copie
des descripteurs de groupes de blocs, qui dcrivent la structure de la
partition et notamment de la i-liste ; ces copies redondantes permettent de
reconstituer la cohrence du systme de chiers contenu par la partition
aprs un dommage physique provoqu, par exemple, par une coupure de
courant intempestive ; le programme de rparation de systme de chiers
sous Unix est fsck, homologue de SOS Disk bien connu des utilisateurs
de Macintosh ;
fdisk cre aussi la i-liste, destine dcrire le contenu de la partition.
On aecte une partition la racine du systme / et une autre partition
/home ; les partitions peuvent indiremment tre sur le mme disque ou sur
des disques dirents ; il y aura en outre dautres partitions dont nous ne parlerons pas ici, destines dautres systmes de chiers tels que /usr, /local,
/tmp, /var... En revanche /bin et /etc restent dans la partition racine parce
quils sont indispensables au dmarrage du systme, y compris pendant la
phase o il na pas encore accs aux systmes de chiers subordonns .
On construit dans chacune de ces partitions un systme de chiers vide avec
un programme utilitaire (en gnral mkfs) ; la cration dun systme de chiers comporte notamment la cration de son rpertoire racine, qui est une
racine relative par rapport la racine absolue , / .
On cre dans / un rpertoire vide nomm home. Ce rpertoire vide sera
le point par lequel partir de / on accdera au systme de chiers home,
il est appel point de montage du systme de chiers home. Cette opration
de montage est dcrite lalina suivant.
La procdure de construction du nouveau systme dexploitation va comporter la cration dune table des systmes de chiers, le chier /etc/fstab, qui
indiquera que le rpertoire la racine du systme de chiers rserv pour les
chiers des utilisateurs sera raccord / au point /home : cette opration
de raccordement sappelle le montage dun systme de chiers. On observera
que les notions de systme de chiers et de rpertoire sont distinctes bien
quelles interagissent sans cesse. Le systme de chiers est un objet physique,

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.

5.2.2 Traitement de chier


Nous avons vu quun chier tait une suite de caractres, stocks dans un certain nombre de blocs sur disque ; un i-nud permet de reprer ces blocs et de les
identier comme parties du chier ; une entre de rpertoire permet dassocier
ce i-nud un nom ainsi quun chemin daccs depuis le rpertoire racine du systme / . Par exemple, si je veux conserver des collections de squences dADN, je
pourrai donner mes chiers des noms qui voquent lorganisme dont proviennent
les squences quil contient : listeria.monocytogenes, arabidopsis.thaliana,
xenopus.laevis. Ces noms ne sont-ils pas jolis ? Ils dsignent respectivement la
bactrie de la listriose, une petite plante commune mais lgante, une grenouille
africaine.
Le programmeur qui crit un programme pour lire ou crire dans le chier, de
son ct, associe un nom symbolique au ux de caractres en entre ou en sortie,
par exemple sequence.entree pour le ux de caractres associ la lecture dune
squence traiter.
On peut se reprsenter le chier comme une le de caractres, lors de son ouverture un curseur est plac sur le premier caractre, chaque ordre de lecture renvoie
le caractre plac sous le curseur et dplace le curseur jusquau caractre suivant.
Ouverture de chier
Comment tablir le lien entre un chier physique, nomm par exemple
arabidopsis.thaliana, et le nom symbolique dun ux dans un programme, par
exemple sequence.entree ? Cette connexion sappelle assez universellement louverture (open) du chier. Elle consiste construire en mmoire une structure de
donnes qui contiendra toutes les informations relatives lune et lautre entit,
chier et ux, ce qui permettra la ralisation eective des entres-sorties. Cest vite
dit, mais lopration douverture de chier est assez complexe du fait du grand
nombre de types de priphriques et de types de chiers possibles, ainsi que de la
grande varit de mthodes de traitement qui sy appliquent. Sous Unix, une fois la
structure de donnes construite, elle est ajoute une collection de ses semblables,
la liste des chiers ouverts pour le processus courant, liste dans laquelle son numro
dordre est appel descripteur de chiers.
Le fait de dsigner le ux par un nom symbolique qui ne sera associ au chier
physique que lors de louverture permet dutiliser le mme programme pour traiter
les chiers listeria.monocytogenes, arabidopsis.thaliana, xenopus.laevis et
bien dautres.
Une fois le chier ouvert, il est possible dexcuter des oprations de lecture ou
dcriture dans le ux correspondant, comme nous lavons dcrit aux sections 3.11.1
et 3.11.2.

Systme de chiers

97

5.2.3 Fichiers, programmes, mmoire virtuelle


Parmi les chiers il en est qui jouent un rle un peu particulier : ceux qui
contiennent des programmes excutables sous forme binaire. En fait ce sont des
chiers comme les autres, simplement au lieu dtre crs et lus par des programmes
ordinaires, ils sont crs par des compilateurs 5 , qui sont en fait des programmes
comme les autres, et lus par le systme dexploitation lors du lancement du programme correspondant (voir le chapitre 2, et notamment la section 2.7, ainsi que la
section 3.10). Plus prcisment, nous avons vu que ctait lappel systme execve
qui devait charger le programme en mmoire et lui fournir des pointeurs sur les lments de lenvironnement tabli pour le processus dans le contexte duquel il allait
devoir sexcuter.
Lorsque la mmoire virtuelle a t introduite, par exemple dans les systmes
IBM 370, un programme dont lexcution dmarrait tait charg depuis le chier o
il rsidait vers la mmoire virtuelle ; par la suite les pages aectes ce programme
taient ventuellement vacues de la mmoire relle vers la mmoire auxiliaire de
pagination. Il y avait l quelque chose dillogique, qui a t rsolu dans les systmes
modernes : le chier qui correspond au programme possde un format adapt
la pagination, et lorsque le programme est charg en mmoire virtuelle ce chier
dorigine sert de chier de pagination aux pages qui lui sont alloues.

5.2.4 Cache de disque


De mme que le cache mmoire permet de garder prs du processeur les mots
de mmoire les plus probablement utiliss dans les instants qui suivent, le systme
rserve une partie de la mmoire pour y conserver les blocs disque les plus probablement utiliss. Ceci vient sajouter au fait que les disques modernes sont dots de
contrleurs qui comportent galement de la mmoire vive qui sert de cache.
Avec un systme Unix, la taille du cache de disque sajuste dynamiquement la
taille de la zone mmoire disponible. Il nest pas rare que le cache de disque occupe
la moiti de la mmoire relle un instant donn. La stratgie est toujours la mme :
essayer davoir en mmoire la page de chier ou le bloc de disque qui a une forte
probabilit dtre bientt lu ou crit. Il faut donc trouver de bons prdicteurs des
lectures ou critures prochaines, et cela selon les types daccs.
Pour le fonctionnement en lecture, le principe ce qui vient dtre lu sera lu
peut tre appliqu. Mais comme souvent les chiers sont lus squentiellement, il peut
aussi tre de bonne politique de charger en mmoire cache (de disque) les blocs de
chier qui suivent celui qui vient dtre lu.
Pour le fonctionnement en criture, la question est : quel moment les donnes
contenues dans le cache vont-elles tre crites rellement sur le disque ? Deux politiques sont possibles : lancer simultanment lcriture dans la mmoire de cache et
sur le disque (write-through), ou attendre un moment opportun ultrieur pour recopier le contenu du cache sur le disque (write-back), par exemple lorsque le volume de
donnes crire sera jug optimum, ou lorsque le bus sera libre. La seconde mthode
5. et des programmes cousins appels diteurs de liens, destins runir plusieurs programmes
simples pour en construire un plus complexe.

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.

5.3 Systmes de chiers en rseau : NFS, SANs et NAS


Pour un centre de calcul dune certaine importance, il y a trois modles de
solutions possibles pour stocker les bases de donnes :
1. disques connects directement aux serveurs par des attachements IDE ou
SCSI ;
2. disques organiss selon la technologie SAN (Storage Area Network) ;
3. disques organiss selon la technologie NAS (Network Attached Storage).
Nous allons examiner successivement ces trois solutions. Pour en savoir plus sur
SCSI, SAN et NAS on consultera avec prot le livre de W. Curtis Preston [58].

5.3.1 Disques connects directement aux serveurs


Cette solution est identique celle qui existe pour les ordinateurs personnels de
bureau. Il existe deux techniques de connexion : IDE (Integrated Drive Electronics) et
SCSI(Small Computer Systems Interface). IDE est limit quatre disques, y compris
dventuels lecteurs ou graveurs de CD-ROM, ce qui ne convient manifestement pas

Systmes de chiers en rseau : NFS, SANs et NAS

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

bus de fond de panier

Figure 5.7 : Chane de trois disques SCSI connecte un ordinateur

5.3.2 Systmes de chiers en rseau


Lorsque plusieurs ordinateurs cohabitent sur le mme rseau local il est tentant
de leur permettre de partager des chiers. Cette tentation a donn naissance aux
systmes de chiers en rseau, dont les principaux reprsentants sont NFS (Network
File System) pour les systmes Unix, SMB (Server Message Block), aussi appel
CIFS (Common Internet File System), pour les systmes Windows. Citons galement
le systme AppleShare pour les ordinateurs Apple.
Le principe de ces systmes est toujours le mme : le systme de chiers distant
est prsent lutilisateur comme sil tait local, et celui-ci met des appels systme
habituels pour y eectuer des oprations dentre-sortie. Le noyau du systme intercepte ces appels systme et les encapsule dans un message qui va tre envoy au
systme distant. Le message contient la description de lopration dentre-sortie
eectuer. Il sagit donc dun appel de procdure distance, ou Remote Procedure
Call, RPC en abrg. Le rsultat de lopration est retourn lexpditeur par le
mme procd.

100

Persistance

On conevra aisment que ce processus, qui consiste commander lexcution


dun programme sur un autre ordinateur, est une faille bante de scurit. Il est donc
recommand de limiter lusage des systmes de chier en rseau des environnements
soigneusement contrls. Ces systmes sont gnralement des protocoles sans tat, ce
qui fait quils ne comportent pas de systme de verouillage pour garantir la cohrence
des chiers distants (voir ce sujet la section 6.6.2). Il est souvent prudent de
permettre laccs des systmes de chiers distants soit plusieurs utilisateurs,
mais uniquement en lecture, soit en lecture et en criture, mais un seul utilisateur.
Pour partager des donnes rparties de faon plus complexe sans encourir les
risques que nous venons dvoquer, il convient dutiliser pour grer les donnes accessibles par le rseau un Systme de Gestion de Bases de Donnes, qui comportera
alors les dispositifs dsirables de contrle daccs.

5.3.3 Architecture SAN


Larchitecture SAN est fondamentalement une extension de la technologie SCSI,
dont elle reprend les principes tout en en amliorant la ralisation sur les points
suivants :
1. le protocole SCSI a t tendu pour donner deux protocoles plus puissants,
Fibre Channel et iSCSI, qui permettent des dbits et des longueurs de cbles
suprieurs ;
2. le maximum thorique dappareils que lon peu connecter un SAN en Fibre
Channel est de 16 millions ;
3. plusieurs ordinateurs connects un mme SAN peuvent accder concurrement
tous les disques du SAN.
On voit bien le progrs que la technologie SAN apporte en extension et en souplesse de conguration pour de vastes ensembles de serveurs et de support de stockage.
La gure 5.8 montre la topologie dun SAN de type fabric en Fibre Channel ; il
y a deux types de topologies possibles : fabric et arbitrated loop ; la seconde tait
justie par le prix prohibitif des commutateurs de type fabric, mais comme ceuxci sont devenus plus abordables, la topologie arbitrated loop, moins ecace, ne se
justie plus vraiment et je ne la dcrirai pas ici. Lorsque le protocole iSCSI sera
sorti de son tat actuel de quasi-prototype, il sera possible de construire des SANs
base de commutateurs Ethernet Gigabit, beaucoup plus conomiques. En eet, un
commutateur 16 ports Fibre Channel de marque Brocade cote de lordre de 20 000
Euros, contre 6 000 Euros pour un commutateur Gigabit Ethernet chez Cisco.
Les serveurs comportent des HBA (Host Bus Adapters), qui ne sont pas autre
chose que des contrleurs SCSI adapts au support Fibre Channel.
Contrairement ce que pourrait suggrer la gure, le commutateur naranchit
pas les serveurs de la gestion de bas niveau du protocole Fibre Channel (cest--dire
en fait SCSI), ils doivent notamment tre dots du matriel et des pilotes adquats.
Le commutateur ne fait quaiguiller des ots doctets vers la bonne destination.
Comme les donnes sur les disques sont traites au niveau physique, cela veut
dire que les serveurs doivent tre dots de logiciels absolument compatibles, il ny a
aucune abstraction des donnes.

Systmes de chiers en rseau : NFS, SANs et NAS

101

Serveurs

Disques
Commutateur SAN

HBA

HBA

HBA

Figure 5.8 : Topologie dun SAN en Fibre Channel

5.3.4 Architecture NAS


Comme lindiquent les noms des protocoles daccs aux donnes gnralement
proposs, un NAS (Network Attached Storage) est un serveur de chiers (le terme
est important) connect au rseau. Les autres serveurs peuvent accder au chiers
servis par le NAS au moyen des protocoles de partage de chiers habituels : NFS
(Network File System) pour les systmes Unix, SMB (Server Message Block), aussi
appel CIFS (Common Internet File System), pour les systmes Windows.
Serveurs

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).

5.4 Critique des chiers ; systmes persistants


Si nous nous remmorons la description du systme de mmoire virtuelle donne
au chapitre 4 et que nous la comparions la description du systme de chiers qui
vient dtre donne, nous ne pouvons manquer dtre frapps par leur redondance
mutuelle. Lun et lautre systmes ont pour fonction dassurer la persistance de donnes qui taient dans la mmoire centrale pour y subir un traitement, qui cessent
dy rsider pour une raison ou une autre, et que lon souhaite nanmoins conser-

Critique des chiers ; systmes persistants

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

Les tentatives pour implanter la persistance orthogonale dans les langages ou


les bases de donnes utilises dans le contexte de systmes dexploitation classique
comme Unix nont pas donn de trs bons rsultats, parce que le problme de laccs
aux donnes est trop fondamental pour tre rsolu de faon totalement dirente
par un programme dapplication dune part, par son environnement dautre part.
Lauteur de systme persistant est amen grer la mmoire de manire parfois
subtile et complexe, or dans un systme classique tel Unix cest le noyau qui dcide
des pages de mmoire virtuelle garder en mmoire volatile ou relguer en mmoire
auxiliaire, ce qui aboutit des contradictions.
Lexemple dun tel chec est fourni par les bases de donnes objets qui avaient
soulev un grand intrt dans les annes 1990 avec leur programme trs sduisant,
qui consistait stocker les donnes sous la mme forme en mmoire centrale pendant
leur vie active et en mmoire auxiliaire pendant leur vie latente . Le revers
de la mdaille tait que le format des donnes dans les bases dpendait alors du
langage de programmation et du matriel utiliss : une base de donnes cre par
un programme C++ ntait pas accessible un programme Java, et si elle avait
t cre sur une machine Sun processeur 32 bits elle ntait pas accessible un
programme excut par une machine processeur Alpha 64 bits, sauf passer par
des programmes de conversion de donnes qui font perdre tout lavantage attendu.
De surcrot la mmoire persistante tait ralise base de systmes de chiers classiques, totalement inadapts une telle fonction. Et enn il rsultait de tout ceci une
programmation laborieuse et des performances le plus souvent mdiocres. Si je puis
mentionner mes modestes expriences personnelles de combat avec un Systme de
Gestion de Donnes Objet (SGDO) pourtant rput trs industriel (par opposition
aux logiciels libres dvelopps par des chercheurs dans les universits), je ne puis me
dprendre dune impression de bricolage : la trace du systme rvlait que le SGDO
passait le plus clair de son temps balayer en long, en large et en travers des arborescences de rpertoire pour y chercher des donnes qui taient tout fait ailleurs,
et recopier un nombre incalculable de fois la mme (grande) portion de chier en
mmoire (au moyen de lappel systme mmap pour les connaisseurs 6 ). Il ny avait
bien sr pour un utilisateur naf aucun moyen simple dextraire des donnes de la
base : la seule faon tait dcrire du code C++ bare metal, exercice particulirement
punitif ou pervers. Alors que mme si lon peut reprocher aux Systmes de Gestion
de Bases de Donnes Relationnelles (SGBDR) tels que PostgreSQL, Oracle ou Sybase une certaine rigidit, ils orent au moins une mthode daccs aux donnes
relativement normalise et relativement simple avec le langage SQL.
La leon en tirer semble tre quil vaut mieux implanter les fonctions de persistance au niveau du systme dexploitation, quitte ce que ce soit une couche
dinterface ajoute un systme classique sous-jacent. Limplantation de la persistance dans le systme garantit une uniformit de vision pour tous les programmes
dapplication, vite la redondance de fonctions qui alourdissait tellement les bases de
donnes objets, bref elle assure la cohrence de la smantique daccs aux donnes.
6. mmap est un appel systme qui ralise la projection dun chier en mmoire, cest--dire
son chargement intgral, ce qui permet ensuite dy accder au prix dun accs en mmoire. Cest
judicieux si lon doit eectuer de faon intensive des accs tout le chier, mais si lon veut
simplement accder une donne cest un marteau-pilon pour craser une mouche.

Critique des chiers ; systmes persistants

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.

5.4.1 Reprise sur point de contrle


La notion de reprise sur point de contrle (checkpoint-restart) est bien sr au
cur de tous ces systmes. Le problme rsoudre est le suivant : si un programme
est interrompu inopinment en cours de traitement, comment reprendre son excution sans avoir la recommencer depuis le dbut ? Idalement, il faudrait reprendre
au point o lon stait arrt, mais il est raisonnablement acceptable de repartir

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

Critique des chiers ; systmes persistants

107

comme dans les environnements classiques, mais un fondement du systme. Une


consquence amusante de ce type de fonctionnement, qui surprit les auteurs des
premiers systmes persistants, cest quun programme dapplication ne peut pas
tre inform dun arrt du systme, puisquil est reparti automatiquement comme si
de rien ntait.

Chapitre 6 Rseaux

Sommaire
6.1

6.2
6.3
6.4

6.5

6.6

Transmettre de linformation distance . . . . . . . . . . . . . .


6.1.1 Thorie de linformation . . . . . . . . . . . . . . . . . .
6.1.2 Premires ralisations . . . . . . . . . . . . . . . . . . .
6.1.3 Un modle pour les rseaux . . . . . . . . . . . . . . . .
Couche 1, physique . . . . . . . . . . . . . . . . . . . . . . . . .
Notion de protocole . . . . . . . . . . . . . . . . . . . . . . . . .
Couche 2, liaison de donnes . . . . . . . . . . . . . . . . . . . .
6.4.1 Notion dadresse rseau . . . . . . . . . . . . . . . . . .
6.4.2 Dtection et correction derreur pour la couche 2 . . . .
Dcoupage en trames (framing) . . . . . . . . . . . . . .
Dtection de trames endommages . . . . . . . . . . . .
Contrle de ux . . . . . . . . . . . . . . . . . . . . . . .
6.4.3 Un exemple de liaison de donnes : Ethernet . . . . . . .
Couche 3, rseau . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.5.1 Commutation de circuits . . . . . . . . . . . . . . . . . .
6.5.2 Commutation de paquets . . . . . . . . . . . . . . . . .
6.5.3 Le protocole IP et lInternet . . . . . . . . . . . . . . . .
Organisation administrative de lInternet . . . . . . . . .
Organisation topographique de lInternet . . . . . . . . .
Ladresse et le datagramme IP . . . . . . . . . . . . . .
6.5.4 Exception lunicit des adresses : traduction dadresses
(NAT) . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Le principe du standard tlphonique dhtel . . . . . .
Adresses non routables . . . . . . . . . . . . . . . . . . .
Accder lInternet sans adresse routable . . . . . . . .
Ralisations . . . . . . . . . . . . . . . . . . . . . . . . .
6.5.5 Une solution, quelques problmes . . . . . . . . . . . . .
6.5.6 Traduction de noms en adresses : le DNS . . . . . . . .
6.5.7 Mcanisme de la couche IP . . . . . . . . . . . . . . . .
Algorithmes de routage . . . . . . . . . . . . . . . . . .
Calcul des tables de routage . . . . . . . . . . . . . . . .
Reconguration en cas de coupure de liaison . . . . . . .
Problmes de routage . . . . . . . . . . . . . . . . . . .
6.5.8 Nouvelles tendances IP . . . . . . . . . . . . . . . . . . .
Couche 4, transport . . . . . . . . . . . . . . . . . . . . . . . . .
6.6.1 TCP (Transmission Control Protocol) . . . . . . . . . .
Connexion . . . . . . . . . . . . . . . . . . . . . . . . . .

. 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

Modle client-serveur et numros de port . . . . . . . .


Poigne de main en trois tapes (three-way handshake)
Contrle de ux et vitement de congestion . . . . . .
6.6.2 UDP (User Datagram Protocol) . . . . . . . . . . . . .
Les tlphonistes contre-attaquent : ATM . . . . . . . . . . . .
Clientserveur ou pair pair (peer to peer) ? . . . . . . . . . .
Versatilit des protocoles pair pair . . . . . . . . . . . . . . .
6.9.1 Dnition et usage du pair pair . . . . . . . . . . . .
6.9.2 Problmes rsoudre par le pair pair . . . . . . . . .

.
.
.
.
.
.
.
.
.

. 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.

6.1 Transmettre de linformation distance


Le problme de base rsoudre pour concevoir et raliser un rseau dordinateurs consiste tablir un change de donnes entre deux ordinateurs distants. Ce
problme se divise en deux parties : pour que les donnes circulent correctement elles
doivent tre reprsentes selon un codage appropri commun aux deux extrmits,
et il y faut un support physique galement appropri.
La position de ce problme remonte au moins Aristote, qui a envisag la communication dinformation entre deux personnes en termes de message et de code.
Incidemment, ce modle est beaucoup mieux adapt la communication entre ordinateurs qu la communication entre tres humains, qui est extraordinairement
complique par tout un contexte (culturel, social, sensoriel) et par des lments non
verbaux (expressions du visage, intonations de la voix) qui rendent ce modle, dans
ce cas, assez inappropri. Le langage travestit la pense. Et notamment de telle
sorte que daprs la forme extrieure du vtement lon ne peut conclure la forme
de la pense travestie ; pour la raison que la forme extrieure du vtement vise
tout autre chose qu permettre de reconnatre la forme du corps 1 . Bref, pour les
ordinateurs le modle aristotlicien convient bien.
1. Voir Wittgenstein, Tractatus logico-philosophicus, [82].

Transmettre de linformation distance

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.

6.1.1 Thorie de linformation 3


Le transfert dinformation dans un systme de communication seectue par
messages. Un message est une suite de signes (de symboles) tirs dun alphabet.
Lensemble S = {m1 ...mi ...mn } des messages que lon peut former laide dun
alphabet donn constitue une source (discrte) de messages : un texte est une suite
de messages.
La notion dinformation est lie lignorance du destinataire quant aux messages
mis depuis S : il ny a apport dinformation que si le destinataire ignore le contenu
du message quil va recevoir. Lincertitude, quant la teneur du message, est dautant
plus grande que le message a une faible probabilit dtre mis ; inversement, la
rception de ce message contribue lever une incertitude dautant plus grande, et
apporte donc une plus grande quantit dinformation ; ainsi apparat une relation
entre la quantit dinformation dun message mi et sa probabilit dmission, pi ,
relation reprsente par la fonction logarithmique suivante 4 :
I(mi ) = log (1/pi ) = log pi
I tant lincertitude, ou linformation, le nombre de symboles de lalphabet utilis.
On en dduit immdiatement que la valeur de lunit dinformation est celle dun
message de probabilit 1 . On prend gnralement = 2, lunit correspondante
tant le bit.
Pour donner un contenu plus facile retenir la formule ci-dessus, on peut
utiliser les logarithmes dcimaux, et regarder la quantit dinformation transmise
2. Michel Volle me fait remarquer que cette expression consacre par lusage est malheureuse,
il serait plus appropri de dire thorie de la communication , conformment dailleurs au titre
de larticle de Shannon, A mathematical theory of communication, (Bell System Technical Journal,
vol. 27, juillet et octobre 1948) [67], ou thorie des donnes . Lordinateur, ou le rseau de
communication, contiennent et transmettent des donnes, qui ne deviennent de linformation que
dans lesprit dun tre humain, capable (et lui seul en est capable) de leur donner un sens. Voir
ce sujet http://www.volle.com/ulb/021115/textes/vocabulaire.htm.
3. Les quatre alinas qui suivent sont emprunts mon livre Initiation la programmation avec
Scheme, publi en 2001 par les ditions Technip, avec laimable autorisation de lditeur.
4. On rappelle que par dnition le logarithme de base de x, not log x, est le nombre m
tel que m = x. On vrie que log = 1 et que, indiremment la valeur de , log 1 = 0 et
log(a b) = log a + log b. Cette dernire proprit, trs intressante puisquelle permet, avec une
table de logarithmes, de faire des multiplications mme si on ne connat que la table daddition, est
(tait ?) le principe de base de la rgle calcul, qui nest pas autre chose quune table de logs en
plastique.

112

Rseaux

par un message mis avec une certaine probabilit :


probabilit dmission
p1 = 1
p2 = 0, 1
p3 = 0, 01
...

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
...

Cette dnition probabiliste de la quantit dinformation dun message montre


quelle dpend avant tout de la source de messages utilise ; cette dernire peut
tre caractrise par une quantit dinformation (ou incertitude) moyenne, daprs
lexpression :
n

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

6.1.2 Premires ralisations


La transmission de donnes entre calculateurs a prcd linvention de lordinateur proprement dit. En 1940 George Robert Stibitz travaillait depuis dj quelques
annes la conception et la ralisation de calculateurs relais lectromcaniques
pour les Bell Telephone Laboratories. Il avait organis une dmonstration de sa machine au Dartmouth College, dans le New Hampshire, o se tenait le congrs de
la Socit amricaine de mathmatiques, alors que le calculateur tait New York,
330 km de l. Le matriel tait trs encombrant et le dmnager compliqu et
alatoire : Stibitz dcida de raliser la dmonstration partir dun tltype reli par
une ligne tlphonique la machine, ce qui fut fait le 11 septembre 1940 avec un
total succs. Ds lors le problme de base pouvait tre considr comme rsolu.
On savait faire communiquer distance deux machines traiter de linformation.
Dans ce cas prcis le support matriel de la communication tait une ligne de
tlphone en ls de cuivre, comme on en utilise encore aujourdhui, mais les rseaux informatiques peuvent utiliser toutes sortes de supports matriel sans que
cela modie la nature du problme rsoudre : bre optique, faisceau hertzien,
canal satellite, cble coaxial, rayons infrarouge, signal laser etc. Il sut que les quipements chaque extrmit soient congurs correctement, de faon cohrente, ce
qui dailleurs nest pas une mince aaire.

6.1.3 Un modle pour les rseaux


Considrons comme acquise la solution du problme de base, faire communiquer
distance deux machines traiter de linformation. Avons-nous pour autant un rseau de telles machines ? Sans doute non. Le problme de lacheminement dun mes-

Couche 1, physique

113

sage dans un rseau complexe se compose de plusieurs sous-problmes. Un groupe


dexperts de lISO (Organisation Internationale de Normalisation) runi de 1977
1986 sous la conduite dHubert Zimmerman a class les sous-problmes selon une
chelle allant du plus concret (support physique de la communication) au plus immatriel (le logiciel de communication avec lutilisateur). Il en est rsult un modle
en couches nomm OSI (pour Open Systems Interconnexion) conforme au principe
expos la section 1.4, o la couche la plus basse correspond aux questions lies
au support physique, et la plus haute au logiciel de contact avec lutilisateur nal ;
nous allons examiner dans les sections suivantes les sous-problmes selon la couche
du modle qui leur correspond.
Avant dentamer la description du contenu et des fonctions de chaque couche du
modle OSI de lISO, il convient de prciser le vocabulaire employ pour dcrire les
rseaux. Un rseau sert communment relier un certain nombre de points. De faon
gnrale, un certain nombre de points relis par des lignes constituent un graphe. Les
points relis sont appels sommets (vertex en anglais) du graphe, et la ligne qui relie
deux points est appele arc (edge en anglais). Si larc qui relie un sommet A un
autre, B par exemple, relie galement B A, on dit que le graphe nest pas orient ;
dans les graphes orients les arcs ont un sens ; les graphes dont nous parlerons sont
non orients. La gure 6.1 reprsente un graphe non orient G sept sommets.
B
A

C
D

G
E
F

Figure 6.1 : Graphe connexe complet

Le graphe G, ou ABCDEFG, est tel quentre deux quelconques de ses sommets


il existe au moins un chemin constitu darcs du graphe : un tel graphe est dit
connexe. De surcrot, chaque sommet est reli par un arc chacun des autres : cest
un graphe connexe complet. Chaque sommet est reli par un arc chacun des n 1
autres sommets, et chaque arc joue le mme rle pour les deux sommets quil relie,
G possde donc n(n1)
arcs.
2
La gure 6.2 reprsente un graphe H sept sommets simplement connexe.
Lorsque lon parle de rseaux informatiques, il peut tre commode de les reprsenter
par des graphes. Les sommets sont alors gnralement appels nuds du rseau, et
les arcs, lignes ou liaisons.

6.2 Couche 1, physique


tant donn un support physique appropri reliant deux matriels de traitement dinformation, dits quipements terminaux, le premier sous-problme consiste
tablir les conditions pour que chacun de ces deux quipements puisse mettre et

114

Rseaux

E
F
Figure 6.2 : Graphe simplement connexe

recevoir des signaux en provenance de et destins lautre. Il sagit du problme


de base vu plus haut, que G. Stibitz a t le premier rsoudre, et dont Nyquist
et Shannon ont pos les bases thoriques, notamment en donnant le dbit maximum
dinformation que peut assurer un canal donn.
En restant schmatique, lenvoi dinformations se fait en modulant une onde
hertzienne, ou en modiant la tension lectrique applique aux bornes dun conducteur. La modication de la phase de londe ou de la tension est un signal lmentaire,
en dautres termes un bit, une unit dinformation. Une telle modication ne peut
intervenir quun certain nombre de fois par seconde, selon les caractristiques du matriel. Cette frquence maximum de variation dnit la largeur de bande du canal,
qui limite la quantit dinformation quil peut acheminer.
La solution du sous-problme de la couche 1 fait appel la physique, llectronique, au traitement du signal plus quelle ne constitue une question dinformatique
proprement parler, et nous ne nous y attarderons gure. Signalons simplement
quels sont les types de supports les plus couramment utiliss pour dier des rseaux informatiques :
Pour construire un rseau priv dans un immeuble ou sur un campus (LAN,
pour Local Area Network), la solution classique consiste poser de la bre
optique ds que les distances sont un peu grandes, de la paire torsade tlphonique pour le cblage dit capillaire qui alimente les prises terminales.
Les systmes sans l (hertzien ou infrarouge) sont aussi utiliss. Les dbits
peuvent atteindre le milliard de bits par seconde (Gigabit/s).
Les rseaux longue distance ou WANs (pour Wide Area Network), comme
ceux des fournisseurs daccs lInternet (FAI), ont recours plusieurs types
de solutions : location de lignes aux oprateurs de tlcommunications ou
aux propritaires de rseaux dautre nature (compagnies de chemin de fer, de
distribution dlectricit, de mtro...), construction dinfrastructures propres.
Physiquement, la liaison est presque toujours de la bre optique. Les dbits
sont de lordre du milliard de bits par seconde. Le satellite est peu utilisable
cause du dlai de propagation, qui est dun quart de seconde aller et retour
(pour atteindre les antipodes il faut deux rebonds sur des satellites, soit une
demi-seconde).
Pour laccs des particuliers leur FAI, lusage de modems et du rseau
tlphonique commut ne disparatra pas tout de suite. Les accs dits haut

Notion de protocole

115

dbit (cble TV ou ADSL sur rseau tlphonique) procurent un dbit de


lordre du million de bits par seconde (Mgabit/s).
Tous ces dbits sont donns titre indicatif et trs provisoire. Signalons aussi
que dans certains cas la couche physique est capable dacheminer des signaux simultanment dans les deux sens.

6.3 Notion de protocole


Pour acheminer un ux de donnes sur un canal de transmission, les systmes
matriels et logiciels qui composent le rseau utilisent un ensemble de rgles, de
conventions et de mises en forme des donnes qui constituent un protocole de communication. Une des fonctions des protocoles de communication est la dtection et la
correction des erreurs de transmission, qui constituent un des problmes classiques
des rseaux informatiques.
Les canaux de communication tels que les lignes tlphoniques sont soumis des
erreurs alatoires, qui constituent le bruit. Pour une conversation cela provoque juste
un parasite sonore dsagrable, mais dans le cas de la transmission de donnes ce
sera une altration de nature rendre le message inutilisable. Il faut donc instaurer
des moyens de vrier lintgrit des donnes et, quand cest possible, de la restaurer
quand elle a t altre. Ceci devra tre fait pour chaque couche du protocole de
transmission, mais cest spcialement important pour la couche 2, dont le rle est de
garantir aux couches suprieures un canal de transmission sans erreur dun ux de
bits. Le traitement de ce problme peut direr selon quil sagit de liaisons point
point ou de diusion.
Le protocole dnit galement, pour chaque couche, dautres caractristiques
de la transmission : les messages sont gnralement dcoups en units de taille
homogne (appels trames pour la couche 2 et paquets pour la couche 3), les nuds
reoivent lorsque cest ncessaire des adresses qui permettent, comme celles des
personnes, de les trouver et de les identier dans le rseau.
Nous pouvons nous reprsenter un protocole de communication comme un protocole au sens habituel ; quand deux entits du rseau entament une communication,
lchange se passe un peu comme ceci :
Attention, je vais tenvoyer un message de plusieurs pages, es-tu prt le
recevoir ?
Oui, je suis prt.
Tu es sr ?
Oui, je suis prt.
Je vais envoyer.
Vas-y.
(Envoi de la premire page, attache une che tire larc).
Bien reue.
(Envoi de la seconde page, enroule autour dun caillou lanc avec une
fronde).
Bien reue.
(Envoi de la troisime page, cone un pigeon voyageur).
Bien reue.

116

Rseaux

Normalement tu as d recevoir trois pages numrotes de 1 3. Vrie que


tous les numros sont l et dans le bon ordre.
Oui, jai bien reu toutes les pages dans le bon ordre.
Comme signal la section 1.4, dans un modle en couches les protocoles dnissent les rgles du dialogue entre couches de mme niveau sur des systmes diffrents, cependant que les interfaces spcient les services quune couche infrieure
fournit la couche qui lui est immdiatement suprieure au sein du mme systme.

6.4 Couche 2, liaison de donnes


La couche 2 du modle de transmission de donnes, appele couche de liaison de
donnes, assure la transmission able dun ux de bits entre deux nuds adjacents
du rseau sur un support physique procur par la couche 1. Quand on dit adjacents,
il faut entendre que les deux quipements terminaux sont connects par un canal
de transmission qui peut tre vu comme un l, cest dire que les bits mis une
extrmit sont dlivrs exactement dans le mme ordre lautre extrmit. Le travail
de la couche 2 consiste faire en sorte quils soient galement transmis sans omission
ni dformation et remis la couche 3. La gure 6.3 reprsente cette coopration des
fonctions fournies par chaque couche 5 .

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

Figure 6.3 : Les trois couches basses

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.

Couche 2, liaison de donnes

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.

6.4.1 Notion dadresse rseau


Dans le cas dune liaison point point, identier le destinataire dun message
nest pas dicile puisquil ny a que deux nuds en cause : lmetteur une extrmit, le rcepteur lautre. Dans le cas de la diusion, lmetteur dun message
doit dsigner le destinataire. Et au niveau de la couche 3, le rseau est complexe et
contient gnralement de nombreux nuds quil faut identier et atteindre. cette
n chaque nud se voit attribuer une adresse rseau. Aux couches 2 et 3 correspondent des visions direntes du rseau, et de ce fait elles possdent des systmes
dadressage distincts.
Adresse de couche 2
Larchitecture des rseaux Ethernet, dont notamment leur systme dadressage,
a t conue par Xerox et ralise par Xerox, Intel et Digital Equipment. Plus tard,
lIEEE (Institute of Electrical and Electronics Engineers) a promulgu la norme
802.3 cense dcrire Ethernet, mais qui introduit quelques divergences qui obligent
les industriels sadapter aux deux variantes, ce qui nest pas trop compliqu.
6. ... ou de transmission sans l.

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.

6.4.2 Dtection et correction derreur pour la couche 2


Dcoupage en trames (framing)
La transmission de la voix par un procd analogique se fait selon un ux continu
de signaux, limage de la parole. La ncessit du contrle dintgrit des donnes
impose pour la transmission de donnes numriques de procder autrement. Pour
les locuteurs de langues non crites, la parole se manifeste comme un ux continu,
et la conscience de son dcoupage en mots nest pas de la mme nature que pour
les locuteurs de langues crites qui ont d apprendre procder mentalement ce
dcoupage (voir [39] pour de plus amples claircissements). De faon analogue, le
ot de bits, que la couche 1 est prte fournir la demande, est dcoup par les
protocoles de couche 2 en entits discrtes de longueur limite appeles trames (en
anglais frame).
Le dcoupage du ot de donnes en trames est en fait plutt une image : il
nous faudra un moyen de reconnatre le dbut et la n dune trame. Les solutions
raisonnables sont :
sparer les trames par des intervalles de silence ; cette solution est employe pour les rseaux locaux parce que le dbit est lev et la bande passante
disponible profusion ;
utiliser des trames de longueur soit xe, soit variable mais connue en cours de
transmission, et compter les bits ; cette solution et la suivante sont employes
notamment pour les liaisons longue distance ;
utiliser des congurations de bits particulires et inutilises par le codage des
donnes pour marquer le dbut et la n de trames, et guetter leur occurrence,
ce qui est la solution la plus rpandue, ventuellement combine au comptage
de bits.

Couche 2, liaison de donnes

119

Dtection de trames endommages


Les trames seront les entits dont les procdures de dtection derreur vrieront
lintgrit. Nous considrons ici, dans un premier temps, le traitement des trames qui
arrivent destination mais dont le contenu a t altr par un parasite quelconque.
Le principe de base de la dtection de ce type derreur est la redondance : avant
dmettre une trame, la station mettrice ajoute au message transmettre (ici le
contenu de la trame) une information supplmentaire calcule partir des bits du
message selon un algorithme dit de hachage (hash). la rception, la station rceptrice eectue le mme calcul ; si elle ne trouve pas le mme rsultat cest quil y a
eu une erreur. Cette information supplmentaire calcule partir de linformation
utile sappelle somme de contrle (en anglais checksum). Lalgorithme de calcul de
la somme de contrle doit bien sr tre le mme aux deux extrmits : cette convention fait partie du protocole. Une mthode trs rpandue est le code de redondance
cyclique (CRC), dont nous ne donnerons pas le calcul ici.
Si le calcul prvu par la procdure donne le rsultat attendu, il ny a pas derreur
et alors, dans le cas des rseaux longue distance (WAN), le protocole de couche 2
(ct rcepteur) envoie un acquittement (conventionnellement ACK) lmetteur ;
sinon il envoie par exemple un acquittement ngatif (NAK) qui demande lmetteur de retransmettre la trame considre. Pour savoir quelle trame est acquitte, le
protocole prvoit aussi que chaque trame comporte un numro de squence permettant de la distinguer des prcdentes et des suivantes. Ethernet procde sans change
dacquittements : les dtections derreur sont signales par un signal de couche 1.
Il existe aussi des codes auto-correcteurs, dont le plus clbre est le code de Hamming : au prix de plus de redondance, ces codes permettent de connatre prcisment
les positions des bits errons, sil ny en a pas trop, et partant de les corriger. Cela
semble sduisant mais nest pas tellement utilis, parce quen pratique on observe
que les trames sont le plus souvent soit intactes, soit trop fortement endommages
pour tre corriges. De plus les trames endommages sont rares sur la plupart des
rseaux modernes, o les taux derreur sont de lordre de 106 , voire moins 7 . Il est
plus ecace de retransmettre les donnes errones.
Contrle de ux
Les contrles derreur voqus la section prcdente faisaient lhypothse que
les dlais de transmission dune trame et de lacquittement en sens inverse taient
ngligeables, ce qui est vrai pour un rseau local mais beaucoup moins pour une
liaison longue distance. Un protocole de couche 2 doit galement se prmunir
contre un autre risque : si un metteur a une interface rseau beaucoup plus rapide
que celle du rcepteur, le rcepteur ne pourra pas absorber toutes les trames qui lui
sont envoyes et des donnes vont se perdre. Il faut donc un algorithme pour rguler
les transmissions, et notamment sassurer que les trames envoyes sont bien reues.
7. Ceci est vrai des rseaux locaux et des rseaux tlphoniques des pays riches, maintenant
presque toujours numriques. Ce ne lest pas dans les pays dots de rseaux tlphoniques et lectriques de mauvaise qualit, qui de ce fait ont parfois intrt continuer utiliser des protocoles
moins rapides mais plus robustes.

120

Rseaux

La solution voque la section prcdente, qui consiste, avant denvoyer une


nouvelle trame, attendre davoir reu un acquittement positif pour la prcdente,
rpond la question, mais impose un ralentissement insupportable et une utilisation
extrmement inecace de la bande passante. Cette inecacit est particulirement
grande pour les liaisons par satellite gostationnaire, qui peuvent avoir un dbit
lev mais un temps de transit incompressible de lordre dun quart de seconde : sil
fallait attendre lacquittement, on aurait un dbit de deux trames par seconde, ce
qui ne serait videmment pas acceptable.
Pour amliorer cette situation, les protocoles adapts aux liaisons dlai de
transit important utilisent un algorithme bas sur le principe suivant : lmetteur
nattend lacquittement de la trame numro n quaprs lmission de la trame n + p,
avec p > 1. Le dlai ncessaire la transmission de p trames est appel dlai de garde
(timeout interval). Cette mthode est appele pipeline, parce que lon enfourne les
trames dans le tuyau sans attendre que les prcdentes soient sorties. Comme
la section prcdente, chaque trame est dote dun numro de squence qui permet
de savoir, notamment, quelle trame acquitte tel ACK (dans le cas des protocoles
WAN).
Mais alors, que va-t-il se passer si une trame, au milieu dun long message, est
corrompue ou narrive pas ? Rappelons que la couche 2 a pour mission de dlivrer les
trames dans lordre la couche 3. Un tel cas est illustr par la gure 6.4, o nous
supposerons p = 3. Soit le cas dcole suivant : la trame 2 est mise, mais perdue
ou dtriore en route. Le rcepteur dtecte le problme sans coup frir : si la trame
est dtriore, par une des mthodes de dtection derreur indiques la section
prcdente 6.4.2 ; si elle est perdue en route, le contrle des numros de squence
montre que la trame 1 devrait tre suivie de la trame 2, or il reoit la place la
trame 3 (ou une autre...), qui ne satisfait pas aux rgles du protocole.
Ds que le rcepteur constate la dfaillance de la trame 2, il rejette imperturbablement toutes les trames que lmetteur continue lui envoyer. Lmetteur va-t-il
sen apercevoir ? Oui : aprs p missions, soit aprs la trame n + p = 2 + 3 = 5,
il sattend recevoir lacquittement de la trame 2, attente due. Que va-t-il faire
alors ? Il va simplement rmettre la trame 2, puis toutes ses suivantes. Le rcepteur
va enn recevoir la trame 2 attendue, il va laccepter et lacquitter, ainsi que les
suivantes.
dlai de garde

erreur

Ac
k

Ac
k

Ac
k1
1

k0

Ac

Figure 6.4 : Fentre glissante

Couche 2, liaison de donnes

121

Combien de trames ont t perdues ou rejetes ? p + 1 = 4. Pour que lalgorithme


soit correct, il faut que lmetteur garde en mmoire au moins les p + 1 dernires
trames mises, an de pouvoir les rmettre. Plus p sera grand, plus le protocole
sera rapide, mais plus il faudra de mmoire dans les quipements de transmission,
ce qui est un compromis constant pour les performances des ordinateurs et autres
machines traiter de linformation.
Du ct du rcepteur, notre algorithme rejette toutes les trames conscutives la
trame dtriore : on pourrait imaginer de conserver les trames correctes qui arrivent
aprs la trame dtriore. Ainsi lorsqu lexpiration du dlai de garde lmetteur
constaterait quune trame na pas t acquitte, il naurait que celle-l retransmettre. Bien sr, tant que le rcepteur na pas reu la trame dtriore, il ne peut
pas remettre les suivantes la couche rseau, il doit donc les garder dans sa mmoire
de travail (une telle zone de mmoire est appele communment buer). Le nombre
de trames que le rcepteur peut ainsi conserver dnit la largeur dune fentre de
rception. Notre exemple initial, o toutes les trames conscutives lerreur taient
rejetes, correspond une fentre de largeur 1. Le nombre de trames que lmetteur
simpose de garder en mmoire en attendant leur acquittement sappelle la fentre
dmission. Cet algorithme est nomm protocole de la fentre glissante.
La largeur des fentres, en mission et en rception, peut varier. Cet algorithme
est dit de contrle de ux : si lmetteur constate que sa fentre dmission est
toujours vide, il peut augmenter son dbit si cest possible. Si le rcepteur ne peut
pas puiser la fentre de rception, la fentre dmission va se remplir et lmetteur
sera oblig de sinterrompre.
Ce protocole de fentre glissante, que nous venons de dcrire pour la couche 2,
est galement utilis pour la couche 4 de transport (TCP).

6.4.3 Un exemple de liaison de donnes : Ethernet


Si vous utilisez un rseau local votre domicile ou sur votre lieu de travail, il
y a de fortes chances que ce soit un rseau Ethernet. Cette technologie a supplant
la plupart des concurrentes, et de nos jours une carte rseau de ce type vaut une
quinzaine dEuros. Lauteur se rappelle la premire carte Ethernet quil a achete
(pour le compte de son employeur) : elle avait cot lquivalent de 100 000 Euros et
il avait fallu abattre une cloison pour loger larmoire dextension de 50 cm de large,
120 cm de hauteur et 70 cm de profondeur ncessaire son installation. Ctait un
matriel DEC connect un VAX 11/750 sous VMS, en 1984.
Ethernet a t invent au PARC (Palo Alto Research Center) de Xerox en 1973
par Robert Metcalfe et David Boggs. Le lecteur trouvera dans le livre de rseau
de Tanenbaum [73] une description historique et technique dtaille. La premire
version commercialise a t introduite en 1980 par Xerox, Intel et DEC. Le protocole
a t normalis par lIEEE en 1983 sous la rfrence 802.3, toujours en vigueur.
Le nom Ethernet est un hommage un anctre de ce protocole, ALOHA, invent
lUniversit dHawa en 1970 par Norman Abramson. Comme Abramson voulait
relier les campus de luniversit, situs sur des les direntes, ALOHA tait un
protocole de rseau par radio, les communications circulaient dans lther.
Selon ALOHA, toutes les stations mettent et reoivent sur la mme bande de
frquence. Les messages sont dcoups en trames, identies par un numro dordre
et ladresse de la station destinataire. Cest une conversation plusieurs : toutes les

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-

Couche 2, liaison de donnes

123

triel de couche 1 qui possde plusieurs interfaces connectes chacune un segment


de rseau et qui se contente de recevoir, amplier et retransmettre les signaux sur
toutes ses interfaces ; il peut ainsi tendre le rseau plusieurs segments de cble ; les
rpteurs sont aujourdhui le plus souvent abandonns au prot des commutateurs.
Typiquement, les rseaux Ethernet sur paires torsades sont organises selon une
topologie en toile autour dun commutateur (switch) . La leon pratique retenir
est que sil est commode dtendre son rseau en multipliant des commutateurs en
cascade (comme des prises multiples pour llectricit), il vient un moment o lon
cre des boucles, et alors le rseau se met adopter des comportements erratiques et
non souhaits : ce nest pas forcment une panne franche, par moments cela marche,
par moments non, cest--dire que cest une panne dicile diagnostiquer.
Un commutateur, au lieu de propager le signal sur toutes les interfaces, ne lenvoie
que sur celle qui correspond ladresse de destination de la trame reue. Comment
le commutateur connat-il ladresse de destination de la trame ? Par apprentissage :
lorsquil reoit une trame pour une station qui ne sest jamais manifeste, il agit
comme un rpteur et la diuse toutes ses interfaces. Ds quune station sest
manifeste il conserve son adresse dans une table et nenvoie qu elle les trames qui
lui sont destines. Cette nouvelle organisation permet accessoirement de diminuer
considrablement le nombre de collisions, puisquainsi seules les stations concernes
coutent le trac qui leur est destin. Cela amliore aussi la scurit. Pourquoi alors
ne pas lavoir fait plus tt ? Parce quil a fallu du temps pour pouvoir fabriquer des
cots raisonnables une lectronique susamment complexe et rapide : chantillonner
un signal 10 MHz (et maintenant 100 MHz pour le FastEthernet, 1 GHz pour le
GigabitEhernet, demain 10 GHz) et analyser la vole ladresse MAC de destination
semble banal, mais ne ltait pas au dbut des annes 1980.
Signalons aussi que la bre optique, support trs rapide, permet doutrepasser la
rgle des quatre rpteurs, ce qui en fait un support de choix pour les pines dorsales
(backbones) de rseaux de campus, voire de mtropole (Metropolitan Area Networks,
ou MAN) comme le Rseau Acadmique Parisien, qui relie plusieurs universits et
centres de recherches parisiens au moyen de bres optiques poses dans les tunnels
du mtro.
Saisissons loccasion de cette section consacre Ethernet pour signaler le nombre
considrable dinnovations capitales dont lorigine se trouve au PARC cr en 1970
par Xerox : Ethernet pour commencer. Le langage de description de page PostScript : les fondateurs dAdobe ont quitt Xerox, frustrs de voir leur employeur
ne rien faire de leur invention. Limpression laser vient aussi du PARC (1971). Les
interfaces fentres popularises par le Macintosh ont t inventes par Alan Kay
la n des annes 1960 alors quil travaillait au langage Smalltalk, dabord lUniversit dUtah, puis lUniversit Stanford, enn au PARC de 1972 1983, o Steve
Jobs le rencontra et conut le projet dun ordinateur Apple sur la base de ces ides.
Incidemment, si la programmation par objets avait dj t invente en 1965 par
lquipe de Simula, Alan Kay et le PARC ont beaucoup contribu son succs avec
Smalltalk. Bref, que serions-nous sans eux. Une des explications de cette fcondit
extraordinaire dont Xerox a nalement tir peu de gains nanciers est que le PARC
avait t cr essentiellement pour dpenser fonds perdus une partie des bnces normes engendrs par les brevets de la photocopie sec, an dviter quils
nengendrent des impts galement normes. La rentabilit tait un non-objectif.

124

Rseaux

6.5 Couche 3, rseau


Ds que notre rseau comportera un nombre n dquipements terminaux suprieur 2 ou 3, il ne sera plus raisonnable de les relier deux deux par des supports
physiques dont le nombre serait gal, nous lavons vu, n(n1)
, mme sil sagit de
2
faisceaux hertziens. Il faut donc acheminer les messages par un trajet complexe qui
passe par plusieurs segments de liaison de donnes. Ce sous-problme suppose rsolu le prcdent (en dautres termes, la couche 3 fonctionne en utilisant les services
fournis par la couche 2) et constitue le problme du rseau proprement dit.

6.5.1 Commutation de circuits


Une premire solution consiste tablir un circuit entre deux quipements en
slectionnant un certain nombre de segments de cble (par exemple) qui, mis bout
bout, constituent un itinraire de lun lautre. Aux jonctions des segments devront
se trouver des quipements de transmission de donnes capables de jouer le rle de
poste daiguillage pour les signaux changs. Nous aurons ainsi constitu un circuit
physique, dit circuit commut, qui une fois tabli peut tre considr comme lquivalent dune liaison point point. Cest ainsi que fonctionnent, par exemple, les
rseaux de tlphones, fussent-ils mobiles : pendant une communication, un circuit
physique est tabli entre les deux correspondants, circuit constitu de plusieurs segments aux jonctions desquels se trouvent des quipements de commutation capable
dassocier une destination un numro.
Le rseau tlphonique automatique (dit commut ) est constitu de lignes
physiques qui rsolvent le problme de base et relient entre eux des quipements
terminaux (des tlphones xes ou portables, des modems, des fax...) et des quipements de transmission de donnes, qui sont essentiellement des auto-commutateurs.
Quand vous composez un numro de tlphone vous utilisez une ligne (de cuivre pour
un tlphone xe, hertzienne pour un portable) qui vous met en relation avec lautocommutateur du secteur ; celui-ci peut identier la destination de votre appel daprs
le numro de votre correspondant et slectionner une ligne qui va soit atteindre directement votre correspondant dans le cas dun appel local, soit atteindre un autre
auto-commutateur qui va lui-mme slectionner une ligne propre acheminer votre
communication vers votre correspondant, qui aprs quelques tapes entendra sonner
son tlphone. Pendant toute la dure de votre conversation les dirents segments
de ligne qui auront t slectionns par les auto-commutateurs successifs seront rservs votre usage exclusif. Ils constitueront un circuit commut, et pour cette
raison le rseau tlphonique est quali de rseau commutation de circuits, ou
rseau commut tout court.
Si un des auto-commutateurs du circuit na plus de ligne libre au moment de
votre appel, celui-ci ne pourra pas tre tabli et une voix enregistre vous suggrera
de renouveler votre appel ultrieurement. Cette ncessit de rserver physiquement
un canal de communication de bout en bout pour une communication individuelle,
mme quand vous et votre interlocuteur marquez une pause dans la conversation,
est une limite du rseau tlphonique.

Couche 3, rseau

125

6.5.2 Commutation de paquets


Beaucoup de rseaux informatiques ont fonctionn en se contentant de la commutation de circuits, ce qui, soit dit en passant, revient se ramener des liaisons
de couche 2 : une fois le circuit tabli, on a lillusion dune liaison unique. Depuis la
n des annes 1960 une autre ide sest impose. Monopoliser un circuit physique
pour une seule communication semblait logique pour acheminer la voix lors dun
change tlphonique : cela correspondait au modle de taxation des compagnies
de tlphone, la voix exige pour tre transmise sans dformation le respect de la
cadence dmission des impulsions, ce que lon appelle lisochronie, lpoque la
transmission tait analogique, et le dbit prvisible et peu prs constant. Mais
pour la transmission de donnes limpratif disochronie est moins fort et lon peut
imaginer dautres solution.
Pour comprendre les rseaux dordinateurs il peut tre utile de les comparer
dautres types de rseaux : tlphonique, ferroviaire, lectrique, routier, de distribution deau ou de courrier postal. Tous ces rseaux ont des caractristiques communes ;
ds quils atteignent une certaine taille, lacheminement dun message (ou respectivement dune communication tlphonique, dun wagon de marchandises, dune
quantit dnergie lectrique, dune lettre...) pose des problmes ditinraire et de
vrication de bon acheminement. Il faut aussi optimiser lusage du rseau : chaque
wagon na pas sa propre locomotive du dpart larrive, mais il peut tre accroch
successivement dirents trains qui le rapprocheront de sa destination, ce que nous
appellerons du multiplexage (de messages ou de wagons).
Tentons une comparaison avec le rseau tlphonique : lorsque nous avons rsolu
le problme de base, faire communiquer deux quipements, nous avons lquivalent
dune paire de talkie-walkie. Cest un bon dbut, mais si nous pensons la faon
dont nous utilisons le tlphone, pour appeler par une procdure automatique un
abonn au Japon ou un portable en rase campagne, nous concevons quil faut bien
des quipements et des techniques pour passer du stade talky-walky un vrai
rseau complexe, ou de la couche 1 la couche 2 en loccurrence.

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

Commutation de paquets pure


Passons de la mtaphore ferroviaire la mtaphore routire. Soit une noce : la
famille et les dirents groupes dinvits doivent se rendre au village o ont lieu
la crmonie et le banquet. Ils y vont en voiture. Plusieurs groupes partent de la
mme ville, mais ils ne tiennent pas tous dans la mme voiture, alors ils voyagent
indpendamment. Tous ne prennent pas le mme itinraire, et les premiers partis
ne sont pas forcment les premiers arrivs. Certains ont tudi la carte et dtermin
un trajet jusquau village, mais dautres, plus insouciants, se ent aux panneaux
indicateurs quils observent au bord de la route ou aux carrefours au fur et mesure
de leur progression vers lobjectif, ce qui ne devrait pas les empcher darriver
bon port. Si la noce est trs nombreuse elle peut saturer lautoroute, auquel cas les
panneaux lumineux de type bouchon 5 km viendront avertir les attards quil
vaut mieux prendre litinraire de dlestage, ce qui leur permettra ventuellement
darriver avant les premiers partis.
larrive au village il a t convenu de former un cortge, ce qui suppose bien
sr un ordre protocolaire : dabord la voiture de la marie, puis celle du mari, suivi
de la belle-mre, etc. videmment les voitures narrivent pas dans le bon ordre, et
pour rester dle la tradition la marie arrivera la dernire, aussi faudra-t-il une
manuvre supplmentaire pour constituer le cortge dans le bon ordre, ce quaurait
vit un voyage par train spcial.
Le tableau que nous venons de dresser du dpart et du regroupement nal de la
noce gure assez dlement lacheminement dun message de bonne taille par lInternet conformment au protocole IP (Internet Protocol). Chaque voiture reprsente
un paquet, appel aussi datagramme IP, ce qui insiste sur son caractre autonome,
par opposition au paquet X25, sagement rang en le sur un circuit virtuel. Le cortge nuptial des voitures remises dans le bon ordre reprsente le message tel quil
doit parvenir destination. Comme chaque paquet est achemin indpendamment
des autres, par un itinraire ventuellement dirent, il ne sut pas pour savoir
comment lacheminer dun numro de circuit virtuel, donc chaque paquet doit comporter son adresse dorigine et son adresse de destination. Le protocole IP dnit un
format dadresse, et les organismes de coordination de lInternet en assurent lunicit
lchelle mondiale.
Aux nuds du rseau se trouvent non plus des concentrateurs X25, mais des
ordinateurs spcialiss qui remplissent un rle similaire, mme si sensiblement plus
complexe, appels routeurs. Fondamentalement, un routeur reoit un paquet par
une de ses lignes de communication, analyse son adresse de destination, consulte ses
tables de routage, et en dduit sur quelle ligne il doit rexpdier le paquet, ou sil
doit le rejeter.
premire vue, tout ceci semble moins rationnel et moins ecace que les circuits
virtuels de X25. Mais cest aussi considrablement plus souple, en ralit plus ecace
et plus simple, et nalement ce modle la emport.

6.5.3 Le protocole IP et lInternet


Le protocole IP correspond la couche 3 du modle OSI, la couche rseau. La
pile TCP/IP (comme une pile de couches... empiles) nobit pas strictement
la nomenclature du modle OSI : elle comporte une couche liaison de donnes qui

128

Rseaux

englobe les couches 1 et 2 de lOSI, la couche IP (rseau) correspond la couche 3


de lOSI, la couche TCP 8 (transport) correspond la couche 4 de lOSI. La couche
applications englobe tout ce qui relve des couches hautes de lOSI.
Larchitecture de TCP/IP peut tre vue sous langle suivant. partir dun message mis par un utilisateur, chaque couche en partant de la plus haute lui ajoute
des en-ttes qui contiennent les informations ncessaires son fonctionnement, ce
que montre la gure 6.5.
Entte
application

Donnes utilisateur

Segment TCP

Entte
Entte
transport (TCP) application

Donnes utilisateur

Entte
rseau (IP)

Entte
Entte
transport (TCP) application

Donnes utilisateur

Message de couche application


(courrier lectronique, p. ex)

Datagramme
(ou paquet) IP

Trame de couche liaison de donnes (Ethernet par exemple)


Entte
Entte
liaison (MAC) rseau (IP)

Entte
Entte
transport (TCP) application

Donnes utilisateur

Figure 6.5 : En-ttes des quatre couches de TCP/IP

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

routeur dun centre dinterconnexion

routeur dun centre dinterconnexion


routeur dun centre dinterconnexion

vers dautres FAI

routeur du fournisseur daccs

routeur du fournisseur daccs

vers dautres rseaux locaux


vers routeur
dun client
routeur

vers routeur
dun client

vers dautres rseaux locaux

routeur Un rseau local


dans un
btiment

Un rseau local
sur un
campus

Figure 6.6 : Topographie de principe de lInternet

lien vers le rseau du FAI


(fournisseur daccs)

171.64.68.22

routeur vers lInternet


192.168.2.1

192.168.2.105

192.168.2.103

192.168.2.101

192.168.2.104

192.168.2.102

Figure 6.7 : Un rseau local simple

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

plusieurs interfaces, et donc plusieurs adresses). Il existe trois classes de rseaux,


distingues par le nombre de bits rservs ladresse de rseau et ladresse locale
respectivement. Ce partage de lespace adresse en classes ne sest pas avr trs
judicieux avec la monte de la pnurie mondiale dadresses et il est partiellement
abandonn aujourdhui. IPv6 ore plus de souplesse dans la gestion des adresses,
en tenant compte de phnomnes inconnus lors de la spcication dIPv4, comme le
rle des fournisseurs daccs lInternet (FAI), la mobilit et le nomadisme.
crire un nombre binaire de 32 chires est malcommode ; pour reprsenter une
adresse IP on utilise la convention suivante : elle est dcoupe en quatre nombres
de huit bits (octets), et on crit ces nombres en notation dcimale, spars les uns
des autres par un point. Voici une adresse reprsente de la sorte : 171.64.68.20.
Pour prciser la forme des adresses IPv4 donne lalina prcdent, le RFC 791
distingue des adresses de classe A, avec le premier bit 0, 7 bits pour ladresse de
rseau (le premier octet est un nombre infrieur 128) et 24 bits pour ladresse locale
(interface dun nud) ; des adresses de classe B avec le premier bit 1, le deuxime
bit zro (le premier octet est un nombre compris entre 128 et 191 inclus), 14 bits
pour ladresse de rseau et 16 bits pour ladresse locale ; les adresses de classe C avec
les deux premiers bits 1 et le troisime bit 0 (le premier octet est un nombre
suprieur 191 et infrieur 224), 21 bits pour ladresse de rseau et 8 bits pour
ladresse locale.
32 bits
longueur du paquet

vers.
identifiant
TTL

protocole
suprieur

flags

position du
fragment

somme de contrle

Adresse IP de lorigine du paquet


Adresse IP de la destination du paquet
Options ventuelles
Donnes, de longueur variable ;
normalement un segment TCP ou UDP

Figure 6.8 : Datagramme (ou paquet) IPv4

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

longueur des donnes

entte
nombre max.
de sauts
suivant (*)

Adresse IP de lorigine du paquet


(128 bits)

Adresse IP de la destination du paquet


(128 bits)

Donnes, de longueur variable ;


normalement un segment TCP ou UDP

(*) Le champ entte suivant permet didentifier


le protocole de couche suprieure pour les
donnes.

Figure 6.9 : Datagramme (ou paquet) IPv6

de ladresse IPv6 sont calculs partir de ladresse de couche 2 (MAC) lorsquil y


en a une.

6.5.4 Exception lunicit des adresses : traduction dadresses


(NAT)
Le principe du standard tlphonique dhtel
Le systme de traduction dadresses 10 NAT (Network Address Translation) est
apparu en 1994 dans le RFC 1631 [26] (remplac maintenant par le 3022 [71]),
initialement pour permettre la communication entre lInternet et des rseaux privs
contenant des adresses IP non conformes au plan dadressage de lInternet, et il a
t ensuite trs largement utilis pour pallier le dcit dadresses IP engendr par
ltroitesse de la plage dadresses de la version 4 du protocole. Il est devenu de ce
fait la fois une solution et un problme de scurit des rseaux.
Le principe en est le suivant : chaque nud de lInternet doit possder une
adresse IP pour mettre en uvre le protocole TCP/IP, et cette adresse doit tre
unique, comme pour les numros de tlphone, sinon il serait impossible dacheminer
correctement les communications.
Mais, pour poursuivre la comparaison avec le tlphone, dans un htel par
exemple, seul le standard a un numro de tlphone unique, et le poste de chaque
10. Incidemment, langlais translation se traduit ici en franais par traduction, translation
dadresse ne veut rien dire et celui qui employe cette locution prouve simplement quil ne connat
ni langlais ni le franais et quen outre il ne sait pas de quoi il parle.

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.

La traduction dadresse statique est simple, mais dans lunivers de la n des


annes 1990 la pnurie des adresses IP (la version 4 du protocole IP comporte des
adresses sur 32 chires binaires, ce qui autorise un maximum de 4 294 967 295
adresses uniques, mais en fait un peu moins compte tenu des contraintes sur la
structure de ces adresses) a conduit vers dautres ralisations, notamment la traduction dadresses dite dynamique, et plus particulirement vers une de ces mthodes
dynamiques, dite IP masquerading (masquage dadresse IP), aujourdhui prdominante et que nous allons dcrire bivement (pour plus de dtails et de rfrences,

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.

6.5.5 Une solution, quelques problmes


premire vue, NAT est une solution de scurit : avec un tel procd et le
masquage dadresse IP, les adresses des nuds du rseau interne, qui sont en gnral
les postes de travail des utilisateurs, ne sont pas visibles de lextrieur, ils sont donc
hors datteinte de connexions tablies par des malfaisants, et de fait il ny a en
gnral aucune raison valable pour quune connexion soit tablie depuis lextrieur
vers un poste de travail individuel ; si tel devait tre le cas cela devrait tre fait
selon une mthode de traduction explicite, par exemple pour permettre la prise de
contrle distance dans un contexte dassistance technique ou dadministration du
systme (mise jour danti-virus, etc.).
Cette protection du rseau priv par NAT est relle et ne doit pas tre sousestime. Il convient cependant davoir conscience du fait quavec la version 6 du
protocole TCP/IP NAT va probablement disparatre, au moins sous sa forme actuelle, et avec lui les politiques de scurit qui reposeraient trop exclusivement sur
ses caractristiques contingentes.
NAT pose des problmes aux protocoles qui transportent des adresses IP et des
numros de port dans la partie donnes de leurs paquets. De tels protocoles
sont dits sales , parce quils ne respectent pas le modle dabstraction en couches,
et quils transportent de linformation de niveau protocolaire (adresses) sous forme
de donnes quelconques. Le type mme du protocole sale est H323, utilis pour la
tlphonie sur IP et la visio-confrence.
NAT pose aussi des problmes IPSec, parce que NAT modie les adresses et
les numros de ports, donc modie les paquets, ce qui, du moins en IPv4, oblige
recalculer la somme de contrle qui y gure (IPv6 supprime cette contrainte).
Dans un rseau qui met en uvre NAT, le masquage dadresse IP et les adresses
non routables du RFC 1918 (cf. ci-dessus 6.5.4), ce qui est trs rpandu, notamment
avec les petits routeurs ADSL que chacun installe maintenant son domicile, les
adresses sont gnralement aectes de faon dynamique par un protocole conu
cet eet, DHCP (Dynamic Host Conguration Protocol). Ce protocole nest pas
exempt de critiques du point de vue de la scurit, notamment parce quil met des
diusions gnrales la cantonade sans que ce soit toujours ncessaire, et aussi parce
quil nest pas protg contre les usurpations didentit : je monte un serveur DHCP
pirate, jalloue aux clients nafs des adresses que je contrle, je fais croire au service
de noms local que les communications destination de ces adresses doivent mtre
envoyes, et ainsi jintercepte des communications qui ne me sont pas destines.

6.5.6 Traduction de noms en adresses : le DNS


Depuis quelques paragraphes nous parlons dexpdier des datagrammes des
adresses ici ou l, mais nous, utilisateurs de lInternet, comment connaissons-nous

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

(alias ftp ) (alias dns )

Figure 6.13 : Organisation en arbre des noms de domaine

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.

6.5.7 Mcanisme de la couche IP


Nous allons maintenant tudier la faon dont des datagrammes IP qui contribuent lacheminement dun message quelconque atteignent leur destination. Ce
transfert de donnes a pour origine un ordinateur raccord au rseau, videmment.
Le principe de la couche rseau IP consiste, chaque nud du rseau travers,
dterminer le prochain nud atteindre, et plus concrtement sur quelle interface
rseau mettre le datagramme. Sil ny a quune interface rseau active, la dcision
est trs simple, comme on peut limaginer. Par convention, la couche IP considre
aussi une interface dite locale , qui na pas dexistence physique et qui permet
un nud de satteindre lui-mme, cas trivial mais quil ne faut pas oublier de traiter.
Sur le nud metteur, le rle de la couche IP est le suivant :
recevoir un ux de bits de la couche TCP (transport) ; TCP dcoupe ce ux
en morceaux de taille raisonnable appels segments ;
mettre chaque segment dans un datagramme (ou exceptionnellement plusieurs) ;
dterminer linterface rseau approprie pour atteindre ladresse de destination ;
munir le datagramme dune en-tte qui comporte les informations ncessaires
son acheminement, cest--dire essentiellement, en ce qui relve de nos proccupations du moment, ladresse IP de linterface mettrice et ladresse IP
du destinataire ;
remettre le datagramme la couche liaison de donnes attache la bonne
interface, avec si nous sommes sur un rseau local la bonne adresse de couche
2 (MAC).
Eectuer ces oprations, et notamment les trois dernires, cest dterminer litinraire (en anglais route) que doit emprunter le datagramme, soit par extension de
langage eectuer le routage de ce datagramme.
Chaque station connecte un rseau IP possde une table de routage, qui
contient deux types dinformations : des adresses de rseaux et le moyen de les
atteindre. Pour une simple station feuille du rseau, le nombre de cas possibles
est limit :

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

attendons ce que la Poste franaise sache comment la faire parvenir la Poste


vnzulienne, qui elle saura trouver notre correspondante Caracas.
Le protocole global de communication de tables de routages dAS AS est BGP
(Border Gateway Protocol). Il y a plusieurs protocoles de routage dynamique au sein
dun AS ou dun rseau, celui qui tend aujourdhui tre le plus utilis est OSPF
(Open Shortest Path First), qui repose sur un algorithme de recherche de parcours
dans un graphe d Dijkstra en 1959 (encore lui ! inutile de dire qu cette poque
il ne souponnait pas lusage qui serait fait de son algorithme). OSPF et BGP ont
supplant dautres protocoles parce quils donnent de meilleurs rsultats, mais cette
supriorit est au prix dune complexit leve. Pour ceux de nos lecteurs qui ne
se destinent pas la profession dingnieur rseau, nous exposerons un protocole
plus simple et encore souvent utilis dans de petits rseaux, RIP (pour Routing
Information Protocol), qui repose sur lalgorithme de Bellman-Ford, imagin en 1957
par Richard Bellman et dot dune version distribue en 1962 par Lestor R. Ford
Jr et D. R. Fulkerson. Comme beaucoup dalgorithmes utiliss dans le monde des
rseaux, il est issu du domaine de la recherche oprationnelle, et appartient la
famille des algorithmes de calcul de chemin le plus court dans un graphe par une
mthode du type vecteur de distance , par opposition OSPF qui appartient
la famille des mthodes de calcul par ltat des liaisons .
Les mthodes de calcul de chemin le plus court dans un graphe par ltat
des liaisons comme OSPF imposent que chaque routeur possde dans ses tables la
topographie et la description de lensemble du domaine de routage, et que toute cette
information soit retransmise travers tout le domaine chaque fois quelle subit une
modication. En revanche avec les mthodes de calcul par vecteur de distance
comme RIP chaque routeur ne maintient que linformation qui le concerne lui-mme
et celle relative ses voisins immdiats. On conoit quOSPF ait attendu pour se
gnraliser une poque de dbits levs et de mmoire bon march, et que RIP ait
eu plus de succs dans la priode prcdente.
Le but dun algorithme de routage est de trouver le chemin le plus court entre
deux points dun graphe (respectivement dun rseau). En termes de rseaux informatiques, court ne dsigne pas vraiment une distance en termes de longueur,
mais plutt en termes de dbit de liaison et de nombre de nuds traverss ; une distance faible dsignera une liaison rapide avec peu de routeurs, une distance leve
une liaison lente ou qui traverse de nombreux routeurs.
Le principe de fonctionnement de RIP est le suivant : chaque routeur du rseau
propage sur toutes ses interfaces des vecteurs de distance, qui constituent en fait le
rsum de sa table de routage. Initialement (cest--dire la mise sous tension) un
routeur ne connat quun itinraire, celui qui mne lui-mme, avec une distance
nulle. Mais en propageant cette table de routage lmentaire il va permettre ses
voisins dapprendre son existence ; lui-mme apprendra de la mme faon lexistence
de ses voisins, et des voisins de ses voisins ; ainsi au fur et mesure les tables de
routage des uns et des autres senrichiront. Ce que nous dmontrent MM. Bellman,
Ford et Fulkerson, cest que cet algorithme converge, cest dire qu lissue dun
certain nombre dchanges de tables de routage le systme constitu par ce rseau
de routeurs atteindra un tat stable, o lenvoi de nouvelles informations de routage
ne provoquera plus aucune modication des tables.

Couche 3, rseau

147

Un routeur est capable de tester ses interfaces, et notamment de dtecter la


prsence ou labsence dune interface qui rpond lautre extrmit. En cas de
coupure inopine dune liaison, les routeurs concerns la dtectent, recalculent leurs
tables de routage en aectant une distance innie la destination prcdemment
atteinte par la liaison coupe, et lalgorithme de propagation est excut nouveau,
jusqu lobtention dun nouvel tat stable.
Le lecteur curieux de ces questions consultera avec prot le livre de Christian
Huitema Routing in the Internet [35], qui lui donnera une description complte
des problmes de routage et de leurs solutions. La section ci-dessous en donne un
aperu.
Calcul des tables de routage
Nous raisonnerons sur un rseau trs simple cinq nuds (cinq routeurs) tel
que reprsent par la gure 6.14. Notre exercice de routage doit beaucoup au livre
de Christian Huitema Routing in the Internet [35], qui donnera au lecteur qui le
souhaite une description complte des problmes de routage et de leurs solutions.

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

Lors de son initialisation A ne possde dans sa table de routage quun itinraire


vers lui-mme par linterface locale, avec une distance nulle. On suppose quun
routeur connat sa propre adresse et ses interfaces actives, mais au dmarrage il
ignore ce quil y a derrire les interfaces. Le vecteur de distance de A, cet instant,
est trs simple :

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

Comme B vient denrichir sa table de routage, il va mettre son propre vecteur


de distance destination de ses voisins A, C et D par les liaisons 1, 2 et 4 :
B=0, A=1
Pendant ce temps E aura reu le message de A, aura eectu les mmes
oprations de mise jour de sa table de routage (mutatis mutandis) et transmettra
son vecteur de distance A et D sur les liaisons 3 et 6 :
E=0, A=1
Supposons que A reoive le message de B avant celui de E ; il ajoute 1 toutes
les distances, qui deviennent donc B=1, A=2 et les compare celles qui gurent
dans sa table. Comme la distance A=2 est suprieure celle qui gure dj dans
la table, il ninsre que linformation relative B, puis il reoit le message de E,
eectue les mmes calculs et sa table devient :
de A vers
A
B
E

liaison
locale
1
3

distance
0
1
1

C reoit par la liaison 2 le message B=0, A=1 ; toujours selon le mme


algorithme il ajoute 1 toutes les distances et met jour sa table qui devient :
de C vers
C
B
A

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

A, C et D ont donc de nouvelles tables de routage, ils vont en dduire de


nouveaux vecteurs de distance quils vont diuser leurs voisins. De ce fait B,
D et E vont mettre jour leurs tables de routage et diuser de nouveaux vecteurs
qui vont provoquer des mises jour des tables de A, C et E. Nous invitons le
lecteur eectuer ces calculs titre dexercice dlassant, et constater qu lissue
de ces oprations le systme a atteint un tat stable, cest--dire que lenvoi des
nouveaux vecteurs de distance rsultant de la dernire mise jour ne provoquera
aucune modication des tables de routage : on dit que lalgorithme a converg.
Reconguration en cas de coupure de liaison
Un des avantages attendus du routage dynamique, cest que le rseau soit capable
de se recongurer automatiquement en cas de modication inopine de sa topologie.
Supposons donc que la pelleteuse traditionnelle et canonique coupe soudain la liaison
1, avec pour rsultat la topologie reprsente par la gure 6.15.

B
2
4

C
5
D
Figure 6.15 : Rupture de liaison !

Les interfaces correspondantes des nuds concerns, A et B, vont dtecter


lincident ; A et B vont aecter la liaison 1 un cot inni () et mettre jour
leurs tables de routage en notant une distance innie pour toutes les destinations
atteintes par la liaison 1 :

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

A va calculer et mettre un nouveau vecteur de distance sur la liaison 3 :


A=0, B=, C=, D=, E=1
et B sur les liaisons 2 et 4 :
A=, B=0, C=1, D=1, E=
E va recevoir le message de A, C et D celui de B, et ils vont mettre leurs tables
jour en fonction des nouvelles distances :
de E vers
A
B
C
D
E

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

lissue de ces mises jour C, D et E vont mettre des vecteurs de distance :


C met : C=0, B=1, A=, D=1, E=2 sur les liaisons 2 et 5 ; D met :
D=0, B=1, A=, E=1, C=1 sur les liaisons 4, 5 et 6 ; E met : E=0, A=1,
B=, D=1, C=2 sur les liaisons 3 et 6.
qui vont leur tour dclencher les mises jour des tables de A, B, D et E :

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

qui vont nouveau mettre des vecteurs de distance :


A met : A=0, B=, C=3, D=2, E=1 sur la liaison 3 ; B met : A=,
B=0, C=1, D=1, E=2 sur les liaisons 2 et 4 ; D met : D=0, B=1, A=,
E=1, C=1 sur les liaisons 4, 5 et 6 ; E met : E=0, A=1, B=, D=1, C=2
sur les liaisons 3 et 6.
ce qui va dclencher la mise jour des tables de A, B et C :
de A vers
A
B
C
D
E
de B vers
A
B
C
D
E

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

Figure 6.16 : Avant le rebond

Dans de nombreux cas, RIP russit brillamment recongurer automatiquement


un rseau endommag et lui rendre sa connectivit. RIP doit aussi viter des piges,
comme celui tendu par la situation illustre par la gure 6.16, o lon voit, ltat
initial, un nud B qui accde au rseau R par lintermdiaire du nud A.
Supposons maintenant que la liaison 2 entre A et R soit coupe inopinment
(gure 6.17) : A connaissait un itinraire vers R par cette liaison 2, il ne peut plus
dsormais essayer de faire passer ses paquets que par la liaison 1 vers B, ce qui est
clairement sans espoir. Avec un algorithme trop naf, A peut envoyer ses paquets
B, qui dirait oui, je connais un excellent itinraire vers R, via A , et acheminerait
les paquets vers A, qui les renverrait vers B, et ainsi de suite... En fait, la convergence
de lalgorithme dpend de qui envoie son vecteur de distance le premier :
si A met son vecteur de distance avant que B ait pu le faire, linformation
de la coupure de la liaison 2 sera eectivement correctement propage ;
si B met son vecteur de distance entre linstant o A dtecte la coupure
de liaison et celui o A aurait eectivement d mettre le sien, par exemple
parce quil a reu une mise jour en provenance dun autre point du rseau, A
va accepter la vision de B et nous aurons une situation de boucle ou rebond.
Une telle situation ne peut tre vite que par une convention. chaque change
de vecteur de distance, la distance de A R crot de 2 par le mcanisme suivant :
lorsque A constate la rupture de liaison, il mentionne dans sa table de routage
une distance innie vers R ;

Couche 3, rseau

153

2
A

Figure 6.17 : Rebond !

si cet instant A reoit de B un vecteur qui indique pour R une distance 2,


il constate que cette valeur est infrieure celle contenue dans sa table, et
la met jour avec pour R la liaison 1 et la distance 2+1=3, puis diuse son
vecteur de distance ;
B reoit le vecteur de A et apprend que son itinraire vers R a maintenant
une distance de 3 : il lui ajoute 1 et diuse son vecteur avec la valeur 3+1=4...
Pendant tout ce temps, les paquets envoys de A ou de B vers R seront routs
de A B puis de B A et vice versa...
Pour viter ce processus de boucle innie, on xera une valeur leve qui sera
considre, par convention, gale linni, et quand la distance atteindra cette valeur
la destination sera rpute impossible atteindre. Dans ce contexte, linni pourra
tre x 32, par exemple. Les paquets seront aussi dots dun paramtre dure
de vie (TTL, Time to live), savoir un nombre maximum de nuds quils auront
le droit de traverser avant dtre purement et simplement abandonns.

6.5.8 Nouvelles tendances IP


Nous lavons dit, le protocole IP est entr dans une priode de transition de
la version 4 la version 6 (la version 5 na jamais t dploye). Compte tenu
du nombre considrable dinstallations concernes, cette transition sera longue et
les deux versions sont appeles cohabiter pendant des annes. Les routeurs du
cur de lInternet (les core routers) seront bien sr appels les premiers pouvoir
traiter simultanment les deux versions, ils le font dj dailleurs, cependant que la
migration des stations de travail de base nest pas vraiment urgente. Il existe un
RFC qui prcise comment encapsuler une adresse v4 au format v6.
IPv6, outre le nouveau format dadresses qui en est laspect le plus spectaculaire,
comporte dautres nouveauts qui vont donner des solutions techniquement correctes
des problmes que la version 4 rsout par des artices fragiles. Parmi les artices
employs par IPv4 pour faire face la pnurie dadresses, nous avons cit CIDR
(Classless Interdomain Routing) et NAT (Network Address Translation). Le nouvel
espace dadressage oert par les 128 bits de ladresse IPv6 mettra un terme ces
acrobaties, et de toute faon lancienne notion de classe disparat.
IPv6 introduit galement de nouveaux protocoles de scurit dsigns collectivement par le terme IPSec. En fait IPSec intervient au niveau de la couche transport
(TCP), mais IPv6 le rend obligatoire, cependant que des adaptations permettent de
lintroduire avec IPv4. IPSec dnit en gros deux classes de services, une destine
lauthentication des parties, lautre au chirement.

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.

6.6 Couche 4, transport


La couche transport a le numro 4 dans le modle OSI ; elle est la troisime
couche de TCP/IP. Nous nous intresserons essentiellement TCP/IP, qui en fait
propose le choix entre deux modles de transport : UDP (User Datagram Protocol),
protocole simple non able sans tat, et TCP (Transmission Control Protocol).

6.6.1 TCP (Transmission Control Protocol)


Le protocole de transport TCP (couche 4 du modle OSI) fournit aux protocoles
de niveau application (HTTP comme HyperText Transfer Protocol pour le WWW,
SMTP comme Simple Mail Transfer Protocol pour le courrier lectronique, H323
pour la visioconfrence, etc.) un ux de bits able de bout en bout au-dessus de la
couche IP.
Pour obtenir ce rsultat, TCP est un protocole en mode connect, par opposition
IP qui est un protocole sans connexion, cest--dire que tous les segments TCP
qui correspondent au mme change de donnes sont identis comme appartenant
une mme connexion.
Connexion
TCP dcoupe les messages qui lui sont remis par les protocoles de la couche
application en segments. Chaque segment sera ensuite remis la couche rseau
(IP) pour tre inclus dans un datagramme IP. La taille dun segment est donc
calcule de faon ce quil puisse tenir dans un datagramme, cest--dire que la taille
maximum dun segment est gale la taille maximum dun datagramme diminue
de la longueur des en-ttes de datagramme.
Une connexion est totalement identie par ses adresses dorigine et de destination (inscrites dans les en-ttes de ses datagrammes IP) et par ses numros de
ports 14 dorigine et de destination, qui sont inscrits dans les en-ttes de ses seg14. Le terme port ne doit pas suggrer une mtaphore portuaire : il sagit en fait dun numro
conventionnel, qui identie ventuellement un protocole de niveau application, ainsi port 25 pour

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

(*) UAPRSF : champs de 6 bits de contrle :


URG ACK PSH RST SYN FIN

Figure 6.18 : Segment TCP

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

Poigne de main en trois tapes (three-way handshake)


Avant tout transfert de donnes, TCP ouvre donc une connexion, ce qui se passe
selon la procdure suivante appele poigne de main en trois tapes (three-way handshake) (voir gure 6.19) :
Client
SYN positionn, port dest. = 80
sq. = n

port orig. = xyz

Serveur
(WWW par
exemple)

SYN et ACK positionns


sq. = n + 1

port dest. = xyz


port orig. = 80

ACK positionn, port dest. = 80


sq. = n + 2

port orig. = xyz

Figure 6.19 : Poigne de mains en trois temps

1. Le nud lorigine de la demande de communication (appel communment


le client) met un segment TCP avec le bit SYN positionn, le numro de
port du serveur avec lequel le client veut communiquer dans le champ port
de destination de len-tte de segment, un numro de port arbitraire dans
le champ port dorigine, les adresses dorigine et de destination convenables
dans len-tte de datagramme. Le numro de squence est galement initialis
dans len-tte de segment.
2. Le serveur rpond en acquittant ce message au moyen dun segment dont le bit
SYN est lui aussi positionn, le bit ACK positionn galement, les numros de
ports et adresses dorigine et de destination logiquement inverss par rapport
au segment du client.
3. Le client acquitte lui-mme ce message en renvoyant un segment avec le bit
ACK positionn. lissue de cet change en trois temps, client et serveur sont
rputs stre mis daccord sur les numros de ports ncessaires ltablissement de la connexion.
Contrle de ux et vitement de congestion
TCP est un protocole able de bout en bout au-dessus dune couche rseau non
able, cest--dire quil assure entre les deux stations qui communiquent en dernire

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 ?

6.6.2 UDP (User Datagram Protocol)


Nous ne dirons que peu de mots dUDP, qui est un protocole beaucoup plus
simple que TCP. Il fournit au-dessus dIP un protocole de transport non able,
sans connexion et sans tat. UDP se contente de construire un datagramme dot,
comme les segments TCP, dun numro de port dorigine et dun numro de port
de destination, et de lencapsuler dans un datagramme IP. UDP convient bien
lenvoi de messages brefs et isols ; cela dit, il est gnralement considr comme
un protocole dangereux, nutiliser quen toute connaissance de cause. Notamment,
dans un mode sans connexion, il nest pas possible de vrier lappartenance dun
paquet une connexion lgitime.
De faon gnrale, les protocoles sans tat sont des trous de scurit. Cest spcialement le cas des protocoles de niveau application destins au partage de chiers
en rseau, que ce soit NFS pour Unix, Netbios pour Windows-xx, Appleshare pour
MacOS. Il est relativement facile dintroduire des paquets parasites dans un change
de messages tabli avec ces protocoles, et ils sont particulirement dangereux parce
quils excutent des programmes distance par le protocole RPC (Remote Procedure

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.

6.7 Les tlphonistes contre-attaquent : ATM


La controverse entre les rseaux commutation de circuits virtuels comme X25
et les rseaux commutation de paquets pure comme TCP/IP a anim la dcennie 1980. Les tenants de la premire technique, ainsi quil a t signal ci-dessus,
taient les oprateurs tlphoniques traditionnels, qui y voyaient un moyen de prserver leur mthode de facturation du transport de donnes au volume, cependant
que les constructeurs de rseaux informatiques en ressentaient les lourdeurs qui se
rpercutaient en rigidits insupportables. LInternet et TCP/IP ont ni par lemporter grce la facilit de dploiement que leur confraient la commutation de paquets
associe aux protocoles de routage dynamique.
Les annes 1990 ont vu une contre-attaque de grande envergure des tlphonistes
sous les espces dATM (Asychronous Transfer Mode). ATM ressuscite la commutation de circuits selon un protocole conu par un centre de recherche de France
Tlcom, normalis par lUIT (Union Internationale des Tlcommunications) et
implment avec des moyens considrables.
Comme X25, larchitecture ATM comporte des aspects qui relvent de couches
direntes du modle OSI :
couche 2 : format des donnes transmises au support physique, dont les diffrentes varits sont spcies dans le protocole ;
couche 3 : tablissement dun circuit virtuel, qui xe le ou les itinraires
possibles de bout en bout ;
couche 4 : contrle de ux de bout en bout.
Cette confusion des couches nuit ladoption dun protocole. Une des cls du
succs de TCP/IP, cest que les protocoles de couche 3 et 4 (IP, TCP, UDP...) sont
totalement indpendants du support physique et de la couche de liaison de donnes
sous-jacents. Avec X25 ou ATM, vous ne choisissez pas seulement un protocole,
mais aussi une technologie de rseau, et en n de compte un fournisseur de services
rseau, ctait dailleurs le but poursuivi, il aurait peut-tre t atteint en situation
de monopole fort des tlphonistes, mais aujourdhui ATM est globalement un chec
mme si certains oprateurs tlcom lutilisent encore dans leurs rseaux internes.
ATM fournit un service non able et connect de transmission de datagrammes
sur un circuit virtuel. Le terme datagramme signie que le ux de bits transmis par
le protocole est dcoup en paquets achemins indpendamment les uns des autres.
Par non able nous entendons que le protocole ne fournit aucune garantie de remise
des datagrammes ni aucun contrle derreur. Le caractre connect dATM est en
fait discutable : certes il y a tablissement de circuit virtuel, mais le protocole ne
maintient aucune information dtat sur une transmission de donnes en cours.
Les datagrammes dATM sappellent des cellules et ont une taille xe de 48
octets de donnes (oui, cest minuscule) auxquels sajoutent 5 octets dinformation
de contrle, dont un numro de chemin virtuel sur 12 bits et un numro de circuit
virtuel sur 16 bits, soit 53 octets au total.
La conjonction du mode non able et du circuit virtuel peut sembler paradoxale :
X25 tait able et connect. En fait le circuit virtuel a deux rles : viter de placer

Clientserveur ou pair pair (peer to peer) ?

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.

6.8 Clientserveur ou pair pair (peer to peer) ?


Tous les usages du rseau que nous avons voqus jusquici reposent plus ou
moins explicitement sur le modle client-serveur : un navigateur WWW (le client)
demande une page un serveur WWW, un logiciel de messagerie (le client) relve
sa bote lettres sur un serveur par le protocole POP (Post Oce Protocol), etc.
Ce modle a de nombreux usages fort utiles, mais il ne saurait prtendre luniversalit et il donne une vision restreinte des possibilits du rseau. En concentrant
une grande partie du trac sur des nuds spcialiss, les serveurs, il cre une absence
de uidit et un risque de congestion. On peut imaginer un autre modle o chaque
nud serait connect, plus ou moins virtuellement, tous les autres. Si un tel modle
tait inimaginable il y a vingt ans pour des raisons techniques, la croissance continue
des dbits des rseaux, des tailles mmoire et des puissances de calcul disponibles
permet dimaginer que chaque ordinateur personnel au domicile de chacun devienne
la fois serveur et client. Je peux ainsi hberger mon propre site WWW sur ma
machine, avec mes photos de vacances et mes articles. Mon fournisseur daccs
lInternet ne me donne pas dadresse IP xe ? Qu cela ne tienne, des bienfaiteurs
de lhumanit comme dyndns.org fournissent (et gratuitement de surcrot) un service de noms de domaines dynamiques qui ajuste priodiquement ladresse IP qui
correspond mon nom de domaine moi, ce qui permet mes clients datteindre
mon site tout moment.
Ce qui est dcrit ci-dessus est encore trop artisanal : il faut publier des services
an que chacun puisse y accder sans avoir connatre leur localisation a priori.
Cest le pas franchi par des protocoles comme Napster ou Gnutella, auxquels chacun
peut sabonner, et devenir serveur mme son insu (ce qui na pas forcment que
des avantages, par exemple lorsque le serveur en question abrite des donnes que la
loi interdit de divulguer parce quelles sont protges par le droit dauteur ou tout
simplement interdites). Linformation sur les services disponibles circule de proche
en proche.

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.

6.9 Versatilit des protocoles pair pair


6.9.1 Dnition et usage du pair pair
Un grand coup de hache sur le modle client-serveur est venu des protocoles peer
to peer (souvent abrgs en P2P), ce que Wikipedia propose de traduire en franais
pas pair pair et dcrit ainsi :
P2P dsigne un modle de rseau informatique dont les lments (les nuds)
ne jouent pas exclusivement les rles de client ou de serveur mais fonctionnent des
deux faons, en tant la fois clients et serveurs des autres nuds de ces rseaux,
contrairement aux systmes de type client-serveur, au sens habituel du terme.
...
Les rseaux P2P permettent de communiquer et de partager facilement de
linformation - des chiers le plus souvent, mais galement des calculs, du contenu
multimdia en continu (streaming), etc. sur Internet. Les technologies P2P se sont
dailleurs montres si ecaces que le P2P est considr par certains comme ltape
ultime de la libert et de la dmocratie sur Internet. Sans aller jusque l, on
considre souvent que le P2P porte (et est port par) une philosophie de partage et
un profond esprit communautaire.
Pour une prsentation des volutions rcentes on pourra consulter la communication de Franck Cappello aux journes JRES 2005 [14].
Ces protocoles pair pair sont utiliss massivement par les internautes quips
dune connexion heut dbit pour changer des chiers aux contenus musicaux ou
cinmatographiques, au titre de ce que le droit franais nomme la copie prive, et le
droit amricain fair use.
Les industries du disque et du cinma ntaient pas prpares cette extension
de la copie prive, laquelle elles ont ragi principalement par le recours la loi. Les
premiers protocoles P2P, tel Napster, comportaient un serveur central qui recueillait
et distribuait les adresses des participants, ce qui a permis aux industriels dengager
contre le propritaire de ce serveur des actions en justice et dobtenir sa fermeture.
Instruit par cette exprience, les protocoles pair pair contemporains, tels KaZaA, Skype ou eMule, ne comportent pas de serveur central, ce qui oblige les entreprises qui souhaiteraient poursuivre leurs utilisateurs les identier un par un.

Versatilit des protocoles pair pair

161

6.9.2 Problmes rsoudre par le pair pair


Les nuds des systmes pair pair, quasiment par dnition, sont des ordinateurs situs la priphrie de lInternet, et qui sont le plus souvent soit des machines
personnelles dans un domicile priv, soit des postes de travail individuels au sein
dune entreprise qui na pas vraiment prvu quils soient utiliss pour du pair pair,
voire qui essaye de linterdire. Les consquences techniques de cette situation sont
les suivantes :
les ordinateurs concerns sont souvent teints ;
ils nont souvent pas dadresse IP permanente ;
voire pas dadresse routable (adresses dites NAT (Network Address Translation) ).
Il faudra malgr ce contexte damateurisme que tous les nuds puissent tre
la fois clients et serveurs, quils puissent communiquer directement deux deux,
et que chacun en fonction de ses capacits contribue au fonctionnement gnral de
linfrastructure. Il faut quun nud qui rejoint le rseau puisse dcouvrir ceux qui
orent les ressources qui lintressent, selon le schma de la gure 6.20.

Figure 6.20 : Un poste client tente de rejoindre une communaut de pairs.

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.

2. un protocole rseau pour ltablissement des connexions et lexcution des


oprations de transport de donnes ; un lment crucial de ce protocole sera
bien sr son aptitude au franchissement de coup-feu, comme indiqu par la
gure 6.22 ; en eet la communication pair pair serait impossible dans le
respect des rgles de ltrage quimposent la plupart des rseaux, notamment
en entreprise ;

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.

3. un systme de publication de services et dannonces de ressources disponibles,


qui permet chacun de contribuer luvre commune ;
4. un systme, symtrique du prcdent, de recherche de ressources, qui permet
de trouver ce que lon cherche, tel morceau de musique ou tel lm, ou le chemin
daccs tel tlphone rseau.

Chapitre 7 Protection et scurit

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

Un objet a un propritaire identi, gnralement lutilisateur qui la cr.


Un objet est, sous rserve dinventaire, soit un chier, soit un processus, soit
des structures de donnes phmres cres en mmoire par un processus,
mais nous avons vu la section 5.4 que pour Multics tous ces objets sont en
n de compte des segments ou sont contenus dans des segments de mmoire
virtuelle.
Le propritaire dun objet peut avoir confr lui-mme et dautres utilisateurs des droits daccs cet objet. Les types de droits possibles sont en
gnral les suivants (on peut en imaginer dautres) :
droit daccs en consultation (lecture) ;
droit daccs en modication (criture, destruction, cration) ;
droit daccs en excution ; pour un programme excutable la signication
de ce droit est vidente ; pour un rpertoire de chiers ce droit confre
ceux qui le possdent la facult dexcuter une commande ou un programme qui consulte ce rpertoire ;
droit de blocage, par exemple pour un processus en cours dexcution ou
ligible pour lexcution.
chaque objet est donc associe une liste de contrle daccs (access control
list) qui numre les utilisateurs autoriss et leurs droits.
Avant toute tentative daccs un objet par un utilisateur, lidentit de cet
utilisateur doit tre authentie.
Pour quun utilisateur ait le droit dexcuter une action sur un objet, et
dans un systme informatique cette action est perptre par lentremise dun
processus, il faut en outre que le processus en question possde le pouvoir
voulu. Le pouvoir est un attribut dun processus, il peut prendre des valeurs
qui confrent ce processus des privilges plus ou moins tendus. Jusqu
prsent nous navons rencontr que deux valeurs possibles de pouvoir : le
mode superviseur et le mode utilisateur, mais nous allons voir que certains
systmes ont ran la hirarchie des valeurs de pouvoir.
La valeur du pouvoir dun processus peut changer au cours de son excution.
Ainsi un processus qui se droule dans un mode utilisateur peut faire une demande dentre-sortie, ce qui ncessite le mode superviseur. Ceci sera rsolu,
sous Unix par exemple, par le mcanisme de lappel systme, qui transfre le
contrle, pour le compte du processus utilisateur, une procdure du noyau
qui va travailler en mode superviseur.
Nous dnirons la notion de domaine de protection dans lequel sexcute
un processus comme lensemble des objets auxquels ce processus a accs et
des oprations quil a le droit deectuer sur ces objets. Lorsquun processus
change de valeur de pouvoir, il change par l mme de domaine de protection.
Les dispositifs et procdures de protection du systme dexploitation vont consister faire respecter les rgles qui dcoulent des droits et pouvoirs numrs ci-dessus
et empcher leur violation. La protection au sens o nous allons ltudier dans ce
chapitre ne consiste pas empcher les erreurs humaines, les dfaillances techniques
ou les actes de malveillance qui pourraient faire subir un objet un sort non dsir,
mais seulement empcher leur incidence sur les objets en question. Il faut protger
les donnes et les processus dun utilisateur contre les processus des autres utilisa-

Protection

165

teurs, protger le fonctionnement du systme contre les processus des utilisateurs et


vice-versa, enn protger lun de lautre les processus dun mme utilisateur.
La qualit des dispositifs et procdures de protection fait la sret dun systme
dexploitation. On conoit notamment aisment que le contrle des droits et des
pouvoirs doive tre labri des manipulations dutilisateurs dsireux sans lgitimit
daccrotre leurs privilges, ce qui signie que les procdures de contrle doivent
sexcuter avec le mode de pouvoir le plus grand et les droits les plus tendus,
inaccessibles aux simples utilisateurs. Cette rexion de simple bon sens sut
refuser le qualicatif sr tel systme dexploitation qui comporte un systme
perfectionn de listes daccs ralis... en mode utilisateur, et pour lequel de surcrot
lidentication des utilisateurs est facultative.
En eet, il va sans dire, mais disons-le : il ne sert rien de contrler les droits et les
pouvoirs du propritaire dun processus si dj son identit nest pas raisonnablement
certaine. Les procdures didentication et dauthentication des utilisateurs sont un
pralable toute stratgie de protection.

7.1.1 Un parangon de protection : Multics


Dans le domaine de la protection, lapproche mise en uvre par le systme
Multics ds les annes 1960 fait encore aujourdhui gure de rfrence exemplaire.
Nous allons la dcrire.
De mme que les auteurs de Multics avaient accompli une perce conceptuelle
considrable et qui reste aujourdhui poursuivre en runissant les objets de mmoire
et les chiers dans un concept unique de segment, ils ont aussi imagin pour la
protection une approche et des concepts originaux et puissants que les systmes
daujourdhui redcouvrent lentement.
Les dispositifs de protection de Multics
Nous dcrirons les dispositifs et procdures mis en uvre dans Multics pour
assurer la protection des objets parce que, bien quanciens, ils restent ce jour de
lan 2013 une ralisation de rfrence. Cette description doit beaucoup celles de
louvrage collectif de Crocus [19], Systmes dexploitation des ordinateurs et du livre
de Silberschatz et ses collgues [68] Principes appliqus des systmes dexploitation.
La protection sous Multics repose sur une structure dite en anneaux . Chaque
processus sexcute dans un anneau, chaque anneau correspond un niveau de privilges. Multics ore huit anneaux numrots de 0 7, lanneau 0 procure les privilges
les plus levs, lanneau 7 les moins levs. Lanneau du processus courant gure dans
le mot dtat de programme (PSW, cf. section 2.5).
Chaque segment (de mmoire volatile ou persistante), pour chaque type daccs
(lecture, criture, excution si le segment contient un programme ou un rpertoire),
appartient un anneau. Si un processus sexcute dans un anneau de valeur infrieure ou gale lanneau dexcution dun segment, par exemple, il peut excuter
le programme contenu dans ce segment, sinon non.
tout moment un processus peut changer danneau, sous le contrle du systme
dexploitation videmment, et ainsi acqurir de faon temporaire ou dnitive des
privilges suprieurs qui lui ouvriront laccs de nouveaux segments.

166

Protection et scurit

Pouvoir croissant
1

7
Anneaux

Parenthse dcriture

Parenthse de lecture

Figure 7.1 : Protection en anneaux sous Multics

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

la disponibilit des systmes et des donnes, destruction de donnes, corruption


ou falsication de donnes, vol ou espionnage de donnes, usage illicite dun systme
ou dun rseau, usage dun systme compromis pour attaquer dautres cibles.
Les menaces engendrent des risques : perte de condentialit de donnes sensibles, indisponibilit des infrastructures et des donnes, dommages pour le patrimoine scientique et la notorit, cots humains et nanciers. Les risques peuvent
se raliser si les systmes menacs prsentent des vulnrabilits.

7.2.2 Principes de scurit


La rsorption des vulnrabilits repose sur un certain nombre de principes et de
mthodes que nous allons numrer dans la prsente section avant de les dcrire plus
en dtail.
Inutile de se proccuper de scurit sans avoir dni ce qui tait protger :
en dautres termes une organisation quelconque dsireuse de protger ses systmes
et ses rseaux doit dterminer son primtre de scurit, qui dlimite lintrieur et
lextrieur. Une fois x ce primtre, il faut aussi laborer une politique de scurit,
en dautres termes dcider ce qui est autoris et ce qui est interdit. cette politique
viennent bien sr sajouter les lois et les rglements en vigueur, qui simposent
tous. Et il faut bien sr prendre en considration la gnralisation des ordinateurs
portables, smartphones et autres tablettes, qui rendent le primtre de scurit trs
poreux.
Ceci fait, il sera nanmoins possible de mettre en place les solutions techniques
appropries la dfense du primtre selon la politique choisie. Mais dj il est
patent que les dispositifs techniques ne pourront pas rsoudre tous les problmes de
scurit.
Les systmes et les rseaux comportent des donnes et des programmes que nous
considrerons comme des ressources. Certaines ressources sont daccs public, comme
par exemple un serveur WWW, dautres sont prives pour une personne, comme
une bote lettres lectronique, dautres sont prives pour un groupe de personnes,
comme lannuaire tlphonique interne dune entreprise. Ce caractre plus ou moins
public dune ressource doit tre traduit dans le systme sous forme de droits daccs,
comme nous lavons vu au dbut de ce chapitre.
Les personnes qui accdent une ressource non publique doivent tre identies ;
leur identit doit tre authentie ; leurs droits daccs doivent tre vris : ces
trois actions correspond un premier domaine des techniques de scurit, les mthodes
dauthentication, de signature, de vrication de lintgrit des donnes objet
et dattribution de droits.
La scurit des accs par le rseau une ressource protge nest pas susamment
garantie par la seule identication de leurs auteurs. Sur un rseau local de type
Ethernet o la couche de liaison de donnes fonctionne en diusion il est possible
un tiers de capter la transmission de donnes. Si la transmission a lieu travers
lInternet, les donnes circulent de faon analogue une carte postale, cest--dire
quau moins le facteur et la concierge y ont accs. Ds lors que les donnes doivent
tre protge, il faut faire appel aux techniques dun second domaine de la scurit
informatique : le chirement.
Authentication et chirement sont indissociables : chirer sans authentier ne
protge pas des usurpations didentit (lattaque dite de type man in the middle),

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

indices au cryptanalyste. La connaissance simultane dun texte clair et de sa version


chire, comme dans le cas de Champollion et de la pierre de Rosette, est bien sr
une aubaine pour le dcodeur, comme loccurrence de noms propres etc.
Linvention de lordinateur a bien sr donn un essor considrable la cryptographie et la cryptanalyse. Ce nest dailleurs pas un hasard si le crateur du
modle thorique de lordinateur, Turing, a t aussi pendant la guerre un formidable
concepteur de machines dchirer les codes allemands chirs par les automates
Enigma. Les machines de Turing, appeles Bombes , taient fondes sur une ralisation originale du logicien polonais Marian Rejewski. La courbe qui trace le succs
des attaques de sous-marins allemands contre les convois transatlantiques qui acheminaient les fournitures amricaines la Grande-Bretagne subit des uctuations
importantes qui correspondent au dlai lissue duquel lquipe dAlan Turing
Bletchley Park parvenait dchirer plus ou moins parfaitement le code allemand
aprs un changement de combinaison des Enigma. Lorsque lon sait limportance
militaire quont eue ces fournitures, on ne saurait sous-estimer la contribution de
Turing la victoire allie.
Le premier systme de chirement informatique normalis fut cr par un Allemand migr aux tats-Unis en 1934, Horst Feistel. Sa nationalit et son mtier
de cryptographe lui valurent quelques dicults avec la National Security Agency
(NSA), dsireuse avant tout de garder la matrise des moyens de chirement et de
pouvoir percer les codes utiliss par des personnes prives. Finalement il mit ses
comptences au service dIBM, pour qui il dveloppa au dbut des annes 1970 le
cryptosystme Lucifer, base du futur Data Encryption Standard (DES).
Le DES repose sur les principes suivants : le texte clair est cod en numration
binaire et dcoup en blocs de 64 bits. Chaque bloc est dcoup en demi-blocs dont
les bits subissent des permutations complexes, puis les demi-blocs sont additionns
et soumis dautres transformations. Lopration est recommence seize fois. La
fonction de transformation comporte des variations en fonction de la cl, qui est un
nombre arbitraire choisi par les utilisateurs du code. Le nombre de valeurs possibles
pour la cl dtermine le nombre de faons direntes dont un message peut tre
chir. Lmetteur du message secret le chire selon lalgorithme DES au moyen de
la cl, le destinataire applique la fonction inverse avec la mme cl pour le dchirer.
La NSA a obtenu que la normalisation du DES en 1976 comporte une limitation
de la taille de la cl 56 bits, ce qui correspond 1017 valeurs possibles. Aujourdhui cette valeur est notoirement trop faible, et lon utilise le triple DES, avec une
longueur de cl de 112 bits.
La nouvelle norme AES utilise des cls de 128, 192 et 256 bits. La mise en
concurrence pour AES a t lance le 2 janvier 1997 et le choix de la solution a eu
lieu le 3 octobre 2000. Cest lalgorithme Rijndael dvelopp par Joan Daemen et
Vincent Rijmen de lUniversit catholique de Leuven qui a t retenu.
La postrit actuelle du DES procure un chirement qui peut tre considr
comme robuste, condition que soit rsolu le problme crucial de tous les systmes
qui reposent sur une cl secrte utilise aussi bien pour le chirement que pour le
dchirement : les participants doivent schanger des cls de faon secrte, ce qui
nest pas simple.

170

Protection et scurit

Die, Hellman et lchange de cls


Depuis des sicles le problme de lchange des cls tait considr comme un inconvnient naturel du chirement. Les ambassades et les tats-majors y consacraient
des eorts importants, que les espions seoraient de djouer.
Avec lutilisation de lordinateur et des tltransmissions, et la dmatrialisation
de linformation quils autorisent, le problme se pose diremment. Dans les annes 1970 un chercheur indpendant et excentrique, Whiteld Die, rchissait au
moyen pour deux utilisateurs du rseau ARPANET dchanger des courriers lectroniques chirs sans se rencontrer physiquement. En 1974 il donna une confrence sur
le sujet au centre de recherche Thomas J. Watson dIBM Yorktown Heights (dj
le lieu de travail de Horst Feistel), et l il apprit que Martin Hellman, professeur
lUniversit Stanford Palo Alto, avait dj donn une confrence sur le mme
sujet. Aussitt il prit sa voiture et traversa le continent pour rencontrer Hellman.
Die et Hellman cherchaient une mthode pour convenir dun secret partag sans
le faire circuler entre les participants ; en dautres termes une fonction mathmatique
telle que les participants puissent changer des informations dont eux seuls puissent
dduire le secret. Les caractristiques souhaites dune telle fonction sont la relative
facilit de calcul dans le sens direct, et la quasi-impossibilit de calculer la fonction
rciproque. Ainsi, si s est le secret en clair, F la fonction de chirement, c le secret
chir, D la fonction de dchirement, il faut que c = F (s) soit facile calculer, mais
s = D(c) pratiquement impossible calculer pour tout autre que les participants,
au prix de quel stratagme, cest ce que nous allons voir.
La solution repose sur un chapitre de larithmtique trs utilis par les informaticiens, larithmtique modulaire, ou larithmtique base sur les classes dquivalence
modulo n.
Considrons lensemble des entiers relatifs Z muni de laddition et de la multiplication. La division entire de a par b que nous avons apprise lcole primaire y
est dnie ainsi :
aba=bq+r
o q est le quotient et r le reste de la division. Ainsi :
13 3 13 = 3 4 + 1
Intressons-nous maintenant tous les nombres qui, diviss par un nombre donn
n, par exemple 3, donnent le mme reste r. Nous avons dj trouv un nombre, 13,
pour lequel r = 1, donnons-en quelques autres :
13
43
73
10 3
13 3
16 3

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

On dmontre (exercice laiss au lecteur) que lensemble des classes dquivalence


modulo n muni de cette relation dquivalence (rexive, transitive) et de cette addition qui possde les bonnes proprits (associative, commutative, existence dun
lment neutre 0 mod n et dun symtrique pour chaque lment) possde une structure de groupe appel le groupe additif Zn (prononc Z modulo n ).
On peut aussi faire des multiplications :
47

(mod 3) = (4 7) mod 3
= 28 mod 3
= 1 mod 3

Nous pouvons montrer l aussi que la multiplication modulo 3 possde toutes


les bonnes proprits qui font de notre ensemble de classes dquivalence un groupe
pour la multiplication, mais cela nest vrai que parce que 3 est premier. En eet si
nous essayons avec les classes dquivalence modulo 12, nous aurons des diviseurs de
zro, ce qui dtruit la structure de groupe :
4 7 (mod 12) = (4 7) mod 12
= 28 mod 12
= 4 mod 12
4 6 (mod 12) = (4 6) mod 12
= 24 mod 12
= 0 mod 12
Dans la seconde expression, le produit de 4 et 6 est nul, ce qui est trs regrettable.
Aussi pourrons-nous bien dnir un groupe multiplicatif Zn , qui si n est premier aura
les mmes lments que le groupe additif Zn lexclusion de 0, mais si n nest pas
premier il faudra en retrancher les classes correspondant aux diviseurs de n et
leurs multiples :
Z3 = {1, 2}
Z12 = {1, 5, 7, 11}
Z15 = {1, 2, 4, 7, 8, 11, 13, 14}
Dans ce groupe multiplicatif chaque lment a un inverse (sinon ce ne serait pas
un groupe) :

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

5. Bernard applique B la fonction sens unique, soit le rsultat :


W B mod P
76 mod 11
117 649 mod 11
4

=
=
=
=

6. Anne envoie Bernard, et Bernard lui envoie , comme reprsent par la


gure 7.2. et ne sont pas la cl, ils peuvent tre connus de la terre entire
sans que le secret dAnne et de Bernard soit divulgu.

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

Anne et Bernard obtiennent la n de leurs calculs respectifs le mme nombre


9 qui na jamais t expos la vue des indiscrets : cest la cl S ! Nest-ce pas
miraculeux ? Ils ont juste chang linformation ncessaire pour calculer la cl, sans
divulguer celle-ci.
Supposons quve veuille pier les conversations dAnne avec Bernard : elle
pourra intercepter lchange des messages non chirs et , partir desquels
elle veut calculer S = B mod P . Elle ignore S et B. Lquation rsoudre pour
calculer B consiste calculer la fonction rciproque de la fonction sens unique :
W B = mod P
Si nous tions dans le monde des nombres rels la solution serait triviale :
B=

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

7. La paire S = (d, n) est la cl prive.


Voyons ce que donne notre exemple. La cl publique de Bernard est donc (7, 33).
Anne veut lui envoyer un message M , disons le nombre 19. Elle se procure la cl
publique de Bernard sur son site WWW et elle procde au chirement de son message
M pour obtenir le chir C comme ceci :
C = P (M ) = M e mod n
C = P (19) = 197 mod 33 = 13
Pour obtenir le texte clair T Bernard dcode avec sa cl secrte ainsi :
T = S(C) = C d mod n
T = S(13) = 133 mod 33 = 19
Miraculeux, non ? En fait cest trs logique :
S(C) =
=
=
=

C d mod n
(M e )d mod n
M e.d mod n
M mod n

Le dernier rsultat, M e.d = M (mod n) dcoule du fait que e et d sont inverses


modulo n, il se dmontre grce au petit thorme de Fermat, ce que nous ne ferons
pas ici.
quel type dattaque est expos RSA ? Un espion (ve par exemple) pourra
obtenir la cl publique de Bernard P = (e, n), qui a servi chirer M , ainsi que le
message chir, C. Pour trouver M lquation rsoudre est :
C = M e mod n
n, C et e tant
est

connus. Encore une fois dans le monde des rels la solution


triviale : M = e C. Mais dans le monde modulaire la solution est M = e C mod n,
et il ny a pas de mthode connue pour la calculer, mme pour de petites valeurs de
e. Ainsi, trouver la racine cubique modulo n dun nombre y nest pas un problme
rsolu aujourdhui, et dailleurs beaucoup de cryptosystmes industriels utilisent
eectivement e = 3.
En fait la seule attaque possible (outre la recherche de failles de ralisation
du logiciel) consisterait trouver p et q par recherche des facteurs de n, ce que
lon appelle la factorisation du nombre n. La factorisation permettrait de calculer
z = (n) = (p 1)(q 1). Le nombre secret d est tel que e.d 1 mod z. d est un
nombre du mme ordre de grandeur que z, soit un nombre de mille chires binaires.
Ce calcul serait ralisable, mais le problme est que la factorisation nest pas un
problme rsolu, et quil est donc impossible en gnral de calculer p, q et z.
Les ralisations industrielles ont longtemps utilis, et utilisent parfois encore
e = 3. De nos jours e = 216 + 1 = 65 537 est populaire. Avec un tel choix d est du
mme ordre de grandeur que n, soit d 21024 . Llvation une puissance de cet
ordre peut tre ralise ecacement par des algorithmes de type lvation au carr

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.

7.2.4 Pretty Good Privacy (PGP) et signature


Le systme PGP dfraya la chronique judiciaire en 1993 lorsque son auteur Philip
Zimmerman fut soumis une enqute svre du FBI pour le motif davoir export
illgalement des armes de guerre, en loccurrence pour avoir plac son logiciel en accs
libre sur lInternet. Les autorits policires amricaines (et franaises) ont tendance
penser que le chirement robuste est un obstacle leurs investigations parce quil
leur interdirait de dchirer les messages changs par des criminels ou des ennemis.
Aujourdhui tous les dispositifs cryptographiques les plus puissants sont accessibles
facilement par lInternet et ainsi disponibles pour lesdits criminels, espions, etc.
Une lgislation restrictive ne sappliquerait par dnition quaux honntes citoyens
soucieux de respecter la loi parce que cest la loi, pas parce que cest dicile de faire
autrement. Une telle lgislation naurait donc pour eet que de mettre les honntes
gens la merci des criminels, ce qui ne semble pas leet recherch, en principe du
moins.
Sachant que de telles lgislations sont en dclin, mme en France, pays qui a
fermement tenu larrire-garde jusquen 1998, voyons le contenu de PGP. En fait,
PGP napporte aucune rvolution, il est plutt un assemblage ingnieux et pratique
des techniques voques ci-dessus.
Lide du chirement asymtrique avec un couple cl publiquecl prive semble
tellement puissante quon ne voit pas de raison pour quelle ne supplante pas toutes
les autres techniques. En fait un algorithme aussi puissant soit-il ne rsout pas tous
les problmes. Dabord les algorithmes de chirement asymtriques tel RSA sont trs
lourds en temps de calcul, et changer de nombreux messages chirs ainsi devient
vite un fardeau.
Lattaque par le milieu (Man in the middle)
Ensuite, le meilleur chirement du monde ne peut pas empcher quun agent
malintentionn, disons Charles, se soit fait passer pour Bernard, ait intercept les
communications dAnne, et lui ait prsent sa cl publique comme tant celle de
Bernard : ainsi Charles pourra facilement dchirer les messages dAnne avec sa
propre cl prive, les lire, puis les re-chirer avec la vraie cl publique de Bernard
et les faire parvenir ce dernier. Ce type dattaque, appel Man in the middle
2. Je remercie Franois Bayen pour ses suggestions qui ont notablement amlior les exposs
cryptographiques de ce chapitre.

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 ).

7.2.5 Usages du chirement : IPSec et VPN


Dans les lignes qui prcdent nous avons imagin le chirement de messages individuels, mais ce nest en aucun cas le seul usage possible de cette technique. On peut
imaginer, et de plus en plus cest ce qui sera ralis, le chirement systmatique de
toutes les communications en rseau. cette chelle demander chaque utilisateur
de disposer de son propre logiciel de chirement serait inecace. Le dispositif de
chirement (matriel ou logiciel) devra tre install au niveau du routeur dentre
dans une zone de conance qui pourra tre un rseau ou un sous-rseau priv, en gardant lesprit que la majorit des attaques viennent de lintrieur. Les techniques de
rseau priv virtuel (VPN) permettent, avec les mmes outils, dinstaurer un canal
chir entre deux nuds quelconques de lInternet, ces nuds pouvant eux-mmes
tre des routeurs dentre de rseaux. IPSec dsigne un ensemble de RFCs destins
incorporer ces techniques (et dautres, relatives aussi la scurit) au protocole
IP lui-mme, plutt que davoir recours des solutions externes. IPv6 a t conu
pour comporter demble toutes les spcications IPSec.

7.2.6 Annuaire lectronique et gestion de cls


ce stade de lexpos, nous disposons de deux types de cryptosystmes, lun
symtrique secret partag, lautre asymtrique avec cls publiques et cls prives,
le second permettant lchange du secret partag ncessaire au premier. Nous avons
aussi, sans cot supplmentaire, un systme de signature sre et non rpudiable qui
garantit en outre lintgrit des messages reus. Ce quun systme technique ne peut
fournir lui seul, cest ltablissement du circuit de la conance : comment tre sr
que telle cl publique ne ma pas t fournie par un usurpateur ? PGP fournit
ce problme une solution lchelle dune personne et de son cercle de relations :
trousseau de cls publiques et prives conserv sur le disque dur dun ordinateur
personnel. Mais il est patent que PGP ne rpond pas, du moins lui tout seul, ce
problme lchelle dune entreprise, ni a fortiori celle de lInternet. Pour ce faire
il faut recourir un systme dannuaire lectronique complt par une infrastructure
de gestion de cls (IGC, en anglais Public Key Infrastructure, PKI ).
Lannuaire lectronique est une base de donnes au format un peu particulier qui
rend les services habituels dun annuaire : rpertorier des personnes ou des serveurs
selon un schma hirarchique, de lentit la plus englobante (pays) la plus petite
(personne) en passant par plusieurs niveaux (entreprise, dpartement, service...).
Lannuaire lectronique contient aussi, idalement, des certicats, qui comprennent
notamment les cls publiques des entits enregistres. Pour attester la vracit de
ces certicats, ils sont, toujours idalement, signs par une ou plusieurs autorits de
certication, et ventuellement par le dtenteur de la cl lui-mme.

Scurit

179

Il existe une norme assez gnralement accepte pour la structure hirarchique


de dsignation des objets de lannuaire, hrite de la norme dannuaire X500 de lISO
et adapte de faon simplie par lIETF pour les protocoles de lInternet, sous le
nom LDAP (Lightweight Directory Access Protocol). La syntaxe ne fera peut-tre pas
lunanimit, mais elle permet de traiter peu prs tous les cas possibles. Voici le DN
(Distinguished Name) de lobjet Jacques Martin , cest--dire son nom absolu,
constitu de RDNs (Relative Distinguished Names) successifs, un peu comme les
noms relatifs dans une arborescence de chiers Unix constituent le chemin absolu
dun chier ; CN signie Common Name, OU Organizational Unit, O Organization :
cn=Jacques Martin, ou=Groupe Systme,
ou=Division Informatique, o= Compagnie Dupont
La forme des certicats dcoule galement de la normeX500, et elle obit la
norme X509.
Qui certie la signature des autorits de certication ? En bref, qui me garantit
que le contenu de lannuaire nest pas un artefact cr par un escroc ? La procdure
de cration de lIGC et denregistrement des entits comportera ncessairement une
intervention humaine qui chaque tape constate lidentit de la personne (physique,
morale ou technique) laquelle est dlivr le certicat. Un certicat mis par lIGC
dcrit une entit et contient sa cl publique, ainsi que les signatures des autorits
qui garantissent le certicat.
Dans un monde idal (idal du point de vue de la scurit informatique, qui nest
certes pas le seul possible), une hirarchie dIGC propage une certaine conance.
Chaque personne qui accde un systme dinformation est identie par lannuaire
et authentie par son certicat et sa cl publique, dont le pendant est la cl prive. Chaque serveur est galement identi et authenti. Les communications entre
les deux peuvent tre chires. Ceci aurait pour avantage, outre de faire obstacle
plus ecacement la fraude informatique, de permettre aux personnes de possder un systme didentication lectronique unique (single sign on) au lieu davoir
connatre des dizaines de mots de passe et autres codes secrets pour leur carte
bancaire, leur tlphone mobile, leurs courriers lectronique priv et professionnel,
la consultation en ligne de leurs comptes bancaires, les dirents systmes informatiques auxquels elles accdent pour leur vie professionnelle et prive.

7.2.7 Scurit dun site en rseau


Dcoupage et ltrage
Assurer la scurit de systmes informatiques abrits sur un site connect
lInternet et de ce fait accessible du monde entier est une autre branche de ce domaine
dont, en 2013 encore, beaucoup dorganisations ne semblent pas avoir pris lexacte
mesure.
Comme nous lavons dj mentionn, il appartient tout dabord aux responsables
du site de dterminer le primtre quils veulent protger, ainsi que ce quils veulent
permettre et autoriser.
Cet examen aboutit gnralement identier un certain nombre de services qui
doivent tre accessibles de lextrieur par nature, comme un serveur WWW, un relais

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

(Network News Transfer Protocol). Appliquer ce genre de rgles sappelle du ltrage


par port.
Le sous-rseau public (souvent appel zone dmilitarise ou DMZ) devra faire
lobjet de mesures de scurit particulirement strictes, parce que de par sa fonction
il sera expos toutes les attaques en provenance de lInternet. Le principe de base
est : tout ce qui nest pas autoris est interdit, cest--dire que tout paquet qui na
pas de justication lie aux fonctions du serveur de destination doit tre rejet.
vers
lInternet

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

Figure 7.3 : Rseau avec DMZ et coupe-feu

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 .

7.2.8 Les CERT (Computer Emergency Response Teams)


Organisation des CERT
Les CERT (Computer Emergency Response Teams), comme leur nom lindique,
centralisent, vrient et publient les alertes relatives la scurit des ordinateurs,
et notamment les annonces de vulnrabilits rcemment dcouvertes. Les alertes
peuvent maner des auteurs du logiciel, ou dutilisateurs qui ont dtect le problme.
4. Le lecteur non franais peut ignorer le nom de cette ligne de fortications infranchissable
tablie par larme franaise dans les annes 1930 pour se prmunir dune invasion allemande, et
qui navait que le dfaut de ne pas tre place lendroit o cette invasion sest produite en 1940.

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.

Chapitre 8 De Multics Unix et au logiciel libre

Sommaire
8.1
8.2
8.3
8.4
8.5

8.6

Un chec plein davenir . . . . . . . . . . .


O lon commence rver Unix . . . . .
Les hommes dUnix . . . . . . . . . . . . .
Introduction la dmarche unixienne . . .
Dissmination dUnix . . . . . . . . . . . .
8.5.1 Un systme exigeant . . . . . . . .
8.5.2 Naissance dune communaut . . .
8.5.3 Le schisme . . . . . . . . . . . . . .
Aux sources du logiciel libre . . . . . . . .
8.6.1 Principes . . . . . . . . . . . . . .
8.6.2 Prhistoire . . . . . . . . . . . . . .
8.6.3 Prcurseurs . . . . . . . . . . . . .
8.6.4 conomie du logiciel . . . . . . . .
8.6.5 Modle du logiciel libre . . . . . . .
8.6.6 Une autre faon de faire du logiciel
8.6.7 Linux . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

. 185
. 187
. 189
. 191
. 194
. 194
. 195
. 198
. 199
. 199
. 199
. 200
. 201
. 202
. 205
. 207

8.1 Un chec plein davenir


Comme nous lavons dj mentionn la section 3.10.1, Multics est n en 1964
au MIT (Massachusetts Institute of Technology) dans le cadre dun projet de recherche nomm MAC, sous la direction de Fernando Corbat. La mme quipe avait
dj cr le systme CTSS. Multics tait destin aux ordinateurs General Electric
de la famille GE 635, pour lesquels le constructeur fournissait de son ct un systme dexploitation plus conventionnel. Le projet associait le MIT, General Electric
et les Bell Telephone Laboratories (une liale dAT&T, American Telegraph and
Telephone, qui dtenait le monopole des tlcommunications pour les tats-Unis).
Lobjectif du projet tait la ralisation dun grand systme informatique capable
de fournir des services interactifs en temps partag un millier dutilisateurs simultans. Multics comportait beaucoup dinnovations de grande porte : le langage de
commande pour piloter le fonctionnement de la machine tait un langage de programmation, le mme que celui dont disposait lutilisateur pour interagir avec le
systme, le shell voqu la section 3.10.1. Le systme dexploitation tait crit
en langage volu (en loccurrence PL/1), voie ouverte par les systmes Burroughs
crits en Algol, mais encore peu frquente. Les concepts de mmoire centrale pour
les donnes volatiles et de chiers pour les donnes persistantes taient fondus en un

186

De Multics Unix et au logiciel libre

concept unique de mmoire virtuelle segmente, certains segments tant dots de la


qualit de persistance, comme dcrit la section 5.4. Les segments persistants taient
catalogus dans des rpertoires lorganisation arborescente tels que ceux dcrits
la section 5.2.1. Moins spectaculaire en apparence mais peut-tre aussi importante
tait lexistence de toute une collection doutils programmables et combinables entre
eux destins faciliter le travail dun type dutilisateur : le programmeur, et plus
spcialement celui qui crivait un systme dexploitation.
Malgr ou cause de toutes ces qualits uniques et promises un grand avenir,
Multics fut en gros un chec, au moins du point de vue de sa diusion. Ses mrites
furent reconnus tardivement, et le plus souvent tacitement, par ceux qui en reprirent
les ides leur compte.
Cette mconnaissance longue des mrites de Multics a ses raisons : la technologie
des ordinateurs disponible lpoque de sa diusion, essentiellement pendant les
annes 1970, ne permettait dimplmenter les mthodes et les concepts labors de
ce systme quau prix dune grande lourdeur. Les ordinateurs exploits sous Multics
taient gros, chers et lents. Linstitut de statistique qui employait lpoque lauteur
de ces lignes en avait acquis un, fruit de la fusion CII-Honeywell-Bull, et ses experts
en informatique dmographique avaient essay dimaginer les moyens de traiter avec
cet engin les recensements de la population, mais ils avaient ni par regarder ce drle
de systme un peu de lil de la poule qui a couv un uf de cane.
Leur perplexit navait dailleurs dgale que celle des ingnieurs commerciaux
qui essayaient de vendre la chose, ou celle des ingnieurs spcialistes de Multics
auxquels nous posions des questions incongrues comme Pourrions-nous traiter des
chiers sur bande magntique en traitement par lots ? , mthode botienne mais
indispensable lpoque du fait de la faible capacit des disques.
Il rsulta de cette exprience peu de rsultats nouveaux dans le travail statistique
courant, mais un sursaut intellectuel parmi ceux des informaticiens qui navaient pas
dnitivement sombr dans la lthargie coboliste 1 dont on nmergerait que pour
sombrer dans Windows. Si changer de langage ou de systme ne rend pas plus
intelligent, il y a des systmes et des langages qui incitent la rexion, et dautres
moins. Cela dpend pour une grande part du type dinitiative laiss lutilisateur
et du niveau dintelligibilit que le systme exhibe. Il y a des systmes dont les
paramtres de fonctionnement sont enfouis dans des chiers binaires inaccessibles
lutilisateur, qui na quun seul choix : cliquer sur des menus en esprant que cela
nira par produire un rsultat dsir ; cest le cas de Windows. Unix au contraire
contient tous ses paramtres dans des chiers texte lisibles et runis dans un endroit
connu (le rpertoire /etc). La premire mthode nest justiable que si la ralisation
du systme est sans faille, et autorise lutilisateur ne jamais se proccuper de ces
paramtres, ce quont russi les concepteurs de MacOS, mais pas ceux de Windows ;
elle suppose aussi que lesdits utilisateurs ne sont que cela, utilisateurs, quils ne
nourrissent aucun intrt pour le systme et nenvisagent pas une seconde de se
mettre le modier, ou du moins en modier le comportement en jouant sur les
paramtres.
1. Adjectif form sur le nom COBOL, langage de programmation particulirement aride et punitif.

O lon commence rver Unix

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.

8.2 O lon commence rver Unix


Les crateurs dUnix, Ken Thompson et Dennis M. Ritchie, avaient une forte
exprience de Multics, et ils savaient aussi bien ce quils voulaient en retenir que ce
quils en rejetaient. Ils en retenaient notamment les aspects suivants :
Le systme est crit non pas en assembleur, mais dans un langage de haut
niveau (PL/1 pour Multics, C pour Unix). Seuls quelques fragments du code
du noyau intimement lis un matriel particulier sont en assembleur. Ceci
facilite le portage 2 du systme sur un nouveau modle dordinateur. On a pu
dire que le langage C tait un assembleur portable.
Le systme de commandes qui permet de piloter le systme est le mme interprteur qui permet lutilisateur dexcuter des programmes et des commandes, et il donne accs un langage de programmation. Cest le shell.
Le systme de chiers dUnix est trs inspir de celui de Multics, do vient
aussi lide dexcuter chaque commande comme un processus distinct.
Mais surtout, comme Dennis Ritchie la expliqu dans son article de 1979, ce
que lui et ses collgues des Bell Laboratories voulaient retrouver de Multics en
crant Unix, ctait un systme qui engendrait pour ainsi dire spontanment
la communication et lchange dexpriences entre ses adeptes.
Cette qualit, partage par Multics et Unix, dtre propice la cration dune
communaut ouverte et communicative, mrite que lon sy arrte. Lorsque Multics
a t introduit dans lInstitut statistique voqu ci-dessus, il y a immdiatement
cristallis la formation dune petite communaut intellectuelle, que la Direction na
dailleurs eu de cesse de rsorber parce quelle nen comprenait pas la fcondit et
quelle percevait son activit comme un gaspillage. Dinnombrables expriences similaires ont eu lieu autour de Multics et dUnix, sans quune cause unique puisse leur
tre attribue. Le fait que ces systmes aient t crs par des chercheurs, habitus
lide que la connaissance soit objet de partage gratuit et de communication ds2. Porter un logiciel dun ordinateur un autre ou dun systme un autre signie ladapter aux
caractristiques techniques particulires de ce nouveau contexte. Lopration sappelle un portage.
Un logiciel pour le portage duquel le travail faire est nul ou ngligeable est dit portable ; cette
qualit, trs recherche, sappelle portabilit. Unix est le systme dexploitation le plus portable
parce quil est crit pour lessentiel dans un langage volu (C) plutt que dans lassembleur dun
processeur particulier, et grce la bonne abstraction de ses primitives, grce aussi la simplicit
et llgance de son architecture gnrale.

188

De Multics Unix et au logiciel libre

intresse mais assortie de plaisir, est un lment. Lexistence de logiciels commodes


pour la cration de textes, le courrier lectronique et les forums en ligne a aussi jou,
mais cette existence tait-elle une cause ou une consquence ? La nature programmable du shell, laccs possible pour tous aux paramtres du systme, inscrits dans
des chiers de texte ordinaires, encourageaient un usage intelligent du systme, et
lintelligence va de pair avec lchange.
Si lon compare Multics et Unix aux systmes industriels disponibles lpoque,
comme lOS 360, GCOS 8 ou plus tard VMS de Digital Equipment, il apparat que
ces derniers ne sont pas conus dans le mme esprit : lutilisateur dispose dun mode
demploi du systme, rput contenir les solutions pour tout problme quil pourrait
se poser. Lorsque tout ceci est bien fait, comme par exemple dans VMS, le systme
mmoire virtuelle conu pour lordinateur VAX, cela suscite un usage ecace et
commode mais passif du systme.
Lauteur de ces lignes a t un utilisateur longtemps rticent et sceptique dUnix,
drout par laspect caisse outils du systme. VMS, que je pratiquais simultanment, avait t conu par une quipe de (trs bons) ingnieurs, soucieux de livrer
un produit homogne et cohrent, et ils avaient parfaitement russi. La meilleure
preuve de cette russite tait la documentation du systme, souvent un aspect un
peu nglig : celle de VMS tait une merveille de clart et dexhaustivit, au prix
certes dun nombre impressionnant de mtres linaires de rayonnage. Mais quel que
soit le problme rsoudre, on tait sr que la rponse tait dans la doc . Lorsque
Digital Equipment a produit sa propre version dUnix, ils ont publi un petit manuel
rsum des commandes Unix, baptis The little grey book (la couleur canonique
de la documentation Digital venait de virer de lorange au gris). Par opposition, la
documentation VMS sest trouve baptise The big grey wall .
Habitu donc lunivers confortable et hyper-balis de VMS, je dcouvrais avec
Unix un systme de prime abord beaucoup moins homogne, mme si je devais
dcouvrir plus tard que son homognit rsidait ailleurs. Comme chaque commande
Unix sexcute sous le contrle dun processus distinct, elle peut tre assez dcouple
du noyau du systme. Cette modularit, qui est un avantage, avait permis de coner
lcriture de beaucoup de commandes des tudiants en stage, quand elles ntaient
pas tout simplement des contributions spontanes, et alors leur qualit et celle de
leur documentation pouvaient tre assez ingales.
De Multics les crateurs dUnix rejetaient la lourdeur. La tentation fatale, pour
des auteurs de systmes informatiques en gnral, et de systmes dexploitation ou
darchitectures de processeurs tout particulirement, consiste cder au perfectionnisme et raliser des dispositifs qui ajouteront au systme global une complexit
considrable pour rsoudre des problmes qui ne surgiront que trs rarement. Les
problmes rares peuvent se contenter de solutions inecaces mais simples. Force est
de constater que les auteurs de Multics nont pas vit cette ornire. VMS non plus
dailleurs, qui succdait aux merveilleux RSX-11M et autres IAS.
Frederick P. Brooks, le concepteur de lOS/360, dans son livre justement clbre The Mythical Man-Month [13], dcrit ce quil appelle le syndrome du second
systme, et qui sapplique Multics comme lOS/360 : une quipe constitue en
grande partie des mmes hommes autour de Fernando Corbat avait dvelopp avec
succs CTSS ; en sattaquant Multics ils ont voulu y introduire tous les perfectionnements coteux quils avaient, avec sagesse mais frustration, carts de leur

Les hommes dUnix

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.

8.3 Les hommes dUnix 3


Le lecteur, la n de lalina prcdent, se sera peut-tre fait la rexion que
pour que des employs dune grande entreprises puissent dvelopper un systme
dexploitation, mme asctique, pendant leur temps libre, il fallait que leur encadrement ne soit pas trop rigide. Parce que ce mme lecteur devrait maintenant tre
convaincu que le systme dexploitation est lobjet technique le plus complexe que
lhomme ait conu et ralis au cours du XXe sicle. Quelle tait au fait la mission
thorique de ces jeunes gens ? Qui contrlait la ralisation de leurs objectifs ?
Peter H. Salus a crit un livre (A Quarter Century of UNIX, [64]) qui met en
scne les principaux acteurs de la naissance dUnix. De prime abord, on est frapp
en lisant ces aventures de dcouvrir que cette cration, qui a eu des rpercussions
considrables dans les domaines technique autant quindustriel et conomique, na
vraiment t dcide ni par un groupe industriel, ni par un gouvernement, ni par aucun organisme dot de pouvoir et de moyens nanciers importants. On peut dailleurs
en dire autant de lInternet (pour des dtails, voir la section 6.5.3), une autre cration aux rpercussions considrables, dailleurs trs lie Unix et issue du mme
milieu social.
3. Eectivement, peu de femmes dans cette histoire. Raison de plus pour mentionner Evi Nemeth, et, peut-tre pas tout fait dans le mme domaine ni la mme poque, Radia Perlman,
spcialiste des protocoles de rseau, et Elizabeth Zwicky.

190

De Multics Unix et au logiciel libre

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.

Introduction la dmarche unixienne

191

8.4 Introduction la dmarche unixienne


Comme le note Christian Queinnec aux premiers mots de son livre ABC
dUnix [59], UNIX est un systme de production de programme . Et, conformment lesprit dUnix, cette assertion est prendre la fois de faon extensive :
ce systme comporte tout ce dont peut rver un auteur de programme, et, aussi, de
faon restrictive : malgr quelques concessions rcentes, il ne comporte fondamentalement rien dautre. Les Unix modernes tels que Linux sont certes dots de logiciels
utilisables par le commun des mortels, avec des interfaces graphiques, mais les vrais
unixiens nen abusent pas.
La documentation canonique dUnix (les man pages) constitue une excellente
entre en matire : aucun eort pdagogique, aucune de ces redondances qui facilitent lacquisition dune notion. Les mots en sont compts, aucun ne manque mais
pas un nest de trop. La lecture attentive (trs attentive) de ces pages dlivre une
information ncessaire et susante lusage du systme, do une locution proverbiale souvent profre par les Unixiens expriments en rponse un nophyte qui
demande de laide : RTFM ! (Read the f... manual !). On le voit, Unix est
loppos de ces logiciels interface graphique dont les vendeurs laissent croire quils
peuvent tre utiliss sans lire aucune documentation 5 .
qui tait, comme lauteur, habitu aux systmes des grands ordinateurs IBM
des annes 1970, ou au systme VMS que Digital Equipment Corporation (DEC)
avait dvelopp pour ses ordinateurs VAX, la transition tait rude. Les systmes
dIBM et de DEC taient conus dans le but dlargir laudience de linformatique
des utilisateurs moins professionnels, une poque o les micro-ordinateurs nexistaient pas. Pour ce faire, la syntaxe de leur langage de commandes cherchait
sadoucir en utilisant des lexmes plus proches du langage humain, en tolrant des
abrviations ou au contraire des tournures plus bavardes mais plus faciles mmoriser. La rponse du systme une commande tait aussi dulcore : prsentation
are, commentaires explicatifs.
Pour un Unixien, toutes ces variations pdagogiques ne sont que concessions
coupables lignorance informatique des secrtaires et des comptables. Linitiation
informatique des ces professions respectables est peut-tre un objectif louable, mais
5. Cette prtention atte la paresse naturelle de lutilisateur, mais elle est fallacieuse. Il est
certes possible, avec tel logiciel de traitement de texte dont le nom signie mot dans une langue
germanique et insulaire, de crer facilement un document laid et peu lisible, mais ds lors que lon
veut un rsultat prsentable il faut se plonger dans la documentation et dcouvrir que ce logiciel
est complexe, tout simplement parce que la typographie est complexe.

192

De Multics Unix et au logiciel libre

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.

Introduction la dmarche unixienne

193

des commandes Unix sexcutent comme un processus indpendant. Le lancement


dun programme cr par un utilisateur obit la mme syntaxe et aux mmes
rgles, ce qui encourage les dveloppeurs utiliser les conventions des commandes
Unix, et ainsi contribuer lenrichissement du systme.
Loprateur de composition de processus parallles asynchrones est & . a
& b se lit : lancer lexcution de a, puis sans attendre quelle se termine lancer
aussitt b. Les deux processus seront concomitants (et concurrents pour lacquisition
du contrle du processeur).
Loprateur de composition de processus parallles synchrones est | . a |
b se lit : lancer lexcution de a, puis lancer b qui va aussitt attendre la premire
ligne de rsulat issue de a, la traiter puis se bloquer en attente de la suivante, etc.
Prenons un exemple simple : je veux la liste de tous les processus en cours
dexcution qui excutent le serveur WWW Apache, avec leur numro de processus.
La commande qui ache la liste des processus sappelle ps , qui doit, pour
acher non seulement les processus de lutilisateur mais tous les autres, tre agrmente des paramtres a et x, ce qui scrit donc ps ax . Cette commande va
produire la liste de tous les processus, avec leur numro et le nom du programme
excut, raison dune ligne par processus. Je veux ltrer cette liste pour nen retenir
que les lignes o le nom de programme qui apparat est apache.
Parmi les plus belles commandes dUnix il faut citer grep (pour Global (search
for) Regular Expression and Print, analyseur gnral dexpressions rgulires). Cette
commande peut faire des choses trs savantes, mais nous allons lutiliser de faon
trs simple, pour retrouver une chane de caractres dans le texte soumis son entre
standard. grep apache signie : si la ligne de lentre standard contient le texte
apache , acher le texte lcran, sinon passer la suivante.
Nous allons composer les deux commandes ps ax et grep apache par
loprateur de composition parallle synchrone | :
ps ax | grep apache
Chaque ligne issue de la premire commande sera soumise la seconde pour
analyse, ce qui ralisera le ltre souhait :
> ps ax | grep apache
284 ?
S
0:00 /usr/sbin/apache
295 ?
S
0:00 /usr/sbin/apache
296 ?
S
0:00 /usr/sbin/apache
297 ?
S
0:00 /usr/sbin/apache
298 ?
S
0:00 /usr/sbin/apache
299 ?
S
0:00 /usr/sbin/apache
434 pts/0
S
0:00 grep apache
Je reois ainsi la liste de tous les processus Apache avec leur numro, et en prime
le processus danalyse, puisque sa ligne de commande comporte elle aussi le texte
apache.
Cette mtaphore du ltre est promue au rang de paradigme par UNIX : les
programmes vraiment unixiens doivent tre crits comme des ltres, cest dire
recevoir un ux de caractres sur leur entre standard et mettre un ux de caractres

194

De Multics Unix et au logiciel libre

(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.

8.5 Dissmination dUnix


8.5.1 Un systme exigeant
Nous venons de dire quUnix tait un systme de production de programme,
conu pour satisfaire les programmeurs professionnels et peu prs personne dautre.
Comment expliquer alors quil se soit rpandu dans beaucoup dautres domaines,
souvent au prix de beaucoup de crises de nerfs de la part dutilisateurs furieux ?
Parce quil faut bien dire quUnix nest pas un systme confortable pour qui nest
pas dispos y consacrer la moiti de son temps de travail.
Lauteur de ces lignes, il y a de nombreuses annes, a compris que sil voulait esprer garder lestime de certains collgues il lui fallait savoir se servir assez
couramment dUnix et surtout de lditeur de texte Emacs avec lequel dailleurs
il compose le prsent texte. Cette prise de conscience a entran de nombreuses et
lourdes consquences. Il en va dEmacs comme dUnix : aucun espoir dacqurir un
minimum de matrise de cet diteur (gnial) sans plusieurs heures de pratique quotidienne, qui au bout de quelques mois permettront de savoir raisonnablement utiliser
quelques dizaines parmi ses 14 000 et quelques fonctions, sans parler du langage de
programmation qui lui est incorpor. Bien, il fallait sy mettre, et pour cela une
seule solution : utiliser Unix et Emacs pour tout, rdaction de documents, courrier
lectronique, lecture des News.
De ce type de situation on serait tent dinfrer une conception un peu paradoxale
du mtier dinformaticien : le travail consisterait essentiellement rester en symbiose
avec le systme et les outils de base comme Emacs, se tenir au courant de leurs
volutions en frquentant des collgues, par des rencontres, des colloques, les News,
essayer les nouveaux logiciels ds leur sortie, et, logiquement, en produire soi-mme.
Il va de soi que dans cette perspective les demandes trop prcises dun employeur
qui naurait pas compris ce processus seraient perues comme autant dobstacles
mesquins. Le trait ici est bien sr forc, mais lemployeur avis noubliera pas que ses
ingnieurs, pour rester comptents, ont besoin de temps pour les activits nonces
ci-dessus.
La conclusion qui semblerait logique aprs la lecture des lignes prcdentes serait
quUnix aurait d disparatre sous les coups furieux des DRH et des chefs de projet,
ou du moins aurait d rester cantonn un petit monde de chercheurs, de dveloppeurs et de hobbyistes. Il nen a rien t pour au moins deux raisons exposes la
section 8.5.2.

Dissmination dUnix

195

8.5.2 Naissance dune communaut


Lorsquaprs quelques annes de travail assez condentiel il na plus t possible
AT&T (American Telegraph and Telephone) dignorer le travail de Thompson
et Ritchie, celui-ci avait acquis une certaine ampleur et une certaine notorit, notamment dans le monde universitaire. AT&T dcida de vendre Unix assez cher aux
entreprises 7 , et se laissa convaincre den concder lusage gratuit aux Universits.
Cette dcision fut lorigine de la popularit dUnix dans le monde universitaire.
Cest en 1974 que Vinton Cerf (de lUniversit Stanford) et Robert Kahn (de
BBN) publirent le premier article sur TCP/IP. Le travail sur les protocoles fut
intense. En 1977 TCP/IP atteignit une certaine maturit, et cest de ce moment que
lon peut dater la naissance de lInternet exprimental.
En 1979 la DARPA lanait des appels dores assez gnreux auprs des centres
de recherche prts contribuer au dveloppement de TCP/IP, elle souhaitait notamment ladapter au VAX 11/780, lordinateur mots de 32 bits que DEC venait
de lancer (les PDP-11 taient des machines mots de 16 bits). Bill Joy, du Computer Systems Research Group (CSRG) de lUniversit de Californie Berkeley et
futur fondateur de Sun Microsystems, convainquit la DARPA quUnix serait une
meilleure plateforme que VMS pour ce projet parce quUnix avait dj t port sur
plusieurs types dordinateurs.
De fait, ds 1977 le CSRG avait cr une version exprimentale dUnix (la
1BSD , pour Berkeley System Distribution) drive de la Sixth Edition des Bell
Labs. La Seventh Edition de 1978 tournait sur DEC PDP-11 et avait t porte sur
un ordinateur mots de 32 bits, lInterdata 8/32 : elle fut porte sur VAX sous
le nom de 32V, et le CSRG (nommment Bill Joy et Ozalp Babaoglu) runit ces
diverses souches pour crer la 3BSD en 1979.
Le nancement de la DARPA devait stimuler les deux projets : le dveloppement de cette nouvelle version dUnix nomme Unix BSD , rsolument tourne
vers le monde des rseaux, et celui de ce que lon connat aujourdhui sous le nom
de TCP/IP. De ce jour, les dveloppements respectifs de TCP/IP, de lInternet et
dUnix furent indissociables. La souche Bell Labs continua son volution indpendamment pour engendrer en 1983 la version System V . La suite de cette histoire se
trouve ci-dessous la section 8.5.3.
La disponibilit pratiquement gratuite pour les Universits, les subventions gnreuses de la DARPA, ctait deux contributions de poids au succs dUnix. Un
troisime ingrdient sy ajouta, sans lequel les deux autres neussent sans doute pas
su : ce monde du rseau des centres de recherche tait par ses traditions prdispos aux changes intellectuels, et justement la construction du rseau lui fournissait
le moyen de sy adonner de faon dcuple. Dans le monde scientique dantan, les
contacts avec lextrieur un peu lointain taient lapanage des patrons de laboratoire,
qui allaient aux confrences o ils accdaient des informations quils pouvaient ensuite distiller pendant des sminaires suivis religieusement par les disciples. Avec le
rseau, de simples tudiants ou de vulgaires ingnieurs pouvaient entrer en contact
directement avec des collgues prestigieux. En outre, ces changes taient indispen7. En fait cette poque AT&T possdait le monopole des tlcommunications aux tats-Unis,
en contrepartie de quoi il lui tait interdit davoir une vritable action commerciale dans dautres
domaines comme linformatique.

196

De Multics Unix et au logiciel libre

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

De Multics Unix et au logiciel libre

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

Aux sources du logiciel libre

199

systme de fentrage X une couche dinterface graphique la Macintosh , qui


aurait rendu le systme utilisable par des non-professionnels. De tels systmes apparaissent aujourdhui (Gnome, KDE), alors que la bataille a t gagne (au moins
provisoirement) par Windows.
On peut aujourdhui considrer que le schisme BSD-System V est rsorb dans
lcumnisme : tous les System V ont des sockets (pour faire du TCP/IP il faut bien)
et tous les BSD ont le systme de communication inter-processus (IPC) STREAMS
de System V, notamment. Mais lidologie BSD reste toujours vivace.

8.6 Aux sources du logiciel libre


8.6.1 Principes
Le logiciel libre mobilise beaucoup les esprits en ce dbut de millnaire. La dnition mme de la chose suscite de nombreuses controverses dues en partie au fait
que le mot anglais free signie la fois libre et gratuit. Si lon sen tient une
acception restrictive, lexpression logiciel libre dsigne un modle conomique et un
mouvement associatif crs en 1984 par un informaticien de gnie, Richard M. Stallman, auteur depuis 1975 dun logiciel extraordinaire, Emacs. En 1983, Stallman, qui
travaillait au laboratoire dintelligence articielle du MIT, excd par les restrictions
au dveloppement dUnix induites par les droits de proprit industrielle dAT&T
et de quelques autres industriels 9 , fonde le projet GNU ( GNU is Not Unix )
destin crer un systme dexploitation libre de droits et dont le texte source serait librement et irrvocablement disponible tout un chacun pour lutiliser ou le
modier.
Lanne suivante, Stallman cre la Free Software Foundation (FSF) pour promouvoir le droit de lutilisateur dordinateur utiliser, tudier, copier, modier et
redistribuer les programmes dordinateur , cest dire tendre le modle du projet
GNU dautres logiciels. Un corollaire indissociable de ce principe est que le texte
source du logiciel libre doit tre accessible lutilisateur, ainsi que la documentation
qui permet de lutiliser. Cette clause confre tout un chacun le moyen de modier
le logiciel ou den extraire tout ou partie pour une cration nouvelle. Pour assurer
la prennit du principe, tout logiciel libre conforme aux ides de la FSF est soumis
aux termes dune licence, la GNU GPL (GNU General Public License), qui impose
les mmes termes tout logiciel driv. Ainsi il nest pas possible de dtourner du
logiciel libre pour crer du logiciel non libre sans violer la licence.

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

De Multics Unix et au logiciel libre

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.

Aux sources du logiciel libre

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.

8.6.4 conomie du logiciel


Lconomie du logiciel, tudie notamment avec brio par Michel Volle dans son
livre e-conomie [78], exprime un paradoxe dont la conscience ne sest manifeste que
rcemment. Citons Michel Volle dans la prsentation de son livre : Le systme
technique contemporain est fond sur la synergie entre micro-lectronique, informatique et automatisation. On peut styliser sa fonction de production en supposant
quelle est cots xes : le cot de production, indpendant du volume produit,
est pay ds linvestissement initial. Dveloppons cette hypothse : les usines tant
des automates, lemploi rside dans la conception et la distribution. La distribution
des revenus nest pas relie au salariat. Les entreprises direncient leur production pour construire des niches de monopole. Elles organisent leurs processus autour
du systme dinformation. Le commerce passe par des mdiations empruntant la
communication lectronique.
Linvestissement est risqu, la concurrence est mondiale et violente. On retrouve dans cette prsentation stylise des aspects tendanciels de notre conomie.
Elle claire la description des secteurs de linformatique, de laudiovisuel, des rseaux (tlcommunications, transport arien, etc.), du commerce, ainsi que les aspects stratgiques et tactiques des jeux de concurrence dans ces secteurs et dans
ceux qui les utilisent. On voit alors que cette conomie hautement ecace pourrait
aller au dsastre si elle tait traite sur le mode du laissez faire, sans considrer
les exigences de lthique et de la cohsion sociale. (texte disponible sur le site
http://www.volle.com selon les termes de la GNU Free Documentation License).
Dans le cas du logiciel ces traits sont particulirement marqus : la cration dun
logiciel important tel quun systme dexploitation 10 est une tche colossale qui
10. Un systme dexploitation commercial moderne tel que Windows 2000 comporte quelque 30
millions de lignes de programme. Estimer le nombre de lignes de Linux est assez dicile parce
quil faudrait ajouter la taille du noyau celle des multiples utilitaires et logiciels gnraux qui
le compltent. Un dcompte sur le rpertoire des sources du noyau, qui comporte les pilotes de
priphriques et les modules, donne pour la version 2.4.12 (architecture Intel 386) utilise pour
rdiger le prsent ouvrage 2 333 129 lignes, auxquelles il faudrait en ajouter presquautant pour le
systme de fentrage X, sans oublier les bibliothques de commandes et de fonctions diverses, mais
dont il conviendrait de retirer quelques dizaines de milliers de lignes pour les parties redondantes
lies par exemple des architectures direntes (Intel x86, Alpha, PowerPC, etc.). Le rendement
moyen dun dveloppeur est hautement sujet controverses, mais si lon compte les temps consacrs
la rdaction de la documentation et lacquisition de connaissances, 50 lignes par jour de travail
semble un maximum, soit 10 000 par an et par personne. Mais comme le signale Brooks dans
son livre Le mythe de lhomme-mois [13], une telle valeur est minemment trompeuse. La
cration dun logiciel est une tche trs complexe, et la division du travail la complique encore
en multipliant les fonctions de direction, de coordination et dchanges dinformation, qui peuvent

202

De Multics Unix et au logiciel libre

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.

8.6.5 Modle du logiciel libre


Le logiciel libre, face cette situation, reprsente un potentiel trs dynamique,
parce quil obit un modle conomique tout autre. Microsoft ne peut utiliser
contre lui aucune des armes classiques de la concurrence industrielle, telles que la
guerre des prix, la publicit, les fournitures associes, leet de gamme, etc., parce
que le logiciel libre nest sur aucun de ces terrains.
Les caractres conomiques du logiciel libre ont t tudis, entre autres, par
Marie Coris dans son travail de thse de doctorat lUniversit Montesquieu de
Bordeaux IV (voir sa communication au congrs JRES 2001 : [17]). Elle numre
dabord les caractres du logiciel en gnral :
un bien dinformation, aspect amplement dvelopp ici dont dcoule limportance des conomies dchelle ;
un bien en rseau : son utilit crot en raison du nombre de ses utilisateurs ;
un bien cheval entre public et priv :
le cot de production pratiquement engag en totalit ds le premier exemplaire, lusage non destructif (il peut tre utilis par un nombre inni
dutilisateurs), lusage non exclusif (il est dicile dempcher quelquun
dautre de lutiliser) sont des caractristiques dun bien public,
le recours la protection du droit dauteur ou du brevet permet dannuler
les aspects publics , par exemple en limitant la reproductibilit, et de
faire du logiciel un bien priv.
Lalternative se situe entre le logiciel comme bien priv, ide des entreprises telles
que Microsoft, Oracle, etc., et le logiciel comme bien public, ide du logiciel libre.
aboutir ralentir le processus plus qu lacclrer. Manuel Serrano en a tir les consquences
dans sa thse dhabilitation [66] en plaidant pour le logiciel moyen : les grands logiciels ne
seraient devenus encombrants, dans bien des cas, que par la prolifration incontrle dun processus
de dveloppement devenu bureaucratique. Une rexion plus intense dun groupe plus petit et plus
conscient des objectifs atteindre permettrait dobtenir un logiciel plus petit et de meilleure qualit.

Aux sources du logiciel libre

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

De Multics Unix et au logiciel libre

libre ; Unix ne lui a pas vraiment rapport beaucoup dargent, et sa facturation


aux entreprises a considrablement restreint sa diusion. Le succs actuel de Linux
apporte ex post des arguments lappui de cette hypothse. Toutefois, Bertrand
Meyer a raison dcrire que sans la couple IntelMicrosoft il ny aurait jamais eu de
PC 600 Euros, et partant jamais de succs pour Linux.
Un exemple typique et trs instructif du cas 3 est celui du logiciel Ghostscript,
produit par la socit Aladdin Enterprises, qui est un interprteur du langage PostScript. PostScript est un langage de description de pages utilis comme format de
sortie par de nombreux logiciels et comme format dentre par beaucoup dimprimantes. Ghostscript est utile pour acher lcran le contenu dun chier PostScript, et pour limprimer sur une imprimante dpourvue dinterprteur PostScript
incorpor, ce qui est le cas notamment de beaucoup de petites imprimantes jet
dencre. Ce logiciel a deux groupes bien distincts dutilisateurs : des millions de propritaires de petites imprimantes bon march qui veulent acher et imprimer du
PostScript, et une dizaine dindustriels fabricants dimprimantes, qui incorporent
Ghostscript par paquets de cent mille exemplaires leurs productions.
Dans sa grande sagesse, la socit Aladdin Enterprises a dcid de ne pas se
lancer dans la commercialisation grande chelle dun logiciel qui vaudrait quelques
dizaines dEuros, et de le distribuer aux particuliers sous les termes dune licence
dite Aladdin Ghostscript Public License, qui protgeait la proprit intellectuelle
dAladdin et permettait un usage gratuit. Depuis 2000, Ghostscript est un logiciel
libre disponible sous les termes de la GNU GPL. Aladdin Enterprises tire plutt ses
revenus de la clientle des fabricants dimprimantes.
Le cas 2 est sans doute le plus frquent. La justication initiale de ce modle me
semble remonter au principe constant de ladministration amricaine : ce qui a t
pay une fois par le contribuable ne doit pas ltre une seconde fois. Les logiciels dont
le dveloppement a t nanc par des contrats de recherche de la DARPA doivent
tre mis gratuitement la disposition du public, au mme titre que les photos de
lespace prises par la NASA.
Ce principe ne semble pas scandaleux : ce qui a t nanc par largent public 11
(au sens large) revient au public. Les rsultats de la recherche publique sont disponibles publiquement. Il sagit dun systme de redistribution : tous les contribuables
nancent les logiciels produits de cette faon, et les bnciaires en sont les utilisateurs. Il est lgitime de sinterroger sur lquit de ce processus de rpartition, mais
il en est sans doute de pires.
Qui pourrait sestimer ls ? Essentiellement les entreprises dont la prosprit
repose sur le logiciel commercial, et qui pourraient arguer dune concurrence dloyale,
11. Ramenons ici de justes proportions la vision que lon a souvent en France du systme
universitaire amricain, dont les universits seraient autant dentreprises prives gres comme des
socits commerciales et dont les tudiants seraient purement et simplement des clients. Cette
vision est simpliste : ainsi lUniversit de Californie, organise autour de huit campus rpartis sur
le territoire de ltat, reoit 80% de ses nancements de ltat de Californie, de ltat fdral, des
municipalits et dagences fdrales. Les tudiants californiens y sont admis gratuitement sur des
critres de dossier scolaire. Dautres universits ont sans doute des modes de fonctionnement plus
loigns du service public franais, bref, les situations sont varies et il nest pas certain que les
formations universitaires soient plus rserves aux catgories privilgies l-bas quici, mme si les
barrires ne sont pas disposes de la mme faon.

Aux sources du logiciel libre

205

puisque le plus souvent alimente par des nancements publics. Curieusement, on


observe peu de protestations de cette nature, et encore moins de procs.
Il convient aussi de remarquer que le modle du logiciel libre, sil napporte apparemment que des avantages lutilisateur, peut comporter des inconvnients pour
lauteur, qui sinterdit en fait tout contrle exclusif sur la divulgation de son travail. Certes, les clauses de la GNU GPL permettent la commercialisation de logiciel
libre, et il est parfaitement possible de recourir au systme de la double licence, par
exemple GNU GPL pour le monde acadmique et licence commerciale pour le monde
industriel. Mais il est clair quun logiciel novateur dont lauteur peut esprer des revenus importants sera mal protg des contrefaons si son code source est divulgu.
En fait, dans le monde acadmique la pression idologique pour la GNU GPL est
trs forte, et les auteurs de logiciels qui souhaitent vivre des fruits de leur activit
de dveloppeur plutt que dun emploi universitaire (ou qui, faute dun tel emploi,
nont pas le choix) sont assez marginaliss par ce systme. Le caractre contagieux
et contraignant de la GNU GPL est trs pnalisant pour lauteur qui ne souhaiterait pas vivre dans labngation (cest le terme exact : le logiciel quil a crit ne lui
appartient plus), ou qui, faute davoir obtenu un poste dans un organisme public,
ne le pourrait pas. Il y a des exemples dauteurs qui pour avoir refus les servitudes
de la GNU GPL se sont vu mettre au ban de la communaut, leurs travaux passs
sous silence et leurs logiciels exclus des serveurs publics.
En fait, la ralit usuelle du dveloppeur de logiciel libre est quil gagne sa vie
autrement, et que la rtribution quil attend pour son uvre est la reconnaissance
de ses pairs. Quiconque bncie du logiciel libre ressent le dsir dy contribuer et
ainsi dadhrer une communaut perue comme thique. Il est souhaitable que
la GNU GPL ne reste pas hgmonique et que dautres licences aux termes moins
idologiques et plus quilibrs apparaissent dans le monde du logiciel libre.

8.6.6 Une autre faon de faire du logiciel


Le modle du logiciel libre nest pas sans inuence sur la nature mme du logiciel produit. En eet, dans ce contexte, un auteur peut facilement utiliser dautres
logiciels sils sont libres, que ce soit pour recourir des bibliothques de fonctions
gnrales ou pour sinspirer dun logiciel aux fonctions analogues mais dans un environnement dirent.
Des systmes de dveloppement coopratif se mettent en place par le rseau,
qui seraient impensables pour du logiciel non-libre : les programmes sous forme
source sont accessibles sur un site public, et chacun peut soumettre sa contribution.
Larchtype de ce mode de dveloppement est celui du noyau Linux proprement dit,
coordonn par Linus Torvalds personnellement.
Pour quun tel procd donne des rsultats utilisables, il faut que le logiciel
prsente une architecture qui sy prte, notamment une grande modularit, an
que chaque contributeur puisse travailler relativement indpendamment sur telle ou
telle partie. Par exemple, dans le noyau Linux, tout ce qui permet le fonctionnement
de machines multi-processeurs et la premption des processus en mode noyau (voir
section 3.12.5) demande une synchronisation beaucoup plus ne des ls dexcution :
les adaptations ncessaires ont t ralises par Robert Love, ce qui a t possible
parce quil ntait pas trop dicile disoler les parties du code concernes. linverse,
lorsque Netscape a voulu donner un statut Open Source une partie du code de son

206

De Multics Unix et au logiciel libre

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 ;

Aux sources du logiciel libre

207

Apache, un serveur WWW.


Chacun dans son domaine, ces logiciels sont de toute premire qualit, et il ny a
pas hsiter : ce sont eux quil faut utiliser ! Il manque bien sr des choses, comme
un logiciel OCR comparable Omnipage de Caere...

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

De Multics Unix et au logiciel libre

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.

Aux sources du logiciel libre

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 !

Chapitre 9 Au-del du modle de von Neumann

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

Au-del du modle de von Neumann

9.1 Architectures rvolutionnaires


Les tentatives radicales visent crer de nouveaux modles de calcul en imaginant
des ordinateurs capables dexcuter un grand nombre dinstructions simultanment.
Ces modles rvolutionnaires se classent selon diverses catgories :

9.1.1 SIMD (Single Instruction Multiple Data)


Comme le nom le suggre, il sagit dordinateurs capables dappliquer un moment donn la mme opration un ensemble de donnes, ce qui postule une certaine
similarit de celles-ci. Ce postulat est rarement satisfait dans le cas gnral, mais il
sapplique bien un cas particulier important, celui du calcul vectoriel ou matriciel,
qui a de nombreuses applications pratiques en mtorologie, en arodynamique, en
calcul de structures, en ocanographie, en sismologie, bref dans tous les domaines
pour lesquels la physique ne donne pas de solution analytique simple mais o un modle heuristique talonn sur des donnes recueillies pour des problmes solution
connue et appliqu un ensemble de donnes empiriques aussi vaste que possible
permet datteindre une solution approche satisfaisante. Le modle SIMD a connu
sous le nom dordinateur vectoriel un certain succs, qui se perptue sous dautres
formes (proceseur graphique, dit aussi GPU, par exemple).
En ralit un processeur vectoriel ne dispose que dun seule unit de contrle,
qui pilote de multiples units dexcution. La ralisation dun tel ordinateur pose
des problmes thoriques raisonnablement solubles ; il en va de mme pour la programmation.
Les super-ordinateurs Cray, Fujitsu, NEC, les mini-super Convex, les processeurs
spcialiss Floating Point Systems ont connu de rels succs jusque dans les annes
1980 et 1990 en employant des degrs divers la technologie vectorielle.
Si la baisse de prix des processeurs ordinaires les a peu peu cartes, ces architectures pourraient revenir en scne lorsque les progrs de la technologie classique
rencontreront des obstacles srieux, et sappliquer assez bien tous les problmes de
traitement et de cration dimages. Dailleurs le dveloppement extraordinaire des
jeux vido, qui sont aujourdhui (en 2013, comme en 2002 pour la premire dition
de ce texte) lun des aiguillons les plus aiguiss de la recherche micro-lectronique,
a ncessit la conception de processeurs graphiques poustouants qui recyclent pas
mal de technologie vectorielle.

9.1.2 Architectures cellulaires et systoliques


Le modle SIMD pouss son extrme donne le modle cellulaire, conu pour
exploiter un paralllisme de donnes massif : on a toujours un processeur par donne,
les processeurs sont trs simples mais ils se comptent par dizaines de milliers. Il y eut
surtout des prototypes de laboratoire, except le premier modle de la Connection
Machine de lentreprise modestement nomme Thinking Machines Corporation. Cet
ordinateur, dot de 65 536 processeurs, chacun anqu dune mmoire locale de
65 536 bits, avait t conu par Daniel Hillis, un tudiant en intelligence articielle au
MIT et ralis grce une commande du DoD (ministre de la Dfense amricain). Il
sen vendit une vingtaine dexemplaires (dont deux en France) pour un cot unitaire
quivalent une dizaine de millions de dollars.

Architectures rvolutionnaires

213

Une variante du modle cellulaire est lordinateur systolique, qui exploite en


outre un paralllisme de ux de donnes : un vecteur de donnes passe par des
processeurs successifs qui correspondent des tapes successives de calcul et qui
eectuent chacun un type dopration.
Il convient galement de mentionner la conception et la ralisation de processeurs systoliques spcialiss pour certaines applications, notamment la comparaison de squences biologiques. La plupart de ces processeurs, par exemple le rseau
systolique linaire SAMBA de 256 processeurs pour la comparaison de squences
biologiques dvelopp par Dominique Lavenier lIRISA de Rennes, implmentent
lalgorithme classique de Smith et Waterman (un algorithme dit de programmation
dynamique ).
La comparaison de squences biologiques est une comparaison inexacte : il sagit
de savoir si deux chanes de caractres reprsentant deux squences dADN (lalphabet est ATGC) ou deux squences de protines (lalphabet est alors plus vaste
pour reprsenter les vingt acides amins et quelques autres informations) sont sufsamment semblables, au prix de quelques disparits de caractres (de possibles
mutations), de quelques dcalages (insertions ou dltions).
Le systme est constitu de plusieurs processeurs capables surtout de comparer
deux caractres entre eux. Les processeurs sont disposs en srie ; sil y en a cent on
peut placer dans la mmoire locale de chacun deux un caractre dune squence de
cent caractres que lon veut tudier en la comparant une collection de squences
connues par ailleurs. On fait dler les squences de la collection (gnralement
nomme banque) dans les processeurs qui dtiennent la squence tudie (la cible).
Il nest pas possible dexposer ici le dtail de lalgorithme, mais cette architecture
est trs bien adapte cet algorithme. Malheureusement elle est limite un seul
algorithme.

9.1.3 MIMD (Multiple Instructions Multiple Data)


Les machines MIMD sont des ordinateurs capables dexcuter simultanment
de nombreuses instructions quelconques appliques des donnes galement quelconques. En fait il y a de multiples processeurs qui se partagent une mmoire unique,
parfois ils ont chacun en plus une mmoire locale, quelquefois ils nont quune mmoire locale. Linterconnexion de tous ces processeurs, leur synchronisation et le
maintien de la cohrence de la mmoire partage posent des problmes absolument
passionnants de conception du matriel et du systme dexploitation : une fois ceuxci rsolus il reste programmer tout a, et cest l quachoppe lambition de ces
tentatives. La complexit de la programmation est telle que le temps quelle absorbe
sut aux processeurs ordinaires pour combler lcart de performance que larchitecture MIMD tait cense creuser. Ces architectures connatront une nouvelle faveur
lorsque la courbe inexorable du progrs des processeurs de von Neumann sinchira.
Parmi les ralisations MIMD les plus acheves on retiendra les dernires
Connection Machines de Thinking Machines Corporation, entreprise disparue
durant les cruelles annes 1990. Citons aussi les Transputers de la socit
britannique Inmos, destins former les lments de base darchitectures plus

214

Au-del du modle de von Neumann

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.

9.2 Architectures rformistes


Parmi les direntes rformes apportes larchitecture de von Neumann pour en
amliorer les performances tout en conservant un comportement extrieur apparent
identique, la plus importante par ses consquences est peut-tre la substitution la
mmoire centrale unique dune hirarchie de mmoires de temps daccs dcroissants,
depuis le cache de niveau 1 incorpor au processeur jusqu la mmoire auxiliaire
de pages sur disque : mais cette notion de hirarchie de mmoire dpasse le cadre
du prsent chapitre et elle est aborde dans plusieurs chapitres du corps de cet
ouvrage. Nous examinerons ici les architectures en pipe-line et super-scalaires.
Mais auparavant nous devons donner un peu plus de dtails sur le droulement des
instructions que nous ne lavions fait la sous-section 2.4.1.

9.2.1 Squence dexcution dune instruction


Dans lexpos du principe de lordinateur la sous-section 2.4.1 nous avons considr chaque instruction machine comme une opration indivisible dans le temps,
atomique, et il en est bien ainsi selon von Neumann. En fait la plupart des instructions sont eectues selon une squence temporelle identique et rgulire dont nous
allons exposer un exemple.
Lexcution des instructions successives de notre architecture a lieu selon la squence suivante. Notons que cet exemple, pour une raison que nous allons voir,
postule des instructions format xe.
1. Le Britannique C. Antony R. Hoare est lorigine de quelques contributions de premier
plan. Des tudes universitaires de tonalit plutt littraire lui ont donn loccasion de partir en
stage en 1960 dans le laboratoire de Kolmogorov lUniversit de Moscou pour travailler sur un
projet de traduction automatique. Pour raliser un dictionnaire lectronique ncessaire ce projet
(par ailleurs vite abandonn) il inventa lalgorithme de tri Quicksort que tout tudiant en
informatique se doit davoir tudi en dtail et programm. Ce stage lui avait donn le got de la
programmation, mais, comme il le raconte lui-mme avec humour, il eut la chance que sa formation
initiale lui fermt les portes du UK National Physical Laboratory, et il entra dans lindustrie. Cest
l quil eut loccasion de participer au dveloppement de systmes dexploitation, domaine pour
lequel il labora la mthode des moniteurs de Hoare an de contrler les accs concurrents et
exclusifs des ressources partages, mthode reprise pour les threads du langage Java, et la thorie
des processus squentiels communicants, encore aujourdhui le seul modle complet et cohrent qui
excde rellement le modle de von Neumann.

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

Au-del du modle de von Neumann


FETCH

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

Au-del du modle de von Neumann

line cale (to stall). La prdiction de branchement consiste essayer de savoir


lavance, par lexamen anticip du texte du programme, si un branchement va avoir
lieu, et dans ce cas modier lordre des instructions pour annuler le branchement.
Dans le cas dune section de programme rptitive, lhistorique des excutions permet
de savoir quels sont les branchements les plus probables et de rorganiser le texte
du programme pour que le cas le plus frquent se droule sans branchements. En
dsespoir de cause on peut recourir la technique du branchement retard qui
consiste insrer une instruction nulle derrire le branchement, ce qui vite davoir
commencer des instructions quil faudra annuler : ceci nest jamais ncessaire dans
notre exemple de pipe-line cinq tages, mais peut ltre avec un plus grand nombre
dtages ; dans ce cas la dtection de branchement pourrait intervenir aprs que les
instructions suivantes auront modi des registres, quil faudrait alors restaurer
leur valeur prcdente, ce qui serait extrmement complexe.
Les auteurs de compilateurs sont aussi mis contribution dans la lutte contre les
branchements. Ils sont invits produire du code machine aussi exempt de branchements que possibles, anticiper les cas les plus probables pour leur rserver lexcution la plus linaire possible. videmment ces eorts ne russissent pas toujours et
il reste des branchements dtecter dynamiquement, cest--dire lors de lexcution
(par opposition une dtection statique, par lexamen du texte du programme).
Limite du pipe-line : les interruptions
La seconde dicult de ralisation dun pipe-line ecace est dune nature voisine
de celle que nous venons dexaminer, mais encore plus redoutable. Nous avons bien
des dicults avec les dbranchements, mais au moins ce sont des vnements internes un programme, un processus et un processeur. Mais quen est-il lorsque
survient un vnement asynchrone, dont le type par excellence est linterruption ?
Dans une architecture traditionnelle, von-Neumannienne de stricte obdience, le
processeur un instant donn excute au plus une instruction. La valeur du compteur
ordinal (PC, eip...) dsigne exactement la limite entre ce qui est dj excut et ce
qui reste excuter. Cest en gnral aprs la terminaison de chaque instruction que
le processeur scrute les registres de contrle des interruptions pour savoir sil y en
a une en attente, auquel cas il dcide de la traiter, ou de ne pas la traiter dailleurs
si les interruptions sont masques ce moment. Le cas des interruptions pour faute
de page est un exemple de situation un peu dirente, o le PC aprs linterruption
doit pointer sur linstruction qui a caus la faute an quelle puisse tre excute
nouveau, la page tant dsormais en mmoire. Le problme est assez bien circonscrit.
Avec une architecture pipe-line, linterruption survient dans un contexte o
plusieurs instructions sont en cours dexcution des stades varis. La valeur du
compteur ordinal ne rend pas forcment dlement compte de la limite entre ce qui
est excut et ce qui ne lest pas. Sans doute, elle donne ladresse de la prochaine
instruction introduire dans le pipe-line, plus probablement que celle de la dernire
instruction excute. Bref, aprs avoir trait linterruption le processeur devra dterminer o il stait arrt dans le pipe-line et trouver un tat bien dtermin pour
redmarrer, ce qui ne sera pas simple.
Nous nentrerons pas dans les dtails de ce problme, qui relve de larchitecture
matrielle plus que du systme dexploitation, mais sachons que pour mieux le cerner
les processeurs modernes ont souvent deux types dinterruptions : les interruptions

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.

9.2.3 RISC, CISC et pipe-line


Lide du pipe-line est apparue assez tt ; lIBM 7030 Stretch (1960), une machine
mots de 64 bits, est considr comme la premire machine pipe-line. Le Stretch
succdait au 704 et devait tre 100 fois plus puissant. Il nen a t construit que seize
exemplaires 2 mais cette machine a reprsent une tape importante avec beaucoup
dinnovations.
Le Control Data 6600, une autre machine novatrice apparue en 1964, considre
comme le premier super-ordinateur et dont larchitecte principal tait Seymour Cray,
comportait aussi une structure de pipe-line, et ses concepteurs avaient compris que
pour quelle fonctionne ecacement il fallait des instructions simples, de longueur
xe, toutes peu prs de la mme dure dexcution, si possible en un cycle. Seymour
Cray poussera ces principes lextrme dans les super-ordinateurs vectoriels quil
construira sous son nom pour Cray Research, et qui furent les plus puissants de leur
poque.
Cette technique du pipe-line et lvolution conscutive des techniques de compilation se sont beaucoup dveloppes avec lapparition la n des annes 1980 des
processeurs architecture RISC (Reduced Instruction Set Computer), par opposi2. La console de lun deux, acquis par le CEA, gure dans les rserves du Muse National des
Techniques au Conservatoire National des Arts et Mtiers, do elle est parfois extraite pour des
expositions temporaires.

220

Au-del du modle de von Neumann

tion la mode prcdente rtrospectivement baptise CISC (Complex Instruction


Set Computer).
Les machines CISC qui ont connu leur apoge au dbut des annes 1980 (VAX
de Digital Equipment Corporation, 68000 de Motorola) avaient un jeu dinstructions trs vaste (plus de 300 pour le VAX) et trs complexe, avec des instructions
de longueurs direntes, et mme parfois de longueur variable selon les oprandes.
La richesse du jeu dinstructions tait cense faciliter la tche des programmeurs
qui utilisaient le langage assembleur et, surtout, des auteurs de compilateurs pour
langages volu, en leur fournissant des instructions machine qui ressemblaient dj
du langage volu, plus facile et maniable pour le programmeur. Dailleurs le langage C, langage volu de bas niveau (on a pu le qualier dassembleur portable,
la notion de portabilit dsignant laptitude fonctionner sur des ordinateurs darchitectures direntes), est assez largement inspir de lassembleur des ordinateurs
PDP, anctres des VAX.
Cette richesse et cette complexit du jeu dinstructions avaient bien sr un cot
en termes de complexit et de lenteur du processeur. Le risque tait notamment
que les instructions simples (chargement de registre depuis la mmoire, copie de registre vers la mmoire, addition registre registre) soient condamnes sexcuter
aussi lentement que les oprations complexes (copie de zone mmoire zone mmoire de longueur variable, oprations complexes en mmoire). Le VAX notamment
nesquivait gure ce risque.
Dans la seconde moiti des annes 1970 des chercheurs ont fait des statistiques
sur la composition en instructions des programmes en langage machine, soit quils
aient t directement crits en assembleur, soit quils aient t produits par un compilateur. Citons notamment les travaux de D.A. Fairclough, (A unique microprocessor
instruction set, IEEE Micro, mai 1982 [27]). Ils constatrent dabord que 43% des instructions taient des dplacements de donnes dun endroit un autre, que le quart
des instructions taient des branchements, ensuite que pour chaque programme le
nombre dinstructions utilises tait trs rduit, enn que seules les instructions les
plus simples taient largement utilises. Une autre constatation tait que les oprations de loin les plus coteuses taient lappel de sous-programme (un programme
lance lexcution dun autre programme en lui communiquant des paramtres) et le
retour dun sous-programme au programme principal.
Sur la base de ces constatations ils prconisrent de concevoir des processeurs
avec un jeu rduit dinstructions plus simples. La notion de processeur RISC tait
ne, et le premier processeur de ce type, lIBM 801, fut ralis par John Cocke en
1979. La socit MIPS, fonde par John Hennessy, pionnier du RISC lUniversit
Stanford, fut cre en 1985. Hewlett-Packard fut le premier grand constructeur dordinateurs raliser toute sa gamme en architecture RISC en 1986. Sun et Digital
Equipment suivirent. Le livre emblmatique de la rvolution RISC, Computer architecture : a quantitative approach [31], a t crit par John L. Hennessy, larchitecte
des processeurs MIPS, et David A. Patterson, originaire du campus de Berkeley, larchitecte des processeurs SPARC de Sun. Les processeurs MIPS ont t les premiers
dfricher la voie, et les plus hardiment innovateurs : nous lavons vu au chapitre 4
propos de lutilisation du TLB. Il faudrait ajouter ce rpertoire Richard L. Sites,
larchitecte des processeurs Alpha de Digital.

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.

9.2.4 Micro-code : le retour


Le micro-code tait un lment architectural intermdiaire entre le logiciel et le
matriel, caractristique des processeurs CISC, peu prs disparu sur les processeurs
RISC. En fait il sagissait dune couche de logiciel de trs bas niveau qui simulait
certains lments de matriel pour les prsenter au logiciel. Ainsi larchitecture 360
comportait 16 registres gnraux, mais les modles les plus petits comme le 360/20
nen avaient que deux (un accumulateur et un registre). La couche de micro-code,

222

Au-del du modle de von Neumann

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

Figure 9.1 : Modle de lexcution super-scalaire.

Les instructions sont dcodes lavance et emmagasines dans le buer,


qui est en fait un jeu de registres. Ds quune unit dexcution se libre,
une instruction est extraite du buer pour tre excute. Larchitecture
super-scalaire de la gure 9.1 peut excuter quatre instructions par cycle.
Si de plus le pipe-line a divis le temps de cycle par trois, la combinaison
de ces deux techniques a multipli la vitesse de notre processeur par 12
technologie micro-lectronique constante. videmment, ceci est vrai en labsence
de dpendances entre les donnes manipules par les instructions successives,
parce que si le pipe-line introduisait des problmes en cas de branchement, le
traitement super-scalaire introduit des risques de collisions de donnes. Supposons une machine seize registres, deux units dexcution et le programme suivant :

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

Le conit de donnes est le suivant : linstruction 3 charge le registre R8 avec


la valeur contenue ladresse mmoire COUNT. Linstruction 4 eectue la multiplication des contenus des registres R8 et R2 et crit le rsultat dans R3. Lcriture
rigoureusement dle von Neumann de notre programme stipule une excution
squentielle, linstruction 4 suit linstruction 3 et utilise dans R8 la valeur que cette
dernire y aura dpose.
Si nous lanons linstruction 3 dans lunit dexcution 1 et, simultanment,
linstruction 4 dans lunit dexcution 2, quelle sera la valeur du contenu de R8
utilise par linstruction 4 ? Celle qui rsulte de lexcution de linstruction 3, ou celle
quil contenait auparavant ? La rponse cette question est indtermine, et pour
maintenir la smantique dune machine de von Neumann le processeur doit contenir
une logique capable de dtecter ce problme et de dcider de ne pas excuter ces deux
instructions simultanment, ce quillustre notre gure. Cette dtection doit avoir lieu
dynamiquement, la vole, pour chaque excution de cette squence dinstructions.
Lvitement des conits de donnes complique le circuit et diminue le bnce
attendu de larchitecture super-scalaire. Ce bnce reste nanmoins susant pour
que tous les processeurs modernes utilisent ces techniques, mme au prix dune
complexit proprement diabolique. La section suivante nous montrera comment les
architectes de processeurs se sont dbarrasss de cette complexit et ont pass la
patate chaude aux auteurs de compilateurs.
Bien videmment, les dicults que nous avons signales la section 9.2.2 au
sujet du pipe-line et qui procdent de la survenue dvnements asynchrones (les
interruptions) dans un contexte o plusieurs instructions sont en cours dexcution
des stades varis dachvement, ces dicults se retrouvent encore aggraves par
lexcution super-scalaire, puisque ce modle respecte encore moins lordre dexcution que le pipe-line.

9.2.6 Architecture VLIW (Very Long Instruction Word)


Les modles dexcution en pipe-line et super-scalaire ont lavantage considrable
sur les architectures SIMD ou MIMD de prserver la smantique de larchitecture
de von Neumann, ce qui permet de continuer utiliser les langages de programmation traditionnels avec les mthodes et les comptences qui existent et qui sont
prouves. Le prix payer pour cet avantage, cest davoir faire de la prdiction
de branchement, de la prvention de conits de donnes et du traitement dinterruptions imprcises, et nous avons vu que ce ntait pas prcisment simple.
Lespoir forcment est n de bncier des avantages sans avoir supporter les
inconvnients. La dirence entre le monde de la technique et celui des relations
humaines, cest que dans le premier une telle ide est vertueuse.

224

Au-del du modle de von Neumann

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.

Liasse (bundle) IA-64


Instruction
(41 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

Au-del du modle de von Neumann

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

damorage (boot). Quant la programmation en assembleur, elle est rserve aux


auteurs de systmes dexploitation et aux auteurs de compilateurs. Limmense majorit des programmes sont crits de nos jours en langage volu, et sont traduits en
assembleur, puis en langage machine, par un compilateur. Beaucoup de programmes
embarqus ( bord davions, de voitures, de fours micro-ondes, de tlphones portables) taient encore il y a peu crits en assembleur pour des raisons de performance
et dencombrement : les progrs de la micro-lectronique permettent aujourdhui de
les crire dans des langages hyper-volus tels que Java ou Ada. Certains compilateurs ne sont pas crits en assembleur et ne produisent pas directement de lassembleur : il traduisent le langage source auquel ils sont destins vers un langage cible
de plus bas niveau, qui dispose lui-mme dun compilateur vers lassembleur, appel
compilateur en mode natif.
Pour nous rsumer, le lecteur qui se sent irrsistiblement attir par les subtilits
de la programmation en assembleur pour une architecture VLIW doit se tourner
vers lcriture de compilateurs ou de systmes dexploitation. Il naura pas le
regretter, ce sont des domaines passionnants, en volution rapide et o le chmage
ne menace pas. Le lecteur que la complexit de ces techniques rebuterait peut tre
rassur : lauteur de programmes en langage volu na pas se proccuper de
dtails techniques daussi bas niveau, les langages modernes procurent tous leurs
programmeurs un niveau dabstraction qui leur permet de se consacrer au problme
programmer plutt quaux dtails techniques de lordinateur.

Chapitre 10 Machines virtuelles et micro-noyaux

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

10.1 Notion de machine virtuelle


Les chapitres qui prcdent ont montr plusieurs reprises que la conception
dune architecture informatique consistait le plus souvent en grande partie organiser des niveaux dabstraction dirents an de donner une intelligibilit suprieure

230

Machines virtuelles et micro-noyaux

un mcanisme, ou au contraire pour le dissimuler aux yeux de lutilisateur. Nous


pouvons subsumer certains de ces artefacts sous la notion de machine virtuelle.
Lexemple le plus simple de machine virtuelle est donn par certains langages
de programmation interprts, qui fonctionnent nalement comme des calculettes :
lutilisateur entre au clavier une phrase du langage, linterprteur value la phrase et
donne la rponse. Linterprteur se prsente son utilisateur comme un ordinateur
dont le langage machine serait le langage quen fait il traduit la vole. Il est une
machine virtuelle du langage considr. Basic, Scheme, Python, le shell Unix sont
des langages interprts, par opposition aux langages compils comme C, Scheme
(oui, il peut tre les deux), Ada, pour lesquels il faut dabord crire le texte du
programme jusquau bout, puis le soumettre un traducteur appel compilateur
qui le traduit en langage machine.
Le systme dexploitation prsente une mtaphore de lordinateur quil anime
lutilisateur : celui-ci, en soumettant des phrases du langage de commande (ou
en agissant sur les objets de linterface graphique), agit symboliquement sur des
abstractions, et dclenche ainsi des actions relles dobjets matriels. On peut dire
que le systme dexploitation exhibe une machine virtuelle qui reprsente de faon
stylise et elliptique la machine relle, dont les aspects les plus sordides sont ainsi
dissimuls.

10.1.1 mulation et machines virtuelles


Assez tt lide sest fait jour quune telle possibilit pourrait tre mieux exploite : puisquun systme dexploitation est capable de donner une mtaphore de la
machine sous-jacente, pourquoi ne pourrait-il pas reprsenter une autre machine,
quil simulerait ? Un tel programme est appel un mulateur, dont on dit quil mule
la machine simule. Ainsi aux temps prhistoriques IBM fournissait un mulateur
7090 pour le systme 360 qui permettait dexploiter sur ce dernier les programmes
crits pour le premier. Des mulateurs dUnix sur VAX sous VMS ont exist, ainsi
que des mulateurs de VMS sous Unix. Apple et dautres socits ont produit des
logiciels qui mulent un PC sous Windows sur un Macintosh. Linverse existe aussi
dailleurs. Bref, il est ainsi possible dutiliser le systme et les logiciels destins
un ordinateur que lon ne possde pas, cest pratique mais souvent les performances
sont assez mdiocres parce quil faut excuter en fait le code de trois systmes : le
vrai systme de la vraie machine, lmulateur et le systme mul. Mais au l des
ans les techniques dmulation ont atteint une perfection diabolique, et il est mme
possible dexcuter sous Linux ou MacOS des logiciels de jeux destins Windows,
exercice particulirement dlicat puisquil faut actionner des interfaces graphiques
complexes, des manettes de pilotage, joysticks, manches balai 1 etc.
La socit VMware Inc. de Palo Alto en Californie a dvelopp une technologie
trs labore dmulation gnralise : son logiciel de machine virtuelle, par exemple,
1. Il faut savoir quaujourdhui ce sont les logiciels de jeux lectroniques qui sont le moteur de
lindustrie du microprocesseur. Les processeurs actuels sont en eet trs susants pour satisfaire
tout usage professionnel raisonnable en dehors de certains domaines scientiques assez spcialiss
tels que la mcanique des uides, la sismographie, la mtorologie, lanalyse gnomique, etc. Mais
lavidit des jeux est sans limite, et le march des jeux est plus vaste que celui de locanographie
ou des soueries numriques.

Notion de machine virtuelle

231

peut fonctionner sur un PC processeur Intel sous Linux, et accueillir un systme


hberg, par exemple Windows. Tous les accs de Windows au matriel sont intercepts de telle sorte que le systme hberg ne puisse pas faire la distinction entre
un priphrique rel et labstraction prsente par la machine virtuelle. Lmulateur
peut dailleurs accueillir simultanment plusieurs machines virtuelles tournant sous
des systmes dirents. Cest particulirement utile pour un dveloppeur qui veut
tester ses programmes sur plusieurs types de plateformes.

10.1.2 De CP/67 VM/CMS


La technologie mise en uvre par VMware remonte en fait 1967, date de lancement dune machine dont nous avons dj parl la section 4.4.8, lIBM 360/67,
dot de l hyperviseur CP/67 capable de supporter plusieurs machines virtuelles
360/65 tournant sous des versions de systme direntes. On voit bien que ce type
de mta-systme a t invent par les dveloppeurs de systmes (en loccurrence
ceux du Cambridge Research Lab. dIBM) pour se faciliter la tche en disposant de
systmes de test sans avoir rclamer leur management des machines supplmentaires, dont le prix lpoque se comptait en millions de dollars. CP/67 a engendr
VM/CMS, quIBM a commercialis pendant les annes 1970-1980. Lide de CP/67
et de VM/CMS tait un micro-systme trs dpouill, fournissant des fonctions trs
lmentaires daccs au matriel, et laissant la complexit au systme des machines
virtuelles accueillies. Ce dpouillement avait dailleurs des avantages, tel point
que certains clients utilisaient VM/CMS tout seul, sans machine virtuelle : ils disposaient ainsi dune machine temps partag simple et bon march. Cest peut-tre
pour cette raison quIBM a laiss mourir VM/CMS, qui rvlait que la complexit
et la lourdeur de ses autres systmes tait peut-tre inutile...

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

Machines virtuelles et micro-noyaux

un rsultat dans un langage intermdiaire appel bytecode. Ce langage intermdiaire


est le langage dune machine virtuelle Java (JVM), et il sut de soumettre le bytecode linterprteur de la JVM pour que le programme sexcute 3 .
Tout lintrt de la dmarche rside dans le fait que la JVM est normalise,
cest--dire quun programme Java compil peut tre excut tel quel sur nimporte
quelle plate-forme (compile once, run anywhere), la dirence dun programme en
langage classique qui doit subir une compilation spcique pour chaque architecture
de machine cible et chaque systme. La JVM est conue pour tre peu encombrante
et scurise. Votre navigateur WWW comporte une JVM embarque. Ainsi, un
serveur WWW peut envoyer un petit programme Java (en anglais applet, soit en
franais appliquette, ou aplte) votre navigateur WWW et celui-ci saura lexcuter
sur votre machine. Cela sappelle du code mobile et en 1995 ctait quand mme assez
rvolutionnaire.
Cette possibilit pour un serveur dexcuter du code sur une machine distante
pose certes des problmes de scurit. Pour viter les malveillances les plus videntes la JVM excute les apltes dans un bac sable (sandbox) qui les isole
de lenvironnement local. En fait Java a caus moins dincidents de scurit que
de plantages de navigateurs ou de systmes un peu fragiles ou que de chargements
interminables de pages HTML passionnantes. La technologie est certes perfectible.
En fait la principale cause du dsenchantement relatif que subit Java aujourdhui
rside dans la politique assez opaque du propritaire de la technologie (aujourdhui
Oracle, qui a rachet Sun) qui modie arbitrairement les rgles du langage et de
son implmentation, ce qui dcourage les dveloppeurs. Et le premier charme puis
on redcouvre cette chose dplorablement banale : raliser les calculs sur un serveur
central correctement administr a quand mme beaucoup davantages.
Quoi quil en soit, Java et sa JVM connaissent un grand succs parce que ce systme est assez facile installer dans toutes sortes de petits processeurs qui peuplent
les tlphones portables, les machines laver, les routeurs dappartement, les voitures, les camscopes, les cartes puce, etc., et cela renouvelle entirement la programmation de ce genre dobjets, qui tait auparavant de la magie noire. Les applications destines au systme mobile Android reposent pour la plupart sur un
systme Java dot dune machine virtuelle particulire, Dalvik. Les activits permettent mme la ralisation de mini-systmes dexploitation en Java. Signalons aussi
lapparition de compilateurs pour dautres langages que Java vers le bytecode, ce qui
diversie les moyens de crer des apltes. Ainsi le compilateur Bigloo permet dcrire
ses apltes en Scheme.

10.2 Machines virtuelles systme


La prsente section est consacre aux machines virtuelles qui permettent dmuler
un systme informatique complet (par opposition aux machines virtuelles langage,
comme celle de Java, dcrite ci-dessus).
3. Cette technique de production dun langage intermdiaire interprt nest pas indite, elle a
t utilise par Pascal UCSD, LeLisp, Emacs Lisp, CAML...

Machines virtuelles systme

233

10.2.1 Que veut-on virtualiser ?


Ainsi que nous lavons vu lors des premiers chapitres de ce livre, on peut rsumer le rle du systme dexploitation en disant quil est de prsenter lutilisateur
dun calculateur (utilisateur qui peut dailleurs tre un autre programme) une vue
simplie et stylise du calculateur sous-jacent. En eet, le systme dexploitation
dun ordinateur physique doit eectuer des oprations sur des disques durs, crans,
imprimantes et autres dispositifs matriels, dits priphriques, dont il existe une
grande varit. Il est indispensable dinterposer une couche dabstraction entre ces
matriels et lutilisateur : je peux recopier le texte de mon programme sur mon
disque dur sans savoir combien celui-ci possde de pistes et combien il peut stocker
de caractres par piste. Le systme dexploitation me cache ces dtails, qui nont
aucun intrt pour moi, mais que lingnieur qui crit le sous-programme du systme charg dcrire sur le disque doit connatre (ce sous-programme se nomme un
pilote dappareil priphrique, en anglais driver). Incidemment, la prise rseau est
un priphrique comme un autre.
De mme, le systme dexploitation me cache les mthodes complexes grce auxquelles je peux excuter simultanment sur mon ordinateur plusieurs logiciels : naviguer sur le Web, y copier des donnes pour les recopier dans la fentre du traitement
de texte, imprimer un autre texte, etc.
En fait, tous les autres programmes sont des sous-programmes du systme dexploitation.

10.2.2 Pratique des machines virtuelles


Dveloppons les ides de la section 10.1.1 ci-dessus pour dcrire les usages modernes des machines virtuelles systme.
Dans le cas simple, sans recours la virtualisation, il y a un ordinateur, sur
cet ordinateur est install un systme dexploitation, et ainsi on peut excuter des
programmes sous le contrle de ce systme dexploitation, qui sinterpose entre le
programme et le matriel de lordinateur. Le matriel, ce sont des appareils qui sont
capables dmettre et de recevoir des signaux lectroniques qui commandent leur
fonctionnement.
Maintenant, instruit par les chapitres prcdents, je peux crire un logiciel qui
se comporte en tout point comme un autre ordinateur (qui le simule, ou qui lmule,
selon le jargon en usage). Et ce simulacre dordinateur peut accueillir un systme
dexploitation, qui lui mme permettra lexcution de logiciels. Ce logiciel qui fait
semblant dtre un ordinateur, on lappelle une machine virtuelle. Sur un ordinateur
physique, je peux ainsi avoir plusieurs machines virtuelles qui mulent plusieurs
autres ordinateurs physiques et/ou plusieurs autres systmes dexploitation. Cest
trs pratique pour les usages suivants :
Tester un nouveau systme sans mobiliser un ordinateur cet eet.
Avoir plusieurs systmes actifs simultanment sur le mme ordinateur : Linux,
OpenBSD, Windows...
Il est mme possible davoir une machine virtuelle qui simule un ordinateur
physique dun modle dirent de la machine daccueil, avec un jeu dinstructions (une architecture matrielle) dirent(e).

234

Machines virtuelles et micro-noyaux

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.

10.2.3 Dirents niveaux de virtualisation


Comme la virtualisation repose sur du logiciel qui simule du matriel, limitation
peut se faire de diverses faons, selon le niveau dindpendance souhait pour nos
machines virtuelles :
Sil faut simplement des systmes isols les uns des autres sur la mme machine physique, il existe des systmes de cloisonnement qui procurent chaque
logiciel serveur un environnement qui donne lillusion de disposer dune machine prive : containers Linux, jail FreeBSD. Il y a en fait un seul systme
dexploitation en service, mais chaque serveur fonctionne comme sil tait
seul, ce qui lui confre une scurit accrue (sauf dfaillance du logiciel).

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).

Machines virtuelles systme

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).

Ce nest que si lon veut simuler sur un ordinateur physique darchitecture


A une machine virtuelle darchitecture B quil faudra simuler sur A, par du
logiciel, le jeu doprations lmentaires de B, ce qui aura un cot lev en
termes de performances. QEMU est un logiciel libre dmulation de processeur, qui ore ce type de possibilit, par lintermdiaire dun hyperviseur tel
que Xen ou KVM.
Machine virtuelle

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.

Toutes ces machines virtuelles peuvent bien sr communiquer entre elles et


avec le vaste monde par un rseau... virtuel videmment ! mais qui doit nanmoins tablir des passerelles, voire des ponts, avec le rseau rel, par lintermdiaire de routeurs et de commutateurs virtuels : tous les systmes de
virtualisation modernes fournissent ce type daccessoire, ds lors que lon sait
virtualiser, on peut tout virtualiser.

236

Machines virtuelles et micro-noyaux

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.

10.2.4 Administration dun systme informatique


Pour maintenir en tat de marche correct un ordinateur (rel ou virtuel), un
certain nombre de tches doivent tre eectues rgulirement, notamment :
mise jour du systme dexploitation et des logiciels partir des nouvelles
versions fournies par les diteurs ;
mise jour des bases de donnes des systmes anti-virus et anti-intrusion ;
mise jour de la base de donnes des utilisateurs autoriss pour tenir compte
des arrives et des dparts ;
consultation quotidienne des journaux dincidents ;
sauvegarde des donnes ;
vrication de la disponibilit dun espace de stockage de donnes susant ;
application des corrections de scurit pour supprimer les vulnrabilits
connues.
Ces oprations (la liste nest pas complte), que nous dsignerons du terme
d administration systme , peuvent tre en partie automatises, elles sont bien
sr moins absorbantes pour un poste de travail personnel que pour un serveur avec
des dizaines dutilisateurs directs, ou que pour un serveur Web ouvert tous les publics, mais elles constituent une part importante du travail des ingnieurs systme,
que les serveurs soient virtuels ou des machines physiques.

10.2.5 Administration dun systme virtuel teint


Les oprations dadministration du systme dune machine physique supposent
que la machine soit en marche : en eet, la consultation des paramtres du systme, leur modication, les copies de chiers supposent que soient actifs un diteur
de texte, et quelques commandes du systme, et que lon ait accs aux donnes
persistantes sur les disques durs, tout le moins. Machine teinte, rien ne serait
possible.
Il en va tout autrement pour une machine virtuelle : nous avons vu quen fait elle
tait constitue de logiciels et de donnes hberges sur un ordinateur physique. De
ce fait, machine virtuelle arrte - et condition bien sr que la machine physique
sous-jacente, elle, ne soit pas arrte - il est possible, grce au systme dexploitation
et aux logiciels de la machine physique daccueil, daccder aux paramtres de son
systme et ses donnes. Si lon en connat le format et lorganisation, on pourra
eectuer les oprations dadministration. Enn, cest plus vite dit que fait.
Trois ingnieurs de CA Technologies Hyderabad en Inde et Datchet en Angleterre, Nishant Thorat, Arvind Raghavendran et Nigel Groves, ont mis en uvre
une telle solution dadministration, et ils ont crit dans les Communications of the
ACM 4 , un article qui la dcrit. Ils ont tir parti du fait que les principaux diteurs
de systmes de virtualisation se sont entendus sur des formats de donnes publis.
4. Communications of the ACM, Vol. 56 No. 4, Pages 75-81

Machines virtuelles systme

237

La Distributed Management Task Force (DMTF) 5 a publi lOpen Virtualization


Format, ou OVF, une spcication adopte par les principaux diteurs (tels que Citrix, Microsoft et VMware) et accepte comme norme en aot 2010 par lAmerican
National Standards Institute (ANSI) 6 .
Les avantages dune telle solution sont patents : lheure de linformatique en
nuage, o les machines virtuelles se propagent aux quatre coins de lInternet et sy
reproduisent qui mieux mieux, leur appliquer au vol un plan de maintenance est
bien plus dicile que pour un parc de machines physiques sagement ranges dans les
armoires dun centre de donnes. Il est plus facile de travailler sur limage physique
qui a servi engendrer toutes ces machines virtuelles, et qui est gnralement stocke
dans un endroit centralis bien identi.
Nos auteurs ne manquent pas de souligner que cette solution prsente aussi des
inconvnients (mineurs) : certaines oprations qui ncessitent lobservation de la
machine en marche ne sont pas possibles, et il reste du travail faire pour que lon
puisse utiliser les mmes procdures dadministration sur les machines arrtes et
sur les machines en marche.

10.2.6 Dplacer une machine virtuelle dans le rseau


Crer des machines virtuelles et les dplacer est facile et utile, aussi les grands
centres dhbergement administrent-ils des dizaines (voire des centaines) de milliers
de machines virtuelles sur les milliers de serveurs physiques, et au gr des besoins il
faut les dplacer dun groupe de serveurs un autre.
Pour organiser le rseau au sein du centre dhbergement, on a le choix entre la
couche 2 (Ethernet) ou la couche 3 (IP).
Sur un rseau local Ethernet
Organiser le rseau du centre dhbergement au niveau de la couche 2 (Ethernet)
est le plus facile administrer... jusqu la catastrophe.
explosion du domaine de diusion (broadcast) ;
calcul laborieux de lalgorithme de larbre recouvrant (spanning tree), qui
permet de dterminer une topologie sans boucle dans le rseau ;
explosion du nombre de Rseaux virtuels (VLAN) ;
ou promiscuit dangereuse de niveau 2.
Dans un rseau IP avec du routage
Pour viter les inconvnients de la couche 2, on peut organiser le rseau du centre
dhbergement au niveau de la couche 3 (IP). L, plus de problme de promiscuit,
on a un vrai rseau avec du routage, ce qui, il faut le noter, demande de vraies
comptences rseau. Avec un rseau de couche 3, il est mme possible dtendre
lespace de rpartition des machines virtuelles dautres sites, gographiquement
distants.
Cette solution de couche 3 a nanmoins des inconvnients :
5. http://dmtf.org/
6. http://ansi.org/

238

Machines virtuelles et micro-noyaux

lorsquune machine virtuelle se dplace dun sous-rseau un autre, elle


change dadresse IP, ce qui est gnant pour de nombreuses applications ;
un rseau rout demande un niveau de comptence plus lev pour les administrateurs ;
le routage consomme des ressources de calcul et dinfrastructure.
Combiner la couche 2 et la couche 3 ?
Le protocole VXLAN (Virtual eXtensible Local Area Network) 7 permet, comme
son nom lindique, de transporter de lEthernet (couche 2) dans de lIP (couche 3), ce
qui vise rsoudre les dicults voques aux deux sections prcdentes, notamment
lorsquil sagit de dplacer une machine virtuelle dans le rseau.
Les trames Ethernet sont encapsules dans des datagrammes IP. On leur ajoute
une entte VNI (Virtual Network Identier), ce qui simule un cble virtuel .
Le protocole de rsolution dadresses (ARP) fonctionne sur un rseau multicast.
VXLAN est ltat de draft lIETF.

10.3 Informatique en nuage (Cloud Computing)


10.3.1 Une vritable innovation technique
Linformatique en nuage (en anglais Cloud Computing, traduit infonuagique par
les Canadiens francophones) est un service dhbergement informatique en rseau
dont la premire apparition fut le lancement par Amazon de son ore Amazon Web
Services (AWS) en 2006. Il sagissait alors pour Amazon de commercialiser la puissance de calcul inutilise des serveurs dploys de par le monde pour son propre
usage, et qui ntaient utiliss qu 10% de leur capacit, an de pouvoir faire face
aux points saisonnires, notamment lors des ftes de n danne..
Lide dune ore de services informatiques dtache, grce au rseau, des caractristiques techniques de son implmentation avait t formule quelques annes
plus tt, par exemple par des chercheurs tels que Michel Volle 8 .
Loriginalit de linformatique en nuage par rapport aux ores traditionnelles
dhbergement de donnes, de sites Web ou de serveurs de calcul repose sur les cinq
caractristiques suivantes :
dploiement et arrt des services la demande, en self-service, gnralement
par une interface Web, quasi instantanment ;
accs par rseau haut dbit ;
mutualisation de ressources non localises : infrastructures, rseau, logiciel,
stockage ;
allocation et dsallocation rapide des ressources ( lasticit ) ;
facturation la consommation, typiquement heure par heure.
Cette souplesse est permise par la disponibilit de quatre technologies dj bien
connues, mais dont les performances ont accompli rcemment des progrs consid7. http://en.wikipedia.org/wiki/Virtual_Extensible_LAN
8. http://www.volle.com/ouvrages/e-conomie/table.htm,
http://www.volle.com/ouvrages/informatique/informatique1.pdf

Informatique en nuage (Cloud Computing)

239

rables : linformatique distribue, un rseau haut dbit omniprsent, le systme de


noms de domaines (DNS), et des plates-formes ecaces pour machines virtuelles :
la ncessit dun rseau rapide et omniprsent est vidente ;
la disponibilit de systmes ecaces de virtualisation, dont une analyse dtaille sera donne ci-dessous, elle permet de dployer facilement, et mme
dans certains cas automatiquement, de nouveaux serveurs la demande, alors
que sil sagissait de machines physiques il y faudrait touteune logistique de
transport, de distribution dnergie et dinfrastructure rseau ;
lusage de techniques perfectionnes de gestion du DNS confre cette rpartition dans lespace (physique et topologique) la souplesse ncessaire ;
une fois que lon a dploy de nombreuses machines virtuelles, les principes de
linformatique distribue sont indispensables pour les faire cooprer de faon
cohrente 9 .

10.3.2 Trois formes pour linformatique en nuage


IaaS (Infrastructure as a service) : le client se voit livrer une machine (virtuelle) nue, cest--dire sans systme dexploitation install, mais avec de
lespace disque et une ou plusieurs interfaces rseau (virtuelles) ; il installe
sur cette machine le systme et les logiciels de son choix, et fait son aaire
des mises jour, de scurit notamment ;
Paas (Platform as a service) : le client reoit une machine virtuelle dote
du systme dexploitation quil aura choisi sur le catalogue du fournisseur,
ainsi que de quelques programmes utilitaires (base de donnes, serveur Web
par exemple) ; cest le fournisseur qui assurera les mises jour des logiciels
quil aura installs, cependant que le client sera responsable de la gestion des
donnes et des logiciels dapplication quil aura installs lui-mme ;
Saas (Software as a service) : le client reoit les droits daccs un systme
entirement congur avec les logiciels choisis sur le catalogue du fournisseur
(par exemple paie, messagerie, blog, wiki ou gestion nancire), il na plus
qu les utiliser avec ses propres de donnes.
Grce la virtualisation des serveurs et du rseau, lutilisateur de services en
nuage ne sait o se trouvent ni ses donnes, ni lordinateur qui les exploite, et
dailleurs leur emplacement physique peut changer tout instant, mme en cours
de travail.
La plupart des services en rseau destins au grand public ou aux entreprises,
tels que les Google Apps, Facebook, Dropbox, etc., fonctionnent en nuage : on ne
sait o sont ni les donnes, ni les ordinateurs qui les crent et qui les transforment.

10.3.3 Rpartir les services en nuage grce au DNS


Le systme de noms de domaines (DNS) est une technologie complexe, dont
le principe est trs simple(cf. p. 139), cest celui de lannuaire tlphonique : on
cherche un nom, le DNS rpond avec le numro IP qui correspond au nom. Ainsi,
9. Le texte de rfrence ingal sur les principes de linformatique distribue reste le livre de 1985
de Sir Charles Antony Richard Hoare, Processus squentiels communicants, Prentice Hall (Masson
pour la traduction franaise).

240

Machines virtuelles et micro-noyaux

au nom www.laurentbloch.org correspond le numro (on dit plutt ladresse) IP


194.15.166.220.
Il est possible au propritaire du nom www.laurentbloch.org de congurer le
serveur DNS qui fait autorit pour son domaine laurentbloch.org de sorte quau
lieu de rpondre par une adresse unique, il rponde par une collection dadresses,
qui correspondent chacune un serveur (physique ou virtuel) distinct. Ainsi il sera
possible de rpartir les demandes daccs au service entre les dirents serveurs, ce
qui lui procurera une scurit accrue et une rpartition de la charge de travail.

10.4 Les (threads)


10.4.1 Sparer le l dexcution des ressources alloues
Le chapitre 3 a dni la notion de processus et dcrit le comportement de tels
objets ; le chapitre 4 a expliqu la gestion de la mmoire : en fait le processus et son
espace-adresse, que nous avons spars pour la commodit de lexpos, sont indissociables. Le processus, disions-nous, est une entit active constitue dun programme
en cours dexcution et des ressources qui lui sont ncessaires : temps de processeur,
chiers ouverts, espace de mmoire. Nous pouvons isoler conceptuellement laspect
programme en cours dexcution en le dsignant comme un l, au sens de l
de la conversation (en anglais thread). Le terme franais l nest pas trs commode pour traduire thread parce que son pluriel a une graphie ambigu. Lquipe
du projet Chorus a lanc le mot activit , qui ne convient gure ( mon avis), et
nous utiliserons thread (avec un peu de culpabilit). Les attributs qui relvent des
threads, par opposition aux ressources, sont les suivants :
le compteur ordinal (ou compteur de programme, eip sur processeur Intel) ;
ltat courant (actif, dormant, prt ou termin) ;
les registres ;
la pile.
Le processus possde en outre les ressources suivantes :
espace adresse ;
variables globales ;
chiers ouverts ;
processus ls (ls comme liation) ;
interruptions en cours ou en attente ;
donnes comptables.
Il rsulte de cette dnition que le processus est une entit complexe, dcrite par
des tables nombreuses et encombrantes : table des pages plusieurs niveaux, table
des chiers ouverts, etc. Une commutation de contexte entre processus implique
notamment la commutation despace adresse, donc la remise zro du TLB, ce qui
a un impact ngatif lourd sur les performances de la pagination. Le thread, comme
nous allons le voir, est plus lger et maniable, au prix dune plus grande promiscuit
avec les threads rattachs au mme processus.

10.4.2 Dnition des threads


De ces considrations naquit lide quil serait bien davoir des processus avec
plusieurs ls dexcution, ou, si lon voit la question sous langle oppos, davoir

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.

10.4.3 Avantages procurs par les threads


Les threads ainsi dnies orent de nombreux avantages : par exemple les navigateurs WWW font de la multi-thread (multithreading), ce qui permet davoir plusieurs
fentres ouvertes dans lesquelles se chargent simultanment plusieurs pages de donnes, sans encourir le prix de lancement de multiples processus ; on observe bien que
la premire fentre souvre beaucoup plus laborieusement que les suivantes. Et des
processus distincts ne feraient pas laaire, parce quils ne pourraient pas partager
de faon simple le cache mmoire et le cache disque, ni les chiers de signets. En
outre, comme chaque thread dispose de sa propre pile et de son propre tat, si elle
met des demandes dentre-sortie bloquantes (qui la mettent en attente), une autre
10. Incidemment, cette ide nest pas entirement indite. une poque recule (1968) IBM
avait lanc un moniteur transactionnel nomm CICS (Customer Information Control System) ; le
travail dun tel logiciel consistait recevoir des requtes en provenance de milliers de terminaux,
par exemple dans une banque, interroger ou mettre jour la base de donnes, donner la rponse
au terminal. Bien sr il faut viter que les mises jour concomitantes ne se tlescopent et veiller
ce que les temps de rponse ne soient pas trop catastrophiques. Pour des raisons de simplicit
de portage sur des systmes dirents, CICS tait ralis comme un unique gros processus (task
dans le language dIBM) qui ralisait lui-mme (avec une ecacit modeste) le partage du temps
et des ressources entre les dirents travaux attachs aux terminaux. Aux dernires nouvelles CICS
est toujours au catalogue dIBM, des milliers de socits sont spcialises en CICS, 30 millions de
personnes sont assises derrire des terminaux CICS, et cela continue crotre. CICS avait t conu
dans les annes 1960 comme une solution temporaire en attendant que soit termine la ralisation
dun SGBD plus ambitieux (IMS, Information Management System), aujourdhui largement dlaiss
et oubli mme si toujours au catalogue...

242

Machines virtuelles et micro-noyaux

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.

10.4.4 Implmentation des threads


Pour raliser les threads, le concepteur de systme a le choix entre deux possibilits : en mode utilisateur ou en mode noyau.
Threads en mode utilisateur
Les threads sont des objets purement internes au processus, dont le noyau na pas
tre inform. Le processus gre totalement le partage des ressources et la pseudosimultanit entre les threads. Le systme procure au processus une bibliothque
doutils pour assurer cette gestion, notamment pour implanter les piles et les tables
dtat des threads.
Espace utilisateur
activits (threads)

processus

pile

Espace du noyau
table des processus

table
des
activits
(threads)

Figure 10.4 : Threads en mode noyau.

Threads en mode noyau


Le noyau gre les threads : cration, ordonnancement, arrt. Cela consomme
plus de ressources que les threads en mode utilisateur, mais seule la gestion des
threads en mode noyau permet le traitement correct des appels systme bloquants
dans une thread (par exemple une demande dentre-sortie), cas o il faut pouvoir
ordonnancer une autre thread.
11. Dans son livre de systme [11] Samia Bouzefrane observe que les threads ou processus lgers
lancs dans le contexte dun processus reprsentent une bonne ralisation des moniteurs de Hoare
[32].

Micro-noyaux

243

10.4.5 Inconvnients des threads


Les threads permettent une amlioration des performances de certains logiciels,
au prix dune complexit plus grande pour le dveloppeur. Le principal problme
soulev est celui des variables globales. Un programme dune certaine taille, nous
lavons signal la section 3.5, est subdivis en sous-programmes. Nous avons voqu
les variables la section 4.7. Les variables locales dun sous-programme sont aectes
sur la pile si elles sont petites (elles tiennent dans un mot), sinon elles sont aectes
sur le tas mais repres par un pointeur maintenu sur la pile. Comme nous avons
dit que chaque thread disposait de sa propre pile, il ny a en principe pas de risque
quune thread accde une variable locale appartenant une autre. Mais le problme
est plus dicile rsoudre pour les variables globales, visibles de tous les sousprogrammes. Le problme est le mme pour les accs aux chiers. Dans ces deux
cas, les prcautions prendre sont la charge du dveloppeur.
Dautres soucis incombent lauteur du systme : certains sous-programmes de
bibliothque peuvent ne pas tre rentrants, cest--dire que leur comportement sera
erron sils sont appels par un programme alors que le prcdent appel par un autre
programme nest pas termin. La cause la plus courante de ce type de problme vient
de ce que le sous-programme a des variables rserves en dur dans son texte (au
lieu dtre alloues dynamiquement sur le tas) et que ces variables retent ltat du
calcul du premier appel, ce qui sme la confusion lors du second. Pour tre rentrant,
cest--dire apte tre utilis en une copie unique par deux appels concomitants,
un programme doit possder un texte invariant, cest--dire non susceptible dtre
modi lors de son excution. La dsignation des objets externes quil manipule
doit tre extrieure son texte. En bref, tout ce qui est variable doit tre dans les
registres, sur la pile, ou atteint au moyen dune indirection passant par la pile ou
par un registre (incidemment, sous Unix par exemple, les arguments quil reoit du
programme appelant sont sur la pile).
Ainsi, le sous-programme de bibliothque qui excute un appel systme pour allouer une zone de mmoire sur le tas (malloc sous Unix) peut, lorsquil travaille dans
un univers l dexcution unique, laisser temporairement des tables de pointeurs
dans un tat incohrent, puisque sil est interrompu ce sera par un autre processus,
avec un autre espace adresse. Cette assertion cesse de tenir dans un univers threads
multiples... La solution consiste bien sr ncrire que du code rentrant pour les
sous-programmes de bibliothque, mais le monde ne saurait tre parfait...
En fait les dicults dimplmentation des threads sont telles que lon assiste
une relative dsaection pour cette technique dans le monde des dveloppeurs au
prot de techniques telles que la programmation par vnements.

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

Machines virtuelles et micro-noyaux

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

Figure 10.5 : Abstractions du micro-noyau Chorus

lacteur, unit dallocation de ressources ;


lactivit (thread), unit dutilisation de processeur ;
le message, collection de donnes susceptible dtre envoye ou reue par une
porte ;
la porte (port), adresse logique laquelle des messages peuvent tre envoye ;
le site, qui dsigne une machine ventuellement relie dautres sites par un
systme de communication (rseau ou bus).
Au-dessus du noyau les crateurs de Chorus ont dvelopp un ensemble de serveurs destins constituer un sous-systme Unix, tel que reprsent par la gure
10.6. Chaque type de ressource du systme (processus, chier...) est gr par un
serveur systme ddi. Les serveurs peuvent rsider sur des sites dirents : on voit
que Chorus, encore plus que Mach, a t conu dans la perspective de construction
de systmes rpartis. Ce dcoupage du noyau Unix en serveurs modulaires tait trs
intressant tant du point de vue du gnie logiciel (lart de construire de grands systmes informatiques) que de celui de larchitecture. Lentreprise a (partielllement)
achop sur la dicult restituer la smantique du noyau Unix dans un contexte
non monolithique, ainsi que sur des problmes de performances. Tant que lon en
reste un site unique, Chorus implmente des appels de procdures distance (RPC,
pour Remote Procedure Call) lgers, mais cette solution nest disponible que si lon

246

Machines virtuelles et micro-noyaux

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

Rseau (ou bus) de communication


High
Speed
Disk

Figure 10.6 : Serveur UNIX sur un groupe de sites Chorus

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

Figure 10.7 : Abstractions du micro-noyau Mach

Le projet Mach lUniversit Carnegie-Mellon sest arrt en 1994, mais il a une


postrit relle. LUniversit dUtah a repris le ambeau pendant quelques annes.
Le projet GNU Hurd vise remplacer le noyau Unix par une collection de serveurs
implants au-dessus dun noyau Mach. Le systme MacOS-X dApple, et dans une
certaine mesure le noyau de feu-Tru64 Unix de Compaq (ex-Digital) sont des descendants plus ou moins lgitimes du micro-noyau Mach au-dessus duquel Apple et
Compaq ont implant des systmes Unix de sensibilit plutt BSD.

10.5.3 Eumel, L3, L4


La srie des systmes Eumel, L3 et L4, dvelopps partir de 1977 par Jochen
Liedtke l Universit de Bielefeld, puis partir de 1984 au GMD (Gesellschaft fr
Mathematik und Datenverarbeitung), partir de 1996 au centre de recherche Thomas
J. Watson dIBM et partir de 1999 lUniversit de Karlsruhe, reprsente un des
eorts les plus notables la fois dans le domaine des micro-noyaux et dans celui
des domaines persistants (cf. section 5.4). Esprons que la disparition prmature
de Jochen Liedtke nen marquera pas la n.
Dans son article de 1995 On -Kernel Construction [43] Liedtke pose les fondations de la seconde gnration des micro-noyaux. Il part de la constatation
que certains pionniers ont t conduits rintgrer au noyau des fonctions qui en
avaient t extraites vers le mode utilisateur, essentiellement pour des raisons de
performances. Il examine donc les dirents problmes de performances rencontrs
et entreprend de leur trouver des solutions qui respectent le programme initial des
micro-noyaux : une architecture de systme modulaire, des serveurs en mode utili-

248

Machines virtuelles et micro-noyaux

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.

10.5.4 Conclusion sur les micro-noyaux


Jusquau milieu des annes 1990, aucune confrence informatique peu ou prou
oriente vers les systmes ne pouvait avoir lieu sans plusieurs communications consacres aux micro-noyaux. Il semblait vident tout le monde que ctait la technologie
du lendemain. Aujourdhui on nen parle plus gure.
Les qualits intrinsques du modle du micro-noyau, son adaptation des systmes distribus et exibles, sa capacit fonctionner sur des plateformes de toutes
dimensions, ainsi que les amliorations apportes par les travaux de la seconde gnration, ceci combin avec les attraits des systmes persistants (cf. section 5.4), me

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

11.1 Naissance et essor dune industrie


Depuis les annes 1970 des eorts considrables ont t dploys pour produire
des ordinateurs accessibles conomiquement et techniquement des personnes prives. Lensemble des ides, des techniques, des matriels et des logiciels mis en uvre
pour atteindre cet objectif a t appel micro-informatique. Aujourdhui le succs
en est si complet que lon peut se demander sil ne faudrait pas dire informatique
tout court : en eet les ordinateurs qui ne sont pas destins un usage individuel
sont plutt lexception, on les appelle gnralement des serveurs. Et depuis 1993
les micro-ordinateurs orent une puissance de calcul quivalente celle des grands
ordinateurs traditionnels.
Si lon a pu parler de rvolution micro-informatique , ce nest pas cause
dun bouleversement de la technique architecturale, car les micro-ordinateurs fonctionnent selon les mmes principes que les serveurs et respectent larchitecture de von
Neumann avec une orthodoxie plutt plus stricte que ceux-ci. Les aspects techniques
rvolutionnaires rsident plutt dans linterface personne-ordinateur, avec tout un
dploiement dinterfaces graphiques et de priphriques adapts des usages individuels. Par exemple, une vraie nouveaut fut linvention de la mmoire vido, qui
associe par une interface physique lcran du micro-ordinateur et une zone mmoire
spciale de telle sorte que toute modication de celle-ci sache instantanment sur
celui-l.
La micro-informatique fut en tout cas sans conteste une vraie rvolution conomique et sociale puisquelle a fait dune machine isole dans un sanctuaire soigneusement protg et desservie par une caste de professionnels au langage incomprhensible un bien de consommation courante en vente dans les grands magasins

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].

Naissance et essor dune industrie

253

informatique aprs le microprocesseur : une mmoire vido directement commande


par le processeur et relie un moniteur balayage analogue un cran de tlvision. Tous les lments visuels sont enregistrs dans la mmoire vido, ce qui permet
des achages lcran trs rapides, indispensables aux programmes graphiques. Le
botier de lApple II comporte un fond de panier avec des connecteurs raccords au
bus dans lesquels viennent sencher les cartes de mmoire ou de contrleurs de priphriques. Cette architecture matrielle fera la versatilit, la souplesse et le succs
de la micro-informatique.
Dautres constructeurs lancent des micros bass sur le 6502 : Commodore, Oric,
Atari, Acorn, tandis que Tandy Radio Shack utilise le Zilog Z80 pour son TRS-80.
Paralllement au dveloppement du matriel apparat un des premiers systmes
dexploitation capable de fonctionner sur plusieurs types de micros : CP/M (pour
Control Program/Microcomputers) crit par Gary Kildall ds 1973. Nous en reparlerons la section suivante.
En 1979, un tudiant du MIT et de Harvard du nom de Dan Bricklin invente
un nouveau type de logiciel, le tableur (le sien sappelle Visicalc). Ce programme
ache sur lcran une feuille de calcul avec des lignes et des colonnes et des nombres
dans les cases. Le programme permet de dire que telle case doit recevoir la somme
des nombres contenus dans telle colonne, par exemple. Lintrt du tableur, cest
que si lon modie un des nombres de la colonne, la case qui contient la somme est
automatiquement modie, ce qui permet dexaminer rapidement toute une srie
dhypothses, pour prparer un budget par exemple. Linvention du tableur permet
larrive du micro dans le monde de la gestion.
Le 12 aot 1981 IBM lance son micro, le PC, bas sur le 8088 dIntel et le systme
MS-DOS de Microsoft, et dot dun fond de panier et dun bus similaires ceux de
lApple II. Cet vnement fait sortir la micro-informatique du cercle des amateurs et
des prcurseurs vers le monde industriel et commercial, et permet IBM de dominer
ce nouveau march ds 1983.
Mais des innovations techniques, cette fois dans le domaine du logiciel, vont
encore modier la face de la micro-informatique. Elles sont issues du PARC (Palo
Alto Research Center) de Xerox. Steve Jobs visite le PARC en 1979, Bill Gates
en 1980, ils y dcouvrent une technique rvolutionnaire de communication entre
lhomme et la machine. En 1981 Xerox lance le 8010 Star, premier systme orir
une interface fentres, icnes, menus et souris. Apple lance en 1983 Lisa, un micro
qui utilise ces techniques. Ce sont des checs parce que Star et Lisa sont trop chres,
mais en 1984 sort le Macintosh, version amliore et moins chre de Lisa (2 495
dollars). Le Mac prsente sur son cran une mtaphore du bureau ; des icnes
gurent des dossiers, que lon peut ouvrir ou fermer en cliquant dessus avec
un dispositif de pointage, la souris. Dans les dossiers, des documents, qui lorsque
lon clique dessus souvrent pour sacher dans des fentres qui ressemblent
des pages de papier poses sur le bureau . Cette interface graphique, fruit de
recherches en psychologie et en informatique entreprises par Alan Kay lUniversit
dUtah en 1970 et poursuivies au PARC, va permettre aux personnes ordinaires
de se servir dun ordinateur sans trop sourir.
Ce succs est complt par la sortie en 1985 dune imprimante laser de petite
taille (le modle 3800 dIBM, sorti en 1976, pse plusieurs centaines de kilos et cote
des centaines de milliers de dollars) dote dun langage de programmation graphique,

254

Micro-informatique

Postscript, et du premier rseau de micros, deux innovations inspires des travaux


du PARC. Ces nouveauts qui mettent la porte de presque tous des possibilits
nagure rserves aux grandes entreprises et aux universits riches donnent Apple
plus de dix ans davance technique sur les ordinateurs dIBM.
Si lIBM PC est techniquement peu innovant, il a dautres qualits : il est
construit dlments standard en vente dans toutes les bonnes boutiques dlectronique et son architecture est publie dans une brochure. Ds juin 1982 Columbia
Data Products fabrique un clone de PC qui marque les dbuts dune immense
industrie.
Lessor prodigieux du micro stimule lindustrie du logiciel, moins que ce ne
soit linverse. Ce sont le traitement de texte, les tableurs et les bases de donnes qui
assurent lessentiel de lactivit, sans oublier les jeux.
IBM et Microsoft cherchent combler leur retard sur linterface homme-machine
du Mac, mais ils divergent sur la mthode et, en 1987, IBM lance OS/2 et Microsoft,
Windows 2. De ce schisme date la n de la suprmatie dIBM sur le march du PC,
domin dsormais par le couple Intel-Microsoft, qui ont le monopole respectivement
du processeur et du systme dexploitation.
Au milieu des annes 1990, le march des matriels micro-informatiques reprsente avec prs de 100 milliards de dollars 60% du march du matriel informatique.
Les micros base de processeur Intel reprsentent plus de 90% du parc, ils ont
dsormais des performances comparables celles des stations de travail techniques
pour un prix bien infrieur. Les pays du sud-est asiatique produisent une grande proportion des matriels les moins chers. Les interfaces fentres sont dun usage
gnral.
En ce qui concerne lquipement des micro-ordinateurs, la capacit de la mmoire
centrale et des disques ne cesse de crotre. Les lecteurs de CD-ROM, les modems et
les cartes vido aptes au multimdia se gnralisent.
Le logiciel micro-informatique est une activit domine par Microsoft, mais cette
hgmonie suscite procs et ractions, comme le dveloppement des logiciels libres,
avec notamment des Unix libres pour micro-ordinateurs (Linux, FreeBSD).

11.2 Quel systme pour les micro-ordinateurs ?


Le principal problme rsoudre pour faire fonctionner les premiers microordinateurs tait la faible quantit de mmoire disponible. Lauteur de ces lignes
a connu ses premires expriences personnelles en 1968 avec un Olivetti Programa
101, puis durant les annes 1970 avec un Wang 2200 (des Wang Laboratories, crs
par An Wang en 1951). Ce modle lanc en 1972 disposait de 4K (4 096 octets)
de mmoire et dun systme dexploitation qui tait en fait une machine virtuelle
destine au langage BASIC, enregistre en ROM (Read-Only Memory, cest--dire
une mmoire incorpore au matriel de telle sorte que le contenu en soit inaltrable).
Les supports de donnes externes taient des cassettes pour magntophone portable
(les disquettes de 8 pouces apparatraient plus tard). Avec de telles caractristiques,
les crateurs de micro-ordinateurs ont d rinventer toutes les techniques de linformatique classique de vingt ans auparavant, et il ntait pas question denvisager des
solutions luxueuses telles que la mmoire virtuelle ou la multi-programmation. Par
contre ces concepteurs venaient souvent du monde de linstrumentation lectronique

Quel systme pour les micro-ordinateurs ?

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.

11.2.1 lgie pour CP/M


Nous avons dj signal dans les chapitres prcdents que si les premiers systmes
dexploitation, et certains qui sont encore en activit, furent crits en assembleur
pour des raisons de performance et de rduction de lencombrement mmoire, assez
tt lide apparut de les crire en langage volu an dacclrer le dveloppement, de
faciliter la maintenance et damliorer lintelligibilit du code produit. Le prcurseur
en ce domaine fut le constructeur Burroughs avec son modle B 5000, sorti en 1962
avec un systme crit en Algol 60, suivi de Multics crit en PL/1 et dUnix en langage
C. Le monde micro-informatique allait connatre trs tt une volution similaire, au
destin avort.
Ds 1972, un expert indpendant sous contrat pour Intel, Gary Kildall, crait un
langage volu pour le microprocesseur 8008, baptis PL/M ; en fait, Kildall eectuait son service militaire en tant quenseignant dinformatique la United States
Naval Postgraduate School de Monterey en Californie, il avait achet pour 25 dollars
un processeur Intel 4004, et il avait commenc programmer cet appareil assez bizarre. Trs vite il entra en contact avec lquipe Intel, base quelques kilomtres,
et il travailla avec eux pendant son jour de cong hebdomadaire. Comme rtribution de ce travail il reut un systme de dveloppement complet (cest--dire tout
ce quil faut autour du processeur pour le programmer, soit les composants dun
micro-ordinateur, objet non encore invent lpoque), dabord pour le 8008, puis
pour le tout nouveau 8080.
PL/M tait un langage dassez bas niveau qui empruntait ses traits morphologiques et syntaxiques PL/1 et Algol. Pour dvelopper le compilateur PL/M,
Kildall cra un systme dexploitation, CP/M : faire les choses dans cet ordre fut
sans doute un exemple unique ! PL/M devint pour une vingtaine dannes le langage
de programmation standard chez Intel.
peu prs la mme poque IBM avait invent la disquette pour son usage
interne 2 . Assez vite lingnieur lorigine de cette invention, Alan Shugart, cra une
entreprise pour commercialiser la chose, avec le succs que lon sait. Kildall eut lide
dutiliser ce nouveau type de priphrique comme unit de stockage de donnes pour
micro-ordinateur et dadapter CP/M en consquence.
La sortie commerciale de CP/M eut lieu en 1975. Le premier fabricant dordinateurs lutiliser fut IMSAI. CP/M connut un succs important et rapide. Bientt il
supporta les disques durs. La socit de Kildall prit le nom de Digital Research.
CP/M tait un systme mono-utilisateur mmoire relle, sans mmoire virtuelle. Les parties du systme qui dpendaient du matriel taient soigneusement
isoles, et les caractristiques des lments matriels rpertories dans des tables, de
telle sorte que ladaptation un nouveau modle de processeur ou de disque puisse
2. Je me rappelle lavoir vu apparatre dans la console dun 370/155, o elle servait charger le
micro-code (voir section 9.2.4).

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

Quel systme pour les micro-ordinateurs ?

257

de dveloppement dcent, MS/DOS produit par Microsoft... La lgende racontera


une histoire de rendez-vous manqu.

11.2.2 De MS-DOS Windows


Les annes IBM et MS-DOS
Le PC IBM nat en 1981 avec un processeur Intel 8088 et le systme PC-DOS
de Microsoft, qui est en fait une copie plus ou moins autorise et incomplte de
CP/M qui aurait t dpouill de plusieurs fonctions importantes, comme lallocation
dynamique de mmoire, le partage de chiers, la commutation de processus et la
gestion de priphriques (voir ce sujet la rubrique ncrologique de Gary Kildall
par John Wharton Gary Kildall, Industry Pioneer, Dead at 52, [79]). La mmoire
adressable ne peut pas dpasser 640 Ko. La notorit dIBM apporte au microordinateur une respectabilit qui va permettre son entre dans les entreprises, et va
aussi attirer les diteurs de logiciels.
Le PC a une caractristique surprenante de la part dIBM : toutes ses caractristiques techniques internes et externes sont publies dans une documentation
librement accessible qui veut bien lacheter. Ceci permet trs rapidement la ralisation de copies du PC. Si PC-DOS est le systme dexploitation rserv au PC
dIBM, les producteurs de clones peuvent les quiper de son sosie MS-DOS, parfaitement semblable.
Le BIOS du PC ne ralise pas, contrairement celui de son modle CP/M,
une vritable abstraction du matriel, il dpend troitement des caractristiques du
processeur, mais il constitue nanmoins une interface qui va faciliter le travail des
cloneurs, en leur permettant par exemple de contourner les brevets dIBM sur le matriel. Le BIOS permet aussi daccueillir toutes sortes de cartes dextension, celles-ci
peuvent comporter de la mmoire ROM (Read Only Memory, au contenu non-volatil
et g une fois pour toutes) qui contient des extensions au BIOS, charges dynamiquement au dmarrage ; ainsi de nouvelles fonctions peuvent tre prises en compte,
ce qui sera particulirement mis prot par les crateurs de cartes graphiques.
Durant lanne 1982 Intel lance le processeur 80286, mots de 16 bits, bus de
donnes de 16 bits et adresses de 24 bits, soit une capacit dadressage de 16 777 216
octets. Ce processeur introduit des caractristiques nouvelles dans la famille Intel :
ct dun mode de fonctionnement compatible avec le 8086, dit mode rel, il est
dot dun mode inspir de Multics, le mode protg. Le mode protg comporte la
gestion de registres de segments pour une mmoire virtuelle segmente la Multics
et une protection par anneaux, mais il lui manque laccs la mmoire auxiliaire
sur disque par adressage de segment. De toutes les faons les systmes MS-DOS et
Windows nont pas utilis et nutilisent toujours pas ces possibilits du matriel. Pire,
ils resteront longtemps (en fait jusquau lancement commercial de Windows NT en
1993) dles au mode rel an de conserver la compatibilit avec les vieux logiciels
MS-DOS. Le 80286 et ses successeurs possdent un dispositif qui permet le lancement
de plusieurs machines virtuelles 8086 en mode rel, et cest cette caractristique qui
fut la plus utilise par les systmes Windows jusqu la n du vingtime sicle, sinon
aprs.
En 1984 IBM lance le PC/AT sur la base dun 80286 exploit en mode rel et
avec MS-DOS qui ne sait toujours utiliser que le premier mbioctet de mmoire.

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

Quel systme pour les micro-ordinateurs ?

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.

Quel systme pour les micro-ordinateurs ?

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.

11.2.3 Une alternative : MacOS


MacOS est apparu avec le Macintosh en 1984. En 2002, Apple sest engag dans
un processus destin lui substituer MacOS X, qui est en fait un systme totalement
nouveau bti sur un micro-noyau Mach 3 surmont dun serveur Unix BSD 4 (cf.
section 10.5.2). Nul doute que ce changement soit bnque : un systme Unix sur
un micro-noyau reprsente une base architecturale solide, mais un changement de
systme est une opration lourde qui implique des modications dans toute la gamme
de logiciels disponibles. Apple a fait montre dans cette aaire de sa grande matrise
3. https://blogs.cisco.com/news/cisco-connections-counter/
4. Ce changement dorientation technique dcisif fut la consquence dun changement politique
tout aussi dcisif la tte dApple : Steve Jobs avait t vinc de lentreprise quil avait cre au
prot dun vrai manager venu de Pepsi Cola et dont tout le monde a oubli le nom. Jobs a cr
an 1985 une autre entreprise, NeXT, qui na pas eu de grand succs commercial, mais au sein de
laquelle fut labor lOS qui allait devenir MacOS X aprs lchec pitoyable du vrai manager .

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-

Quel systme pour les micro-ordinateurs ?

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.

11.2.4 Autre alternative : Unix


En fait pour tre complet il faudrait dire Unix libre sur PC de super-march .
Microsoft et Intel, rendons leur cette justice, ont rendu possible le PC 300 Euros.
Rappelons-nous galement quen 1980 Bill Gates pensait quUnix tait le systme
davenir pour les micro-ordinateurs, et que pour cette raison il avait acquis une
licence Unix pour lancer sa version de ce systme : Xenix.
Maintenant sur une telle machine il est possible dinstaller un autre systme que
Windows, Linux le plus souvent, en tout cas pour lutilisateur nal. Le principal
avantage de Windows, cest que lorsque vous achetez le PC il est dj install, avec
en gnral quelques logiciels en plus, dont le traitement de texte habituel dont le
lecteur nimagine peut-tre pas quil puisse tre remplac par autre chose. Il faut
un cur bien accroch pour formater son disque dur et entreprendre dy installer
un systme distribu sur de mystrieux cdroms, dautant plus que le traitement
de texte en question ny est pas. Le particulier isol hsitera sans doute, mais si
son voisin damphithtre ou son collgue de laboratoire lui promettent aide ou
assistance, il franchira peut-tre le pas. la n de lanne 2002 on estimait vingt
millions les ordinateurs qui fonctionnaient sous Linux, devenus 70 millions en 2013 :
ce nest pas si peu, mais si Linux quipe un tiers des serveurs en entreprise et 95%
des super-calculateurs 5 , il a du mal conqurir le grand public, sauf sous la forme
Android, qui quipe selon Gartner 79% des smartphones et des tablettes vendus en
2013. Des interfaces homme-machines qui rappellent celle de Windows sont apparues
(Gnome, KDE, Xfce...) et ne fonctionnent pas plus mal que loriginal. On pourrait
prfrer le modle Macintosh...
Plus fondamentalement, la question est de savoir si le systme dexploitation
payant a un avenir. Microsoft rpond oui, bien sr, et pour XP introduit de faon
systmatique des redevances priodiques pour qui veut disposer des nouvelles versions du systme. Cette politique me rappelle lIBM des annes 1970, qui dtenait
plus de 90% du march et ne connaissait pas de limite la domination sur le client.
On a vu la suite. Il est sr en tout cas que le logiciel libre occupe aujourdhui une
place telle quil ne svaporera pas en une nuit, et que dans le domaine plus particulier du systme dexploitation il fait peser une hypothque assez lourde sur lavenir
du logiciel priv.
5. http://en.wikipedia.org/wiki/Usage_share_of_operating_systems

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

Le projet lorigine de ce livre tait de sadresser un public assez large, expos


lusage de linformatique mais peu curieux de ses arcanes, sans doute souvent agac
par ses dfaillances ou ses mystres, an dattirer son attention sur les enjeux des
batailles politiques qui, en ce moment, font rage , pour reprendre les mots de la
prface que Christian Queinnec a bien voulu lui consacrer. Jenvisageais de parler
aussi peu que possible de technique et daboutir un texte bref, la limite du
pamphlet. Le lecteur qui aura atteint les prsentes lignes jugera de lcart entre la
vise initiale et le rsultat.
Parler de technique : aussi peu que possible. L gt la dicult. Dcrire les
enjeux intellectuels et conomiques induits par les systmes dexploitation pour des
lecteurs qui en ignorent peu prs tout sans leur en expliquer les principes aurait
t de la cuistrerie, pour reprendre la terminologie utilise par Michel Volle dans son
ouvrage Le mtier de statisticien [77] dsormais accessible en ligne o il signale deux
cueils qui menacent le spcialiste qui parle au peuple : pdanterie et cuistrerie. Jai
entrepris une description des grands principes des systmes, ce qui nallait bien sr
pas sans ceux des ordinateurs et des rseaux, aussi peu que possible, bien sr. Je
rejoignais ainsi un projet suggr par Dominique Sabrier, celui dun ouvrage destin
un public curieux mais non spcialiste des systmes dexploitation. Bref, voici
un ouvrage dintroduction engag : il y a si longtemps que la littrature engage a
disparu que ladjectif est libre, on peut le reprendre.
Ai-je t aussi bref que possible ? Je crains que non, le sujet me plaisait trop. Me
semblait possible une vocation historique des principaux systmes dexploitation
des origines nos jours : il est vite apparu quil y aurait fallu le triple de volume,
au moins. Ce pan de lhistoire de linformatique constitue un champ de recherche
lui seul, ma connaissance encore fort peu dfrich.
Le parti-pris de dcrire de faon aussi gnrale que possible les mcanismes et
larchitecture des systmes en les illustrant dexemples emprunts de faon non systmatique telle ou telle ralisation particulire a engendr un phnomne de slection
dont le rsultat nest pas indirent. Cette slection a bien sr t biaise par mon
exprience personnelle : il y a des systmes passionnants dont je nai eu quune
connaissance livresque, tels Tenex et Tops-20 qui animaient les PDP-10 de Digital
Equipment, et qui de ce fait napparaissent pas dans ce livre. Dautres, peut-tre les
meilleurs dun certain point de vue, sont si discrets que je les ai utiliss pendant des
annes sans pratiquement mapercevoir de leur existence, comme MacOS ou Pick,
et du coup je nai pas grand-chose en dire, si ce nest quils mont rendu de bons
et loyaux services.
Si lOS 360 et Unix reviennent souvent dans mes exemples cest bien sr d
une frquentation plus longue et plus intime de ces systmes que de tel ou tel

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.

Annexe A Numration binaire

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

o les di sont des entiers compris entre 0 et B 1. Cest un thorme dont la


dmonstration est laisse en exercice au lecteur.
B est appel la base de notre systme de numration, (d0 , d1 , ..., dN 1 ) est appel
dcomposition en base B du nombre p, on la notera (dN 1 ...d1 d0 )B , ou lorsquil ny a
pas de confusion possible sur la base utilise simplement dN 1 ...d1 d0 . Les di sont les
chires de notre systme et il est de bon ton de leur faire correspondre chacun un
symbole spcial. Si B est infrieur 10 les chires arabes habituels feront laaire.
N est le nombre de chires de notre nombre p en base B, une donne importante
en informatique. Ainsi le nombre 42 scrit en base 10 :
42 = 2 100 + 4 101 = (42)10 = 42
et en base 2 :
(42)10 = 0 20 + 1 21 + 0 22 + 1 23 + 0 24 + 1 25 = (101010)2
Cela marche aussi bien sr avec les chires aprs la virgule, qui sont les coecients des puissances ngatives de la base B dans la dcomposition du nombre.

A.2 Petits exemples binaires


Voyons ce que donne la base 2, qui nous intresse tout particulirement.
numrons les premiers nombres :
Notation dcimale
0
1
2
3
4
5
6
7
8
...
15
16
...

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.

A.3 Conversion entre bases quelconques


Il est parfois ncessaire de convertir un nombre p crit dans la base B vers la
base B . La mthode, laborieuse, est la suivante :

Reprsentation informatique des nombres entiers

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.

A.4 Reprsentation informatique des nombres entiers


Nous allons maintenant dire quelques mots de la faon dont sont reprsents
dans la mmoire dun ordinateur les nombres entiers.
De faon usuelle un entier est stock dans un mot mmoire. La taille du mot
dun ordinateur donn dtermine donc la valeur absolue maximum utilisable sur
cet ordinateur, ce qui nous rappelle quen informatique nous sommes contraints de
demeurer dans un univers ni. Une machine mots de 32 bits autorisera des entiers
compris entre 2 147 483 648 et +2 147 483 647.

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

Pour reprsenter au moyen des combinaisons restantes les B2 nombres comn


pris entre B2 et 1 nous leur ferons correspondre, dans cet ordre, les
n
nombres n chires binaires compris entre B2 et B n 1. Cela revient dire
que le chire de poids fort (rang n) est toujours gal 1 et quun nombre
ngatif p sera reprsent par le nombre obtenu en remplaant chacun des
chires de p par son complment 1 (cest- dire en remplaant chaque 1
par un 0 et chaque 0 par un 1) et en additionnant 1 au rsultat, ce que lon
appelle le complment 2.
Prenons un exemple avec comme base B = 2 et n = 4 chires possibles.
Les entiers reprsents seront tels que dcrits dans la table A.1. Le nombre
+5 est reprsent par les chires suivants : 0101. Le complment 1 de
cette combinaison de chires nous donne : 1010. Additionnons 1 pour avoir
le complment 2 : 1011, qui reprsente 5. Si nous additionnons les deux
nombres en abandonnant la dernire retenue (puisque nous navons que 4
chires par nombre) :
0101
+ 1011
= 0000

ce qui est conforme notre attente.


Lintrt de cette notation rside dans le fait que laddition peut se faire selon
le mme algorithme, quel que soit le signe des oprandes, il sura doublier la
retenue ventuelle qui donnerait un n + 1ime chire. videmment, si le calcul excde
la capacit physique de la reprsentation, il y aura une erreur.

Types fractionnaires

273

A.4.1 Notation hexadcimale


La reprsentation des nombres en base 2 est trs commode pour les ordinateurs
mais moins pour les humains, parce quelle est encombrante et peu lisible. La conversion entre base 2 et base 10 est laborieuse. Mais la conversion entre la base 2 et une
base puissance de 2 est beaucoup plus maniable. La rgle des faisceaux (que nous ne
dmontrerons pas ici) nous apprend que chaque groupe de n chires dun nombre
binaire correspond un chire de ce nombre converti en base 2n . Les valeurs de n
souvent utilises sont 3 et 4, soient les notations octale et hexadcimale. Les chires
de la notation octale sont les chires arabes de 0 7, ceux de la notation hexadcimale les chires arabes de 0 9 et les lettres majuscules de A F qui notent
respectivement les nombres 10 15.
Ainsi le nombre binaire :
0111 1111 0011 1000
soit en dcimal 32 568, scrit-il en hexadcimal :
7F 38
On notera quun octet correspond un nombre compris entre 0 et 255, reprsent
en hexadcimal par deux chires. Ce mode de reprsentation est trs utilis par les
informaticiens.

A.5 Types fractionnaires


A.5.1 Les rels
Ces types usurpent volontiers le qualicatif rel , et correspondent aux
nombres en virgule ottante de lordinateur utilis, dont la notice du constructeur et
celle de lauteur du compilateur comportent une description. Ils servent reprsenter
les nombres avec des chires aprs la virgule .
La norme IEEE 754 dnit deux formats de nombres fractionnaires que lon
retrouve sur la plupart des ordinateurs. Elle est le plus gnralement implante
physiquement sur lordinateur, cest--dire que les lignes qui suivent ne sappliquent
pas un langage particulier, mais lutilisation de la plupart des ordinateurs et de
la plupart des langages de programmation.
Un type fractionnaire est dni sur un sous-ensemble born, incomplet et ni
des rationnels. En eet, le nombre de chires aprs la virgule est limit par
la taille physique dune reprsentation concrte. Un tel type peut tre utilis pour
reprsenter approximativement les nombres rels.

A.5.2 Principe de reprsentation


Les nombres fractionnaires sont reprsents dans les registres des ordinateurs
selon le principe de la virgule ottante. Ce principe est inspir de la notation familire
aux scientiques, qui prfrent crire 197.106 plutt que 197000000.
Soit un systme de numration de base B (entier positif), un nombre x pourra
tre reprsent par le doublet :
[m, p] tel que : x = m . B p

274

Numration binaire

m, la mantisse du nombre x, est un nombre positif compris entre :


1 (compris) et B (exclus),
ou nul si x = 0. Ceci correspondrait, en notation dcimale usuelle, des nombres
tels que :
1, 000000000 1, 9999999999
Cette mantisse m sera reprsente par un nombre xe de S chires binaires : elle
pourra donc prendre 2S valeurs direntes.
Lexposant p sera un entier compris entre deux valeurs M IN et M AX.
Les quatre entiers B (la base), N (le nombre de chires signicatifs de la mantisse), M IN et M AX (les bornes de lexposant) susent dnir un systme de
virgule ottante. Tout nombre rel de lintervalle :
] B M AX , +B M AX [
sera approch par un nombre reprsentable exactement, cest--dire de la forme :
x = m . Bp
La norme IEEE 754 dnit deux types de nombres en virgule ottante, en simple
ou double prcision. Le tableau ci-dessous donne aussi les caractristiques de la
double prcision sur Cray YMP, qui ne respecte pas la norme.
Simple prcision

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

On remarquera quavec des emplacements de mme taille physique pour placer


les nombres, Cray privilgie la largeur de lintervalle utilisable (ce que lon appelle
la dynamique de la reprsentation) aux dpens de la prcision. Dautre part la
reprsentation IEEE est dite normalise , cest--dire que le premier chire de la
mantisse (devant la virgule) est toujours gal 1 et que lon peut donc se dispenser
de le stocker, ce qui assure 53 chires signicatifs sur 52 bits. La virgule ottante
Cray nest pas normalise, ce qui accrot encore la dynamique et diminue la prcision.
Voici titre dillustration le format physique dun nombre la norme IEEE
simple prcision :

Types fractionnaires

275

S Exposant
bits

31 30

Mantisse
23 22

Figure A.1 : Format dun nombre en virgule ottante

le bit de signe, 0 pour un nombre


positif, 1 pour un nombre ngatif ;

Exposant

exposant binaire biais , cest--dire


que sil est reprsent sur E chires
binaires (E = 8 ici), on ajoute sa valeur
eective 2E1 , an de navoir
reprsenter que des valeurs positives ;

Mantisse

une valeur fractionnaire. Un bit 1 implicite


gure gauche du bit 22. La virgule est
droite du bit implicite.

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

Figure A.2 : Axe des nombres reprsents

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

Annexe B Semi-conducteurs et circuits logiques

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

Semi-conducteurs et circuits logiques

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.

B.2 Algbre de Boole


Munis du dispositif trs simple quest le semi-conducteur (quil soit ralis par
une triode ou des relais peu importe), les ingnieurs des premiers circuits logiques
(George Stibitz des Bell Labs en 1937, lAllemand Konrad Zuse en 1938, et plus
grande chelle Eckert et Mauchly pour lENIAC) sattaqurent aux oprations de
lalgbre de Boole. Le mathmaticien britannique George Boole (1815 1864) avait
imagin de formaliser la logique dAristote au moyen dune algbre dvnements
qui depuis porte son nom.
Soit un ensemble dvnements A, B, C, .... chaque vnement correspond une
proposition : lvnement considr a eu lieu. Nous considrons un ensemble dvnements qui ont entre eux un certain rapport de contenu, en ceci quils sont lis
au rsultat dune seule et mme preuve. chaque preuve est attach un certain
ensemble de rsultats possibles ; de chacun des vnements on doit pouvoir armer,
pour chaque rsultat de lpreuve, sil a eu lieu ou non 4 .
Si deux vnements A et B, pour chaque rsultat de lpreuve, sont toujours ou
tous deux raliss, ou tous deux nonraliss, nous dirons quils sont identiques, ce
qui scrit A = B.

La nonralisation dun vnement A est aussi un vnement, qui scrira A.


Rnyi prend pour preuve lexemple du tir sur une cible et propose de partager la
cible en quatre quadrants par un diamtre vertical et un diamtre horizontal. Lvnement A sera ralis si le coup frappe la moiti suprieure de la cible, lvnement
B si le coup frappe la moiti droite de la cible.
Si A et B ont eu lieu tous les deux, il sagit dun nouvel vnement, C, qui est
justement A et B ont eu lieu tout les deux , qui a lieu si le coup frappe le quadrant
suprieur droit de la cible. Cest le produit de deux vnements, que nous noterons
A ET B ou A B ou simplement selon llgante notation de Rnyi :
C = AB
4. Jemprunte ce rsum de lalgbre de Boole au Calcul des probabilits du mathmaticien
hongrois Alfred Rnyi.

Algbre de Boole

279

vnement nul

AB (soit : A ET B)
Figure B.2 : Exemples dvnements

De mme, on peut se demander si au moins un des deux vnements A et B a


eu lieu. La proposition au moins un des deux vnements A et B a eu lieu est
vraie si le coup ne frappe pas le quadrant infrieur gauche de la cible. Cet vnement
qui se produit quand au moins un des deux vnements A et B a lieu est appel la
somme de A et B et scrit A OU B ou A B ou simplement : C = A + B.

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

Semi-conducteurs et circuits logiques

B.3 Ralisation des oprations boolennes


Cette section doit beaucoup au livre de Patrick de Miribel Principe des ordinateurs [52]. Emmanuel Lazard a ralis les schmas et les textes explicatifs qui leur
correspondent.
Par convention, le vrai sera reprsent par la valeur 1 et le faux par la valeur 0.
la valeur 1 correspondra un courant positif et la valeur 0 un courant nul.
Les circuits ci-dessous comportent des rsistances, symbolises par des ls en
zigzag, qui comme leur nom lindique font obstacle au passage du courant. Si le
courant trouve un chemin plus facile, comme par exemple un transistor ltat
passant, il ne franchira pas la rsistance (plus exactement, le courant qui franchira
la rsistance sera faible et infrieur au seuil qui le rendrait ecace). Mais sil ny
a pas dautre chemin, par exemple parce que le transistor est ltat bloqu, le
courant franchira la rsistance.

B.3.1 Circuit NON


+V
R
S=x
collecteur

x
base

metteur
Figure B.4 : Circuit NON

Si x = 0, la base du transistor est un potentiel nul, le transistor est bloqu ; via


la rsistance, le courant positif va arriver en x
, qui vaudra donc 1, ce qui est bien le
contraire de 0.
Si x = 1, le courant positif atteint la base du transistor qui devient passant. De
ce fait, le point x
est directement reli la masse, donc une tension nulle et vaudra
0, ce qui est le rsultat voulu.

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

Figure B.5 : Circuit OU

+V
x
y
R

S = xy

Figure B.6 : Circuit ET

x et y soient positives, ce qui est bien le rsultat voulu, conforme la smantique


du ET.

B.3.4 Compltude de cette ralisation


Il existe dautres oprations boolennes, mais il est ais de dmontrer quelles
peuvent toutes se ramener une composition des trois oprations que nous venons de
voir. Il existe dautres faons de raliser une algbre de Boole complte, notamment
avec la seule opration NON ET (NAND), souvent utilise par les circuits contemporains : plus touue pour le lecteur humain, elle donne des rsultats strictement
quivalents ceux que nous venons de dcrire. Ce circuit est dcrit par la gure B.7.
Comme les circuits NON OU (NOR) et OU EXCLUSIF (XOR) sont aussi utiles,
notamment pour raliser la mmoire, les voici dans les gures B.8 et B.9.

B.4 Construction de larithmtique


Munis dune ralisation lectronique de lalgbre de Boole, nous allons montrer
que nous pouvons raliser les oprations de larithmtique binaire. En fait, nous
allons montrer comment raliser un oprateur lectronique capable dadditionner
deux chires binaires et de donner un chire de somme et un chire de retenue. En
combinant plusieurs exemplaires de ce circuit de base il est possible de construire
un additionneur plusieurs chires. Laddition donne la multiplication et la soustraction, qui donne la division : autant dire que lon a tout. Le lecteur peu assur

282

Semi-conducteurs et circuits logiques

+V
R

S = xy

x
y

Figure B.7 : Circuit NON ET (NAND)

+V
S=x+y
x

Figure B.8 : Circuit NON OU (NOR)

x
NAND

y
NAND

x XOR y

y
NAND

x
Figure B.9 : Circuit OU EXCLUSIF (XOR)

de sa connaissance de larithmtique binaire pourra se reporter la section A.2 et


plus gnralement lannexe A.
Voici la table de vrit du semi-additionneur binaire. Soient s le chire de
somme et r la retenue. Leibniz avait dj remarqu la consquence simplicatrice
de lusage de la numration binaire : la retenue et le chire de somme nont que
deux valeurs possibles, 0 ou 1 5 .

5. Cf. le texte de Leibniz ici : http://www.laurentbloch.org/MySpip3/spip.php?article98

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

B.5 Construction de la mmoire


Jusque dans les annes 1970 la mmoire tait ralise partir dlments statiques, le plus souvent des tores de ferrite dont lorientation du champ magntique
reprsentait conventionnellement la valeur dun bit.
Aujourdhui la mmoire est ralise avec des circuits logiques, le plus souvent
des portes NON OU (NOR). Voici la table de vrit de NON OU, qui comme son
nom lindique donne des rsultats opposs ceux du OU :
x
0
0
1
1

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

Semi-conducteurs et circuits logiques

entre S
(set)

entre R
(reset)

Bascule RS
NOR

sortie Q

NOR

sortie Q

Figure B.11 : lment de mmoire : bascule statique

Selon la table dopration ci-dessus, la sortie dune porte NON OU vaut 1 si


toutes ses entres sont 0. Selon les tensions appliques ses entres R (comme
reset, remettre le bit 0) et S (comme set, allumer le bit 1), les sorties Q et Q
ont les valeurs indiques dans la table ci-dessous :
S
1
0
0
0
1

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

Le dernier tat correspondrait une situation o lon demanderait au circuit de


positionner le bit simultanment 0 et 1, ce quil semble raisonnable dexclure. Q
a toujours la valeur complmentaire de celle de Q, soit NON Q, not Q
Un transistor non aliment perd son tat : un tel circuit doit tre aliment priodiquement, ce que lon appelle le rafrachissement. ce dtail technique prs on
observera que les deux tats possibles de ce circuit sont stables, mme aprs le retour
un potentiel nul des entres R et S.
On observera que la combinaison de deux objets lmentaires, ici deux portes
NON OU, cre un objet qui excde de beaucoup ses composants en richesse conceptuelle : une position de mmoire est un objet beaucoup plus complexe quune porte
logique, lalgbre de Boole ne peut pas en rendre compte.

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]

Thrse Accart-Hardin and Vronique Donzeau-Gouge Vigui. Concepts et outils


de programmation. Interditions, Paris, 1992.
Manuel et mthode dun enseignement du CNAM, cet ouvrage introduit les concepts
fondamentaux de la programmation avec un souci pdagogique qui ne nuit pas la
rigueur.

[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]

Franois Anceau. La saga des PC Wintel . Technique et science informatiques,


19-6, 2000.

[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]

Laurent Bloch. Systmes dinformation, obstacles et succs La pense aux prises


avec linformatique. Vuibert, Paris, 2005. Texte intgral et documents complmentaires
disponibles ici :
http://www.laurentbloch.org/MySpip3/spip.php?rubrique5.

[8]

Laurent Bloch. Initiation la programmation avec Scheme. Technip, Paris, 2011.


Un livre de programmation consacr Scheme, un dialecte moderne et lgant de LISP.

[9]

Laurent Bloch and Christophe Wolfhugel. Scurit informatique Principes et


mthodes lusage des DSI, RSSI et administrateurs. Eyrolles, Paris, 2013.
Un guide pratique de scurit informatique, muni (avec concision) des explications
thoriques indispensables, et, pour sa quatrime dition, jour des dveloppements
rcents. Informations supplmentaires ici :
http://www.laurentbloch.org/MySpip3/spip.php?rubrique11.

[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

[53] Ren Moreau. Ainsi naquit linformatique. Dunod, Paris, 1987.


[54] Jean-Louis Nebut. UNIX pour lutilisateur. ditions Technip, Paris, 1990.
Face locan des livres-mode demploi inodores et sans saveur, celui-ci introduit des
concepts (ceux de la programmation) dans un univers do ils sont souvent bannis.
Unix y apparat sous un jour nouveau, dot dune cohrence non limite sa structure
interne, et du coup comprhensible mme qui nen a pas lu le noyau. Lexercice
(organiser cet apparent fouillis) tait dicile.
[55] John von Neumann. The Computer and the Brain. Yale University Press, New Haven,
Connecnicut, 1957. Traduction franaise : La Dcouverte, Paris 1992.
Ce texte dune confrence que la mort de lauteur a empch dtre prononce rfute le
rductionnisme qui eurit souvent sous de tels titres, numre les dirences fondamentales entre lactivit du cerveau et le fonctionnement des machines numriques, ouvre
de nouvelles problmatiques sur des questions rebattues telle que lexistence des objets
de la mathmatique et de la logique.
[56] John von Neumann. First Draft of a Report on the EDVAC . Technical Report,
University of Pennsylvania, 30 juin 1945. Ce texte fondamental, longtemps dun accs
dicile, est maintenant en ligne ici : http://www.virtualtravelog.net/entries/
2003-08-TheFirstDraft.pdf.
[57] Michle Pichat and Jean Vignes. Ingnierie du contrle de la prcision des calculs
sur ordinateur. ditions Technip, Paris, 1993.
Certains rsultats scientiques publis lissue de traitements informatiques sont simplement des erreurs de calcul. Cet ouvrage donne une vision approfondie des causes
possibles de telles erreurs et propose des mthodes pour les viter, notamment la mthode originale CESTAC de contrle et estimation stochastique des arrondis de calcul.
[58] W. Curtis Preston. SANs and NAS. OReilly, Sebastopol, California, 2002.
[59] Christian Queinnec. ABC dUnix. Eyrolles, Paris, 1985.
Ce livre puis mais disponible sur le rseau sous licence FDL (Free Documentation License) lURL http://pagesperso-systeme.lip6.fr/Christian.Queinnec/Books/
ABCdUNIX/uunix-toc.html accomplit un exercice dlicat : dgager les concepts de la
philosophie dUnix, sans se noyer dans les dtails ni omettre rien dimportant.
[60] Alfred Rnyi. Calcul des probabilits. Jacques Gabay [pour la traduction], Budapest
[Paris], 1966.
Ce livre qui a fait date dans son domaine contient un expos particulirement incisif et
lgant de lalgbre de Boole.
[61] Yakov Rekhter, Robert G. Moskowitz, Daniel Karrenberg, Geert Jan de Groot,
and Eliot Lear. RFC 1918 Address Allocation for Private Internets) . Technical
Report, IETF, Fvrier 1996. Ce RFC remplace les 1597 et 1627 de 1994 ; http://www.
ietf.org/rfc/rfc1918.txt.
[62] Dennis M. Ritchie. The Evolution of the Unix Time-sharing System . Lecture Notes
in Computer Science, 79, 1980. Language Design and Programming Methodology.
[63] Mark E. Russinovich. Windows internals : Windows 2000, Windows XP & Windows
Server 2003. Microsoft Press, Redmond, tat de Washington, 2005.
[64] Peter H. Salus. A Quarter Century of UNIX. Addison-Wesley, Reading, Massachusetts,
1994.
Un rcit trs empathique de laventure Unix.
[65] Peter H. Salus. Casting the Net. Addison-Wesley, Reading, Massachusetts, 1995.
Une source de premire main sur les hommes qui ont fait lInternet.

298

BIBLIOGRAPHIE

[66] Manuel Serrano. Vers une programmation fonctionnelle praticable . Habilitation


diriger des recherches, Universit de Nice, 2000.
Une rexion pratique non dpourvue daperus thoriques sur la construction
de logiciels. Disponible ici : http://www-sop.inria.fr/mimosa/personnel/Manuel.
Serrano/index-3.html#Programming-Environment.
[67] Claude E. Shannon. A mathematical theory of communication . Bell System
Technical Journal, 27, p. 379-423 et 623-656, juillet et octobre 1948. Disponible en
ligne ici : http://cm.bell-labs.com/cm/ms/what/shannonday/shannon1948.pdf.
[68] Avi Silberschatz, Peter Galvin, and Greg Gagne. Principes appliqus des systmes
dexploitation. Vuibert (pour la traduction franaise), Paris, 2001.
[69] Simon Singh. The Code Book (Histoire des codes secrets). JC Latts (pour la traduction
franaise), Paris, 1999.
Un bon ouvrage de vulgarisation.
[70] D.A. Solomon and M.E. Russinovich. Inside Windows 2000. Microsoft Press, Redmond, tat de Washington, 2000.
[71] Pyda Srisuresh and Kjeld Borch Egevang. RFC 3022 Traditional IP Network
Address Translator (Traditional NAT) . Technical Report, IETF, Janvier 2001. http:
//www.ietf.org/rfc/rfc1631.txt.
[72] W. Richard Stevens. TCP/IP illustr. Addison-Wesley (Vuibert pour la traduction
franaise), Reading, Massachusetts, 1994.
Une rfrence thorique et pratique. La mort prmature de lauteur nous prive de
mises jour srement passionantes.
[73] Andrew S. Tanenbaum. Computer Networks. Prentice-Hall, Upper Saddle River, New
Jersey, 1996.
Encore plus que sur les systmes, Andrew Tanenbaum est lauteur de base pour qui
veut pntrer les arcanes des rseaux informatiques. Tout devient clair.
[74] Andrew S. Tanenbaum. Modern Operating Systems. Prentice-Hall, Upper Saddle
River, New Jersey, 2001.
Andrew Tanenbaum est lauteur conseiller en tout premier lieu qui veut approfondir
le sujet des systmes dexploitation. Non seulement la teneur est de toute premire
qualit, mais la clart de lexpos est proprement blouissante.
[75] Robert Bruce Thompson and Barbara Fritchman Thompson. PC Hardware in a
Nutshell. OReilly, Sebastopol, Calif., USA, 2003.
Un ouvrage pratique indispensable. Vous comprendrez rtrospectivement la cause de
tous vos ennuis avec la gravure de CD-ROMs ou avec la gomtrie des disques durs.
[76] Alan Turing and Jean-Yves Girard. La machine de Turing. ditions Le Seuil, Paris,
1995.
Une introduction abordable mais sans concessions, puis le texte historique.
[77] Michel Volle. Le mtier de statisticien. Economica, Paris, 1984.
Ce livre disponible sur le rseau lURL http://www.volle.com/ouvrages/metier/
tabmetier.htm, outre une introduction de premire main aux questions et aux enjeux
suscits par lexercice de la statistique publique, introduit une rexion originale sur la
dontologie du spcialiste confront la mission dinformer le public non spcialis.
[78] Michel Volle. e-conomie. Economica, Paris, 2000.
Une analyse conomique informe et pntrante des nouvelles technologies par un des
matres de lconomtrie et de la statistique.
[79] John Wharton. Gary Kildall, Industry Pioneer, Dead at 52 . Microprocessor
Report, 8-10, 1994.

BIBLIOGRAPHIE

299

[80] Wikipedia. Pair pair . Wikipedia, 15 novembre 2013. http://fr.wikipedia.


org/wiki/.
[81] Wikipedia. Network address translation . Wikipedia, 19 dcembre 2005. http:
//fr.wikipedia.org/wiki/NAT.
[82] Ludwig Wittgenstein. Tractatus logico-philosophicus. Gallimard (pour la traduction
franaise), Paris, [1918].

You might also like