Splendeurs Et Servitudes Des Systèmes D'exploitation
Total Page:16
File Type:pdf, Size:1020Kb
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é des adresses : traduction d’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 Reconfiguration en cas de coupure de liaison202 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 .