ebook img

Splendeurs et servitudes des Systèmes d’exploitation: Histoire, fonctionnement, enjeux PDF

474 Pages·2020·2.57 MB·French
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Splendeurs et servitudes des Systèmes d’exploitation: Histoire, fonctionnement, enjeux

Splendeurs et servitudes des Systèmes d’exploitation Histoire, fonctionnement, enjeux Laurent Bloch 27 juillet 2020 ii Du même auteur Initiation à la programmation et aux algorithmes – Avec Python, Technip éd., 2020 Initiation à la programmation et aux algorithmes – Avec Scheme,Technip éd., 2020 Révolution cyberindustrielle en France, Economica éd., 2015 Sécurité informatique – Pour les DSI, RSSI et administrateurs, Eyrolles éd., 5èmeédition, 2016 La pensée aux prises avec l’informatique – Systèmes d’information, Laurent Bloch éd., 2017 L’Internet, vecteur de puissance des États-Unis? - Géopolitique du cyberespace, nouvel espace stratégique, Diploweb éd., 2017 Site Web de l’auteur (comporte des documents complémentaires) https://laurentbloch.net © copyright Laurent Bloch éd. Paris, dépôt légal août 2020 Table des matières Préface de Christian Queinnec 1 Avant-propos 3 1 Présentation des personnages 10 1.1 Mondanité des systèmes . . . . . . . . . . . . . . . . . . . 10 1.2 Quelques définitions . . . . . . . . . . . . . . . . . . . . . 12 1.3 La couche visible du système . . . . . . . . . . . . . . . . 14 1.4 Une représentation: le modèle en couches . . . . . . . . . 14 1.5 L’informatique est (aussi) une science . . . . . . . . . . . 17 1.6 Architectures . . . . . . . . . . . . . . . . . . . . . . . . . 18 1.7 Enjeux d’une histoire . . . . . . . . . . . . . . . . . . . . . 19 2 Principe de fonctionnement de l’ordinateur 22 2.1 Modèle de l’ordinateur . . . . . . . . . . . . . . . . . . . . 23 2.2 Traitement de l’information . . . . . . . . . . . . . . . . . 27 2.3 Mémoire et action, données et programme . . . . . . . . . 29 2.4 À quoi ressemble le langage machine? . . . . . . . . . . . 30 2.4.1 Premier programme . . . . . . . . . . . . . . . . . 30 2.4.2 Questions sur le programme . . . . . . . . . . . . . 32 2.5 Mot d’état de programme (PSW) . . . . . . . . . . . . . . 33 2.6 Premier métalangage . . . . . . . . . . . . . . . . . . . . . 34 2.6.1 Vers un langage symbolique . . . . . . . . . . . . . 34 2.6.2 Adresses absolues, adresses relatives . . . . . . . . 35 2.6.3 Assembleur, table des symboles . . . . . . . . . . . 36 2.6.4 Traduction de langages . . . . . . . . . . . . . . . 37 2.7 Comment cela démarre-t-il? . . . . . . . . . . . . . . . . . 37 2.8 Quel est le rôle de la mémoire? . . . . . . . . . . . . . . . 39 2.9 La machine de Turing . . . . . . . . . . . . . . . . . . . . 40 TABLE DES MATIÈRES iv 3 Du système d’exploitation au processus 44 3.1 Premiers essais . . . . . . . . . . . . . . . . . . . . . . . . 45 3.2 Simultanéité et multiprogrammation . . . . . . . . . . . . 47 3.2.1 Chronologie d’une entrée-sortie . . . . . . . . . . . 48 3.3 Notion de processus . . . . . . . . . . . . . . . . . . . . . 49 3.4 Réification du calcul . . . . . . . . . . . . . . . . . . . . . 50 3.5 Notion de sous-programme . . . . . . . . . . . . . . . . . 52 3.6 Points de vue sur les programmes . . . . . . . . . . . . . . 54 3.7 Vision dynamique du programme: le processus . . . . . . 54 3.8 Attributs du système d’exploitation. . . . . . . . . . . . . 55 3.8.1 Mode d’exécution privilégié . . . . . . . . . . . . . 56 3.8.2 Contrôle des programmes . . . . . . . . . . . . . . 56 3.8.3 Contrôle de l’activité de tous les processus . . . . . 56 3.8.4 Monopole d’attribution des ressources . . . . . . . 57 3.8.4.1 Étreinte fatale . . . . . . . . . . . . . . . 57 3.8.5 Contrôle de la mémoire . . . . . . . . . . . . . . . 57 3.8.6 Contrôle des entrées-sorties . . . . . . . . . . . . . 58 3.8.7 Contrôle du temps . . . . . . . . . . . . . . . . . . 59 3.8.8 Contrôle de l’arrêt et du démarrage de l’ordinateur 59 3.9 Notion d’appel système . . . . . . . . . . . . . . . . . . . 59 3.10 Lancement d’un programme . . . . . . . . . . . . . . . . . 60 3.10.1 Shell . . . . . . . . . . . . . . . . . . . . . . . . . . 61 3.11 Synchronisation de processus, interruption . . . . . . . . . 63 3.11.1 Demande d’entrée-sortie . . . . . . . . . . . . . . . 63 3.11.2 Interruption de fin d’entrée-sortie . . . . . . . . . . 65 3.12 Ordonnancement de processus . . . . . . . . . . . . . . . . 67 3.12.1 Stratégies d’ordonnancement . . . . . . . . . . . . 68 3.12.2 Interruptions et exceptions . . . . . . . . . . . . . 69 3.12.3 Préemption . . . . . . . . . . . . . . . . . . . . . . 69 3.12.4 Synchronisation de processus et sections critiques . 70 3.12.4.1 Atomicité des opérations . . . . . . . . . 73 3.12.4.2 Masquage des interruptions . . . . . . . . 74 3.12.4.3 Verrouillage de la section critique . . . . 74 3.13 Chronologie des premiers systèmes d’exploitation . . . . . 76 4 Mémoire 79 4.1 Les problèmes à résoudre . . . . . . . . . . . . . . . . . . 80 4.2 La mémoire du programme . . . . . . . . . . . . . . . . . 81 4.2.1 Les mots de mémoire . . . . . . . . . . . . . . . . . 81 4.2.2 Les adresses . . . . . . . . . . . . . . . . . . . . . . 82 TABLE DES MATIÈRES v 4.2.3 Noms et variables . . . . . . . . . . . . . . . . . . 83 4.2.4 Protection de la mémoire . . . . . . . . . . . . . . 85 4.3 Partage de mémoire en multiprogrammation . . . . . . . . 86 4.3.1 Exemple: l’OS/360 . . . . . . . . . . . . . . . . . . 86 4.3.2 Translation des programmes . . . . . . . . . . . . . 87 4.4 Mémoire virtuelle . . . . . . . . . . . . . . . . . . . . . . . 89 4.4.1 Insuffisance de la mémoire statique . . . . . . . . . 89 4.4.2 Organisation générale . . . . . . . . . . . . . . . . 90 4.4.3 Pagination . . . . . . . . . . . . . . . . . . . . . . 91 4.4.4 Espaces adresse . . . . . . . . . . . . . . . . . . . . 95 4.4.5 Registres associatifs (Translation Lookaside Buffer, TLB) . . . . . . . . . . . . . . . . . . . . . . . . . 98 4.4.6 Tables de pages inverses . . . . . . . . . . . . . . . 100 4.4.7 Mémoire virtuelle segmentée . . . . . . . . . . . . 101 4.4.8 Petite chronologie de la mémoire virtuelle . . . . . 102 4.5 Hiérarchie de mémoire . . . . . . . . . . . . . . . . . . . . 103 4.5.1 Position du problème. . . . . . . . . . . . . . . . . 103 4.6 La technique du cache . . . . . . . . . . . . . . . . . . . . 104 4.6.1 Cache mémoire . . . . . . . . . . . . . . . . . . . . 104 4.6.2 Hiérarchie de mémoire: données numériques . . . . 106 4.6.3 Mise en œuvre du cache . . . . . . . . . . . . . . . 107 4.7 Langage et mémoire . . . . . . . . . . . . . . . . . . . . . 107 4.7.1 Langages à mémoire statique . . . . . . . . . . . . 107 4.7.2 Vecteur d’état d’un programme . . . . . . . . . . . 108 4.7.3 Langages à mémoire dynamique . . . . . . . . . . 109 4.7.3.1 Allocation de mémoire sur la pile. . . . . 110 4.7.3.2 Allocation de mémoire sur le tas . . . . . 111 4.7.3.3 Gestion de la mémoire dynamique . . . . 112 4.7.4 Mémoire d’un programme en cours d’exécution . . 113 5 Persistance 114 5.1 Mémoire auxiliaire . . . . . . . . . . . . . . . . . . . . . . 115 5.1.1 Structure physique du disque magnétique . . . . . 116 5.1.2 Stockage SSD . . . . . . . . . . . . . . . . . . . . . 118 5.1.3 Visions de la mémoire auxiliaire . . . . . . . . . . 119 5.2 Système de fichiers . . . . . . . . . . . . . . . . . . . . . . 121 5.2.1 Structure du système de fichiers Unix . . . . . . . 122 5.2.1.1 Notion de système de fichiers . . . . . . . 122 5.2.1.2 La i-liste . . . . . . . . . . . . . . . . . . 123 5.2.1.3 Répertoires de fichiers . . . . . . . . . . . 126 TABLE DES MATIÈRES vi 5.2.1.4 Création d’un système de fichiers . . . . . 129 5.2.2 Traitement de fichier . . . . . . . . . . . . . . . . . 132 5.2.2.1 Ouverture de fichier . . . . . . . . . . . . 133 5.2.3 Fichiers, programmes, mémoire virtuelle . . . . . . 133 5.2.4 Cache de disque . . . . . . . . . . . . . . . . . . . 134 5.3 Systèmes de fichiers en réseau: NFS, SANs et NAS . . . . 136 5.3.1 Disques connectés directement aux serveurs . . . . 136 5.3.2 Systèmes de fichiers en réseau . . . . . . . . . . . . 137 5.3.3 Architecture SAN . . . . . . . . . . . . . . . . . . 138 5.3.4 Architecture NAS . . . . . . . . . . . . . . . . . . 139 5.4 Critique des fichiers; systèmes persistants . . . . . . . . . 141 5.4.1 Reprise sur point de contrôle . . . . . . . . . . . . 145 6 Réseaux 148 6.1 Transmettre de l’information à distance . . . . . . . . . . 150 6.1.1 Théorie de l’information . . . . . . . . . . . . . . . 151 6.1.2 Premières réalisations . . . . . . . . . . . . . . . . 153 6.1.3 Un modèle pour les réseaux . . . . . . . . . . . . . 153 6.2 Couche 1, physique . . . . . . . . . . . . . . . . . . . . . . 155 6.3 Notion de protocole . . . . . . . . . . . . . . . . . . . . . 156 6.4 Couche 2, liaison de données . . . . . . . . . . . . . . . . 157 6.4.1 Notion d’adresse réseau . . . . . . . . . . . . . . . 159 6.4.2 Détection et correction d’erreur pour la couche 2 . 160 6.4.2.1 Découpage en trames (framing) . . . . . 160 6.4.2.2 Détection de trames endommagées . . . . 161 6.4.2.3 Contrôle de flux . . . . . . . . . . . . . . 162 6.4.3 Un exemple de liaison de données: Ethernet . . . . 165 6.5 Couche 3, réseau . . . . . . . . . . . . . . . . . . . . . . . 168 6.5.1 Commutation de circuits. . . . . . . . . . . . . . . 168 6.5.2 Commutation de paquets . . . . . . . . . . . . . . 169 6.5.3 Le protocole IP et l’Internet . . . . . . . . . . . . . 173 6.5.3.1 Organisation administrative de l’Internet 175 6.5.3.2 Organisation topographique de l’Internet 176 6.5.3.3 L’adresse et le datagramme IP . . . . . . 178 6.5.4 Exceptionàl’unicitédesadresses:traductiond’adresses (NAT) . . . . . . . . . . . . . . . . . . . . . . . . . 183 6.5.4.1 Le principe du standard téléphonique d’hôtel . . . . . . . . . . . . . . . . . . . 183 6.5.4.2 Adresses non routables . . . . . . . . . . 184 6.5.4.3 Accéder à l’Internet sans adresse routable 185 TABLE DES MATIÈRES vii 6.5.4.4 Réalisations . . . . . . . . . . . . . . . . 185 6.5.5 Une solution, quelques problèmes . . . . . . . . . . 188 6.5.6 Traduction de noms en adresses: le DNS . . . . . . 189 6.5.7 Mécanisme de la couche IP . . . . . . . . . . . . . 194 6.5.7.1 Algorithmes de routage . . . . . . . . . . 196 6.5.7.2 Calcul des tables de routage . . . . . . . 199 6.5.7.3 Reconfigurationencasdecoupuredeliaison202 6.5.7.4 Problèmes de routage . . . . . . . . . . . 205 6.5.8 Nouvelles tendances IP . . . . . . . . . . . . . . . 207 6.5.9 En quoi IP est-il supérieur à X25? . . . . . . . . . 208 6.5.9.1 Invention de la transmission par paquets 208 6.5.9.2 Commutation de circuits . . . . . . . . . 209 6.5.9.3 L’année charnière: 1972 . . . . . . . . . . 210 6.5.9.4 Commutation de paquets . . . . . . . . . 212 6.6 Couche 4, transport . . . . . . . . . . . . . . . . . . . . . 213 6.6.1 TCP (Transmission Control Protocol) . . . . . . . 213 6.6.1.1 Connexion . . . . . . . . . . . . . . . . . 214 6.6.1.2 Modèle client-serveur et numéros de port 214 6.6.1.3 Poignée de main en trois étapes (three- way handshake) . . . . . . . . . . . . . . 215 6.6.1.4 Contrôle de flux et évitement de congestion216 6.6.2 UDP (User Datagram Protocol) . . . . . . . . . . . 217 6.7 Les téléphonistes contre-attaquent: ATM . . . . . . . . . 217 6.8 Promiscuité sur un réseau local . . . . . . . . . . . . . . . 219 6.8.1 Rappel sur les réseaux locaux . . . . . . . . . . . . 220 6.8.2 Réseaux locaux virtuels (VLAN) . . . . . . . . . . 221 6.8.3 Sécurité du réseau de campus: VLAN ou VPN? . 222 6.9 Client–serveur ou pair à pair (peer to peer)? . . . . . . . . 223 6.10 Versatilité des protocoles pair à pair . . . . . . . . . . . . 225 6.10.1 Définition et usage du pair à pair . . . . . . . . . . 225 6.10.2 Problèmes à résoudre par le pair à pair . . . . . . 226 7 Protection et sécurité 229 7.1 Protection . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 7.1.1 Un parangon de protection: Multics . . . . . . . . 232 7.1.1.1 Les dispositifs de protection de Multics . 232 7.2 Sécurité . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234 7.2.1 Menaces, risques, vulnérabilités . . . . . . . . . . . 234 7.2.2 Principes de sécurité . . . . . . . . . . . . . . . . . 234 7.3 Chiffrement . . . . . . . . . . . . . . . . . . . . . . . . . . 236 TABLE DES MATIÈRES viii 7.3.1 Chiffrement symétrique à clé secrète . . . . . . . . 236 7.3.2 Naissance de la cryptographie informatique: Alan Turing . . . . . . . . . . . . . . . . . . . . . . . . . 237 7.3.3 Data Encryption Standard (DES) . . . . . . . . . . 238 7.3.4 Diffie, Hellman et l’échange de clés . . . . . . . . . 238 7.3.4.1 Le problème de l’échange de clés . . . . . 239 7.3.4.2 Fondementsmathématiquesdel’algorithme Diffie-Hellman . . . . . . . . . . . . . . . 240 7.3.4.3 Mise en œuvre de l’algorithme Diffie- Hellman . . . . . . . . . . . . . . . . . . . 243 7.3.5 Le chiffrement asymétrique à clé publique . . . . . 245 7.3.6 Pretty Good Privacy (PGP) et signature . . . . . . 249 7.3.6.1 L’attaque par le milieu (Man in the middle)250 7.3.6.2 Signature . . . . . . . . . . . . . . . . . . 251 7.3.7 Usages du chiffrement: VPN . . . . . . . . . . . . 252 7.3.7.1 Principes du réseau privé virtuel . . . . . 254 7.3.7.2 IPsec . . . . . . . . . . . . . . . . . . . . 255 7.3.7.3 Autres réseaux privés virtuels . . . . . . . 256 7.4 Annuaire électronique et gestion de clés . . . . . . . . . . 257 7.5 Sécurité d’un site en réseau . . . . . . . . . . . . . . . . . 259 7.5.1 Découpage et filtrage . . . . . . . . . . . . . . . . . 259 7.6 Les CERT (Computer Emergency Response Teams) . . . . 263 7.6.0.1 Organisation des CERT . . . . . . . . . . 263 7.6.0.2 Faut-il publier les failles de sécurité? . . 264 8 De Multics à Unix et au logiciel libre 265 8.1 Un échec plein d’avenir. . . . . . . . . . . . . . . . . . . . 265 8.2 Où l’on commence à rêver à Unix . . . . . . . . . . . . . . 268 8.3 Les hommes d’Unix. . . . . . . . . . . . . . . . . . . . . . 271 8.4 Introduction à la démarche unixienne. . . . . . . . . . . . 273 8.5 Dissémination d’Unix . . . . . . . . . . . . . . . . . . . . 277 8.5.1 Un système exigeant . . . . . . . . . . . . . . . . . 277 8.5.2 Naissance d’une communauté . . . . . . . . . . . . 278 8.5.3 Le schisme . . . . . . . . . . . . . . . . . . . . . . 282 8.6 Aux sources du logiciel libre . . . . . . . . . . . . . . . . . 284 8.6.1 Principes . . . . . . . . . . . . . . . . . . . . . . . 284 8.6.2 Préhistoire . . . . . . . . . . . . . . . . . . . . . . 284 8.6.3 Précurseurs . . . . . . . . . . . . . . . . . . . . . . 285 8.6.4 Économie du logiciel . . . . . . . . . . . . . . . . . 286 8.6.4.1 Concurrence monopolistique . . . . . . . 286 TABLE DES MATIÈRES ix 8.6.4.2 Économie du système d’exploitation . . . 287 8.6.5 Modèle du logiciel libre . . . . . . . . . . . . . . . 289 8.6.6 Une autre façon de faire du logiciel . . . . . . . . . 293 8.6.7 Linux . . . . . . . . . . . . . . . . . . . . . . . . . 295 9 Au-delà du modèle de von Neumann 299 9.1 Architectures révolutionnaires . . . . . . . . . . . . . . . . 300 9.1.1 SIMD (Single Instruction Multiple Data) . . . . . 300 9.1.2 Architectures cellulaires et systoliques . . . . . . . 301 9.1.3 MIMD (Multiple Instructions Multiple Data) . . . 302 9.2 Architectures réformistes . . . . . . . . . . . . . . . . . . . 303 9.3 Le pipe-line . . . . . . . . . . . . . . . . . . . . . . . . . . 305 9.3.1 Principe du pipe-line . . . . . . . . . . . . . . . . . 305 9.3.2 Histoire et avenir du pipe-line . . . . . . . . . . . . 306 9.3.3 Cycle de processeur, fréquence d’horloge . . . . . . 307 9.3.4 Processeurs asynchrones . . . . . . . . . . . . . . . 307 9.3.5 Apport de performances par le pipe-line . . . . . . 308 9.3.6 Limite du pipe-line: les branchements . . . . . . . 308 9.3.7 Limite du pipe-line: les interruptions . . . . . . . . 309 9.4 RISC, CISC et pipe-line . . . . . . . . . . . . . . . . . . . 311 9.4.1 Architecture des ordinateurs, avant les micropro- cesseurs . . . . . . . . . . . . . . . . . . . . . . . . 311 9.4.2 Apogée des architectures CISC . . . . . . . . . . . 312 9.4.3 Naissance de l’idée RISC . . . . . . . . . . . . . . 312 9.4.4 Avènement des microprocesseurs RISC . . . . . . . 313 9.4.5 Résistance des architectures CISC . . . . . . . . . 314 9.4.6 L’avenir appartient-il au RISC? . . . . . . . . . . 314 9.4.7 Micro-code: le retour . . . . . . . . . . . . . . . . 315 9.5 Super-scalaire . . . . . . . . . . . . . . . . . . . . . . . . . 316 9.6 Architecture VLIW (Very Long Instruction Word) . . . . 318 9.6.1 Parallélisme explicite . . . . . . . . . . . . . . . . . 319 9.6.2 Élimination de branchements . . . . . . . . . . . . 320 9.6.3 Optimisationdesaccèsmémoire:chargementanticipé321 9.6.4 De la programmation VLIW . . . . . . . . . . . . 322 10 Machines virtuelles et micro-noyaux 324 10.1 Notion de machine virtuelle . . . . . . . . . . . . . . . . . 325 10.1.1 Émulation et machines virtuelles . . . . . . . . . . 325 10.1.2 De CP/67 à VM/CMS . . . . . . . . . . . . . . . . 327 10.2 Machines virtuelles langage: l’exemple Java . . . . . . . . 327 TABLE DES MATIÈRES x 10.3 Machines virtuelles système . . . . . . . . . . . . . . . . . 329 10.3.1 Que veut-on virtualiser? . . . . . . . . . . . . . . . 330 10.3.2 Pratique des machines virtuelles . . . . . . . . . . 330 10.3.3 Différents niveaux de virtualisation . . . . . . . . . 332 10.3.4 Administration d’un système informatique . . . . . 334 10.3.5 Administration d’un système virtuel éteint. . . . . 334 10.3.6 Déplacer une machine virtuelle dans le réseau . . . 336 10.3.6.1 Sur un réseau local Ethernet . . . . . . . 336 10.3.6.2 Dans un réseau IP avec du routage. . . . 336 10.3.6.3 Combiner la couche 2 et la couche 3? . . 337 10.4 Machines virtuelles applicatives . . . . . . . . . . . . . . . 337 10.4.1 Un logiciel, une VM, un OS sur mesure, compilés ensemble, en langage fonctionnel . . . . . . . . . . 337 10.4.2 Unikernel: avantages et inconvénients . . . . . . . 338 10.4.3 MirageOS . . . . . . . . . . . . . . . . . . . . . . . 339 10.5 Informatique en nuage (Cloud Computing) . . . . . . . . . 340 10.5.1 Une véritable innovation technique . . . . . . . . . 340 10.5.2 Trois formes pour l’informatique en nuage . . . . . 341 10.5.3 Répartir les services en nuage grâce au DNS . . . . 342 10.6 Les threads . . . . . . . . . . . . . . . . . . . . . . . . . . 342 10.6.1 Séparer le fil d’exécution des ressources allouées . . 342 10.6.2 Définition des threads . . . . . . . . . . . . . . . . 343 10.6.3 Avantages procurés par les threads . . . . . . . . . 344 10.6.4 Implémentation des threads . . . . . . . . . . . . . 345 10.6.4.1 Threads en mode utilisateur . . . . . . . 345 10.6.4.2 Threads en mode noyau . . . . . . . . . . 346 10.6.5 Inconvénients des threads . . . . . . . . . . . . . . 346 10.7 Micro-noyaux . . . . . . . . . . . . . . . . . . . . . . . . . 347 10.7.1 Chorus . . . . . . . . . . . . . . . . . . . . . . . . 348 10.7.2 Mach . . . . . . . . . . . . . . . . . . . . . . . . . 351 10.7.3 Eumel, L3, L4 . . . . . . . . . . . . . . . . . . . . 352 10.7.4 Conclusion sur les micro-noyaux . . . . . . . . . . 354 11 Micro-informatique 355 11.1 Naissance et essor d’une industrie . . . . . . . . . . . . . . 355 11.2 Quel système pour les micro-ordinateurs? . . . . . . . . . 360 11.2.1 Élégie pour CP/M . . . . . . . . . . . . . . . . . . 360 11.2.2 De MS-DOS à Windows . . . . . . . . . . . . . . . 363 11.2.2.1 Les années IBM et MS-DOS . . . . . . . 363 11.2.2.2 Le schisme entre OS/2 et Windows . . . 364

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.