Architecture des machines et des systèmes informatiques
6e édition
Alain Cazes
Joëlle Delacroix
Dunod
Chapitre 1 . Structure générale et fonctionnement d'un ordinateur
1
1.1 Introduction1
1.2 Structure et fonctionnement d'un ordinateur3
1.2.1 Structure générale d'un ordinateur3
1.2.2 La mémoire centrale4
1.2.3 Le bus de communication8
1.2.4 Le processeur central ou microprocesseur10
1.3 Fonctionnement : relation microprocesseur / mémoire centrale13
1.4 Un exemple15
1.4.1 Le problème15
1.4.2 L'ordinateur15
1.4.3 Le langage machine15
1.5 Les unités d'échanges16
1.6 Conclusion17
Partie 1 . Production de programmes
Chapitre 2 . Du problème au programme machine
23
2.1 Du problème au programme23
2.1.1 Rappel du rôle d'un ordinateur23
2.1.2 Problème, algorithme, programme et instructions25
2.2 Les différents niveaux de langage de l'ordinateur26
2.2.1 Langage machine27
2.2.2 Langage d'assemblage28
2.2.3 Langage de haut niveau ou évolué29
2.3 Introduction à la chaîne de production de programmes30
2.4 Un exemple31
2.5 Conclusion33
Chapitre 3 . La chaîne de production de programmes
35
3.1 La compilation36
3.1.1 Grammaire et structure d'un langage de haut niveau36
3.1.2 Analyse lexicale38
3.1.3 Analyse syntaxique40
3.1.4 Analyse sémantique42
3.1.5 Génération du code final44
3.2 L'édition des liens46
3.2.1 Rôle de l'éditeur de liens46
3.2.2 Fonctionnement de l'éditeur de liens47
3.3 Le chargement60
3.3.1 Rôle du chargeur60
3.3.2 Chargement et édition des liens dynamique61
3.4 Le préprocesseur62
3.4.1 La directive #include62
3.4.2 La directive #define63
3.4.3 La compilation conditionnelle63
3.4.4 Un exemple63
3.5 L'utilitaire Make64
3.5.1 Format du fichier Makefile65
3.5.2 Fonctionnement de l'utilitaire Make66
3.6 Compilateur, interpréteur et machine virtuelle66
3.7 Conclusion68
3.8 Qu'avez-vous retenu ?68
Chapitre 4 . Le langage machine et la représentation des informations
71
4.1 La représentation des informations71
4.1.1 Numération binaire, octale et hexadécimale72
4.1.2 Représentation des nombres signés75
4.1.3 Représentation des nombres flottants79
4.1.4 Représentation des caractères82
4.2 Les instructions machine85
4.2.1 Les différents types d'instructions85
4.2.2 Les différents types d'opérandes86
4.2.3 Un exemple87
4.3 Les instructions du langage d'assemblage90
4.3.1 Format d'une instruction du langage d'assemblage90
4.3.2 Fonctionnement de l'assembleur92
4.4 Exemples de programmes en langage d'assemblage94
4.4.1 Spécification d'un langage d'assemblage94
4.4.2 Quelques exemples99
4.5 Conclusion102
4.6 Qu'avez-vous retenu ?102
Chapitre 5 . Les circuits logiques
105
5.1 Les circuits logiques105
5.1.1 Définition105
5.1.2 Les circuits combinatoires106
5.1.3 Les circuits séquentiels114
5.1.4 Technologie des circuits logiques116
5.2 Le futur...122
Chapitre 6 . Exercices corrigés
125
Production de programmes125
6.1 Compilation125
6.2 Édition des liens127
6.3 Utilitaire Make128
6.4 Compilation128
6.5 Préprocesseur129
Représentation des informations130
6.6 Conversions130
6.7 Représentation des nombres signés130
6.8 Représentation des nombres flottants131
6.9 Synthèse131
Langage machine131
6.10 Manipulation des modes d'adressage131
6.11 Programme assembleur132
6.12 Manipulation de la pile132
6.13 Programme assembleur133
6.14 Programme assembleur133
6.15 Langage d'assemblage134
Solutions
136
Partie 2 . Structure de l'ordinateur
Chapitre 7 . La fonction d'exécution
149
7.1 Introduction149
7.2 Aspects externes152
7.2.1 Le microprocesseur152
7.2.2 Les bus154
7.3 Aspects internes156
7.3.1 Exécution d'une instruction machine157
7.3.2 Microcommandes et micro-instructions165
7.4 Les interruptions : modification du flux d'exécution d'un programme machine174
7.4.1 Principe des interruptions174
7.4.2 Un exemple178
7.5 Amélioration des performances182
7.5.1 Parallélisme des instructions183
7.5.2 Parallélisme des processeurs188
7.6 Conclusion189
7.7 Qu'avez-vous retenu ?190
Chapitre 8 . La fonction de mémorisation
193
8.1 Généralités193
8.2 Mémoires de travail196
8.2.1 Les mémoires vives196
8.2.2 Les mémoires mortes206
8.2.3 Les registres206
8.3 Mémoires de stockage : le disque magnétique208
8.3.1 Caractéristiques générales208
8.3.2 Organisation générale208
8.3.3 Le disque SSD (Solid-State Drive)211
8.4 Amélioration des performances211
8.4.1 Les mémoires caches211
8.4.2 Mémoire virtuelle222
8.5 Compléments : approches CISC/RISC225
8.5.1 Les performances d'un processeur226
8.5.2 La traduction des programmes227
8.5.3 Approche CISC227
8.5.4 Approche RISC228
8.5.5 Pour conclure sur les RISC et les CISC229
8.6 Compléments : approches multicoeurs230
8.7 Conclusion232
8.8 Qu'avez-vous retenu ?233
Chapitre 9 . La fonction de communication
235
9.1 Introduction235
9.2 Les bus240
9.2.1 Les bus ISA (ou PC-AT), MCA et EISA241
9.2.2 Le bus PCI (Peripherical Component Interconnect)242
9.2.3 Le bus AGP (Accelerated Graphics Port)246
9.2.4 Deux exemples247
9.3 Les interfaces d'accès aux périphériques248
9.3.1 Les unités d'échanges249
9.3.2 Les bus d'extension262
9.4 Les différents modèles de gestion des entrées-sorties266
9.4.1 La liaison programmée267
9.4.2 Entrées-sorties pilotées par les interruptions269
9.4.3 Gestion des entrées-sorties asynchrones271
9.5 Conclusion274
Chapitre 10 . Exercices corrigés
275
La fonction d'exécution275
10.1 Révision275
10.2 Microcommandes275
10.3 CISC/RISC276
La fonction de mémorisation277
10.4 Cache à correspondance directe277
10.5 Calcul de la taille réelle d'un cache277
10.6 Cache associatif et remplacement de lignes277
10.7 Cache à correspondance directe278
10.8 Cache à correspondance directe278
La fonction de communication279
10.9 Questions de cours279
10.10 Entrées-sorties programmées et entrées-sorties par interruption279
10.11 Performances des opérations d'entrées-sorties279
10.12 Gestion des interruptions280
Synthèse281
10.13 Exercice de synthèse n° 1281
10.14 Exercice de synthèse n° 2283
Solutions
285
Partie 3 . Les systèmes d'exploitation
Chapitre 11 . Introduction aux systèmes d'exploitation multiprogrammés
299
11.1 Rôle et définition d'un système d'exploitation multiprogrammé299
11.1.1 Un premier rôle : assurer le partage de la machine physique301
11.1.2 Un second rôle : rendre conviviale la machine physique301
11.1.3 Définition du système d'exploitation multiprogrammé302
11.2 Structure d'un système d'exploitation multiprogrammé303
11.2.1 Composants d'un système d'exploitation303
11.2.2 La norme POSIX pour les systèmes ouverts305
11.3 Principaux types de systèmes d'exploitations multiprogrammés305
11.3.1 Les systèmes à traitements par lots306
11.3.2 Les systèmes interactifs308
11.3.3 Les systèmes temps réel309
11.3.4 Les systèmes mobiles310
11.3.5 Virtualisation de systèmes311
11.4 Notions de base311
11.4.1 Modes d'exécutions et commutations de contexte311
11.4.2 Gestion des interruptions matérielles et logicielles313
11.4.3 Langage de commande317
11.5 Génération et chargement d'un système d'exploitation320
11.5.1 Génération d'un système d'exploitation320
11.5.2 Chargement d'un système d'exploitation321
11.6 Conclusion321
11.7 Qu'avez-vous retenu ?322
Chapitre 12 . Gestion de l'exécution des programmes : le processus
325
12.1 Notion de processus325
12.1.1 Définitions325
12.1.2 États d'un processus326
12.1.3 Bloc de contrôle du processus327
12.1.4 Opérations sur les processus328
12.1.5 Un exemple de processus : les processus Unix329
12.1.6 Programmation de processus ? : l'exemple de Linux332
12.1.7 Langage de commandes Processus : l'exemple de Linux337
12.2 Ordonnancement sur l'unité centrale340
12.2.1 Ordonnancement préemptif et non préemptif340
12.2.2 Entités systèmes responsable de l'ordonnancement342
12.2.3 Politiques d'ordonnancement342
12.2.4 Exemples347
12.3 Synchronisation et communication entre processus349
12.3.1 L'exclusion mutuelle351
12.3.2 Le schéma de l'allocation de ressources354
12.3.3 Le schéma lecteurs-rédacteurs360
12.3.4 Le schéma producteur-consommateur362
12.4 Complément : notion de processus léger ou thread363
12.4.1 Notion de thread363
12.4.2 Exemple sous Linux364
12.4.3 Exemple sous Windows366
12.5 Conclusion367
12.6 Qu'avez-vous retenu ?368
Chapitre 13 . Gestion de la mémoire centrale
371
13.1 Mémoire physique et mémoire logique371
13.2 Allocation de la mémoire physique373
13.2.1 Allocation contiguë de la mémoire physique373
13.2.2 Allocation non contiguë de la mémoire physique379
13.3 Mémoire virtuelle392
13.3.1 Principe de la mémoire virtuelle392
13.3.2 Le défaut de page395
13.3.3 Le remplacement de pages397
13.3.4 Performance400
13.3.5 Exemples401
13.3.6 Notion d'écroulement404
13.4 Swapping des processus405
13.5 Conclusion406
13.6 Qu'avez-vous retenu ?407
Chapitre 14 . Système de gestion de fichiers
409
14.1 Le fichier logique409
14.1.1 Définition409
14.1.2 Les modes d'accès410
14.1.3 Exemples412
14.2 Le fichier physique415
14.2.1 Structure du disque dur415
14.2.2 Méthodes d'allocation de la mémoire secondaire416
14.3 Correspondance fichier logique-fichier physique427
14.3.1 Notion de répertoire427
14.3.2 Réalisation des opérations435
14.4 Protection443
14.4.1 Protection contre les accès inappropriés444
14.4.2 Protection contre les dégâts physiques446
14.5 Conclusion451
14.6 Qu'avez-vous retenu ?453
Chapitre 15 . Introduction aux réseaux
455
15.1 Définition455
15.2 Les réseaux filaires457
15.2.1 Architecture des réseaux filaires457
15.2.2 Circulation des informations465
15.2.3 Exemple de réseau filaire468
15.3 Les réseaux sans fil471
15.3.1 Architecture des réseaux sans fil472
15.3.2 Circulation des informations474
15.3.3 Exemples de réseaux sans fil479
15.4 L'interconnexion de réseaux : Internet481
15.4.1 Architecture de l'Internet481
15.4.2 Circulation de l'information482
15.5 Conclusion485
15.6 Qu'avez-vous retenu ?485
Chapitre 16 . Introduction à la sécurité des systèmes informatiques
487
16.1 Authentification488
16.2 Intrusions et logiciels malveillants489
16.2.1 Les logiciels malveillants489
16.2.2 Dispositifs de protection490
16.3 Disponibilité et pérennité494
16.4 Conclusion496
16.5 Qu'avez-vous retenu ?498
Chapitre 17 . Exercices corrigés
501
Ordonnancement de processus501
17.1 Algorithmes d'ordonnancement501
17.2 Ordonnancement par priorité préemptif et non préemptif501
17.3 Chronogramme d'exécutions502
17.4 Ordonnancement sous Unix502
17.5 Ordonnancement sous Linux503
Synchronisation de processus504
17.6 Producteur(s)-Consommateurs(s)504
17.7 Allocations de ressources et interblocage505
17.8 Allocation de ressources et états des processus506
17.9 Allocation de ressources506
17.10 Interblocage507
17.11 Exclusion mutuelle507
17.12 Processus léger508
Gestion de la mémoire centrale509
17.13 Gestion de la mémoire par partitions variables509
17.14 Remplacement de pages509
17.15 Mémoire paginée et segmentée509
17.16 Mémoire virtuelle et ordonnancement de processus510
17.17 Pagination à la demande511
Système de gestion de fichiers512
17.18 Modes d'accès512
17.19 Organisation de fichiers512
17.20 Noms de fichiers et droits d'accès512
17.21 Algorithmes de services des requêtes disque513
17.22 Fichiers Unix513
17.23 Système de gestion de fichiers FAT513
17.24 Système de gestion Unix514
17.25 Allocation par zones514
17.26 Synthèse515
Solutions
517
Index
539