ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Systèmes d’Exploitation : Gestion des processus Nicolas Prigent et Frédéric Tronel Supélec - Campus de Rennes 3 octobre 2012 Dernier commit c648026 (HEAD, gforge/master, master) par Frederic Tronel <[email protected]> à Mon Oct 1 11 :51 :45 2012 +0200 Modifications non commitées M contenu.tex M ../Ressources/biblio.tex Fichiers .tex biblio.tex contenu.tex processus-handout.tex processus-slides.tex Figures .fig Autres figures cartemere.pdf Core i7 920 back.png Core i7 920 front.png dijkstra.jpg kernel-development.jpg lga1366-ddr0-0-63.png lga1366.png LGA Socket 1366.jpg linux-kernel.jpg marsPathFinder.png OS-tanenbaum.jpg RoundRobin.png RRPrio.png wikipedia.png windowsinternals.jpg Code Gestion des processus,15026/02 3 octobre 2012 1 / 84 ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Bibliographie Systèmes d’exploitation, Andrew Tanenbaum, Pearson Education, 3ème Édition, 26 septembre 2008, ISBN-10 : 2744072990 Microsoft Windows Internals : Part 1 and 2. Mark E. Russinovich, David A. Soloman et Alex Ionescu Microsoft Press, Sixième Édition, 17 avril 2012, ISBN-10 : 0735648739 Understanding The Linux Kernel, Daniel P. Bovet et Marco Cesati, O’Reilly, Troisième édition, 15 décembre 2005, ISBN-10 : 0596005652 Gestion des processus,15026/02 Bibliographie 3 octobre 2012 2 / 84 ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Bibliographie Linux Kernel Development, Robert Love, Addison Wesley, Troisième Édition, 22 juin 2010, ISBN10 : 0672329468 Wikipedia, L’encyclopédie libre. Gestion des processus,15026/02 Bibliographie 3 octobre 2012 3 / 84 ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Familles de processeur Les processeurs actuels peuvent être classés en deux catégories selon le type d’instructions et de modes d’adressage qu’ils supportent : • Processeurs CISC : type de processeurs le plus ancien. • Processeurs RISC : évolution architecturale apparue à la fin des années 1970 et fortement développée durant les années 1980. Gestion des processus,15026/02 Architecture 3 octobre 2012 4 / 84 ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Processeurs CISC Complex Instruction Set Computer Ce type de processeurs est le premier apparu. Les processeurs CISC se caractérisent par : • • • • • • Nombreuses instructions. Nombreux modes d’adressages disponibles. Possibilités d’opérations complexes en une seule instruction. Conçus pour être programmés en assembleur par des humains. Instructions binaires de tailles variables. Syndrome TIMTOWTDI. Gestion des processus,15026/02 Architecture 3 octobre 2012 5 / 84 ÉCOLE SUPÉRIEURE Processeurs CISC D’ÉLECTRICITÉ Avantages • Les instructions les plus utilisées sont plus courtes. • ⇒ Compression du code binaire. • L’assembleur possède certaines caractéristiques des langages de haut niveau : • Manipulation de chaı̂nes de caractères. • Modification de tableaux. Gestion des processus,15026/02 Architecture 3 octobre 2012 6 / 84 ÉCOLE SUPÉRIEURE Processeurs CISC D’ÉLECTRICITÉ • • • • • Exemples Intel x86 Digital VAX PDP-11 Zilog Z80 Motorola 680x0 Gestion des processus,15026/02 Architecture 3 octobre 2012 7 / 84 ÉCOLE SUPÉRIEURE Processeurs CISC D’ÉLECTRICITÉ Inconvénients • • • • Complexité du décodage des instructions. Difficulté de l’optimisation de l’architecture du processeur. Difficulté de l’optimisation du code assembleur (même pour un humain). Il n’est pas clair qu’une instruction complexe (effectuant plusieurs opérations plus simples en une seule instruction) s’effectue plus rapidement que l’enchaı̂nement de chacune de ses sous-opérations. • La place occupée par le décodage des instructions sur le die n’est plus disponible pour ajouter des registres et/ou du cache. Gestion des processus,15026/02 Architecture 3 octobre 2012 8 / 84 ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Processeurs CISC Vers une autre architecture Les défauts des processeurs CISC culminent à la fin des années 1970. • De moins en moins de code est écrit directement en assembleur. • Le langage C est vu comme un macro-assembleur portable. • Il est difficile d’écrire des compilateurs optimisant du code pour les processeurs CISC. • Seul un petit pourcentage des instructions disponibles est réellement utilisé. • Il serait plus simple d’optimiser l’architecture de processeurs possédant un petit nombre d’instructions, et peu de modes d’adressages. • De tels processeurs pourraient posséder un plus grand nombre de registres et un plus grand cache. Gestion des processus,15026/02 Architecture 3 octobre 2012 9 / 84 ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Processeurs RISC Reduced Instruction Set Computer • Petit nombre d’instructions. • Un seul mode d’adressage (direct). • Code assembleur conçu pour être généré automatiquement par des compilateurs. • Une seule façon de faire une chose. • Grand nombre de registres. • Instructions binaires de taille fixe. Gestion des processus,15026/02 Architecture 3 octobre 2012 10 / 84 ÉCOLE SUPÉRIEURE Processeurs RISC D’ÉLECTRICITÉ Avantages • L’architecture peut être optimisée plus facilement. • Le décodage des instructions est plus simple. • La place gagnée sur le die permet d’ajouter de nombreux registres et du cache. • La conception des compilateurs est facilitée. Gestion des processus,15026/02 Architecture 3 octobre 2012 11 / 84 ÉCOLE SUPÉRIEURE Processeurs RISC D’ÉLECTRICITÉ Inconvénients • La taille fixe des instructions induit une taille de code plus grande. • Le cache d’instruction est donc moins bien utilisé. Gestion des processus,15026/02 Architecture 3 octobre 2012 12 / 84 ÉCOLE SUPÉRIEURE Processeurs RISC D’ÉLECTRICITÉ • • • • • • Exemples ARM (ARM Ltd) Sparc (Sun, Oracle) PowerPC (IBM) Alpha (Digital) MIPS PA-Risc (Hewlett Packard) Gestion des processus,15026/02 Architecture 3 octobre 2012 13 / 84 ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ RISC vs CISC • D’un point de vue architectural, les processeurs RISC ont gagné la bataille technologique. • D’un point de vue commercial, les parts de marché des processeurs CISC (Intel x86 et x86 64) sont toujours très importantes. • Pour autant, Intel et AMD se sont tournés vers des architectures RISC même pour leurs processeurs CISC : • Les cœurs de processeurs sont des RISC (micro-code RISC). • Une coquille externe traduit les instructions CISC en micro-code pour le cœur RISC. • Toutes les optimisations des processeurs RISC peuvent être appliquées. • La compatibilité arrière est préservée, les clients sont contents. Gestion des processus,15026/02 Architecture 3 octobre 2012 14 / 84 Pipeline ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Principes Technologie directement inspirée du Fordisme. L’exécution d’une instruction est découpée en sous-tâches. Chacune des tâches dépend de la précédente mais elles peuvent être exécutées en parallèle : • • • • • Rapatriement d’une instruction (Instruction Fetch). Décodage de l’instruction (Instruction Decoding). Récupération des paramètres de l’instruction (Data Fetch). Exécution effective (Execution). Écriture des résultats (Result Writeback). Gestion des processus,15026/02 Architecture 3 octobre 2012 15 / 84 Pipeline ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Principes • Il est donc possible (par analogie à une chaı̂ne de montage de voitures) d’exécuter chacune de ces tâches en parallèle. • Il devient ainsi possible de produire le résultat d’une instruction à chaque cycle d’horloge. • Même lorsque le calcul complet mené par l’instruction requerrait plusieurs cycles. • C’est un premier exemple de concurrence au sein du processeur. Gestion des processus,15026/02 Architecture 3 octobre 2012 16 / 84 Pipeline ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Instructions Illustration 1 2 Cycles d’horloge 3 4 5 6 7 8 1 2 3 4 Unités fonctionnelles IF ID DF EX RW Gestion des processus,15026/02 Architecture Sortie 3 octobre 2012 17 / 84 Pipeline ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Instructions 1 2 3 4 Illustration 1 IF 2 Cycles d’horloge 3 4 5 6 Unités fonctionnelles IF ID DF EX RW 1 Gestion des processus,15026/02 Architecture 7 8 Sortie 3 octobre 2012 17 / 84 Pipeline ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Instructions 1 2 3 4 Illustration 1 IF 2 Cycles d’horloge 3 4 5 6 Unités fonctionnelles IF ID DF EX RW 1 Gestion des processus,15026/02 Architecture 7 8 Sortie 3 octobre 2012 17 / 84 Pipeline ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Instructions 1 2 3 4 Illustration 1 IF 2 ID Cycles d’horloge 3 4 5 6 Unités fonctionnelles IF ID DF EX RW 1 1 Gestion des processus,15026/02 Architecture 7 8 Sortie 3 octobre 2012 17 / 84 Pipeline ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Instructions 1 2 3 4 Illustration 1 IF 2 ID IF Cycles d’horloge 3 4 5 6 Unités fonctionnelles IF ID DF EX RW 2 1 Gestion des processus,15026/02 Architecture 7 8 Sortie 3 octobre 2012 17 / 84 Pipeline ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Instructions 1 2 3 4 Illustration 1 IF 2 ID IF Cycles d’horloge 3 4 5 6 Unités fonctionnelles IF ID DF EX RW 2 1 Gestion des processus,15026/02 Architecture 7 8 Sortie 3 octobre 2012 17 / 84 Pipeline ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Instructions 1 2 3 4 Illustration 1 IF 2 ID IF Cycles d’horloge 3 4 5 6 DF Unités fonctionnelles IF ID DF EX RW 2 1 1 Gestion des processus,15026/02 Architecture 7 8 Sortie 3 octobre 2012 17 / 84 Pipeline ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Instructions 1 2 3 4 Illustration 1 IF 2 ID IF Cycles d’horloge 3 4 5 6 DF ID Unités fonctionnelles IF ID DF EX RW 2 2 1 Gestion des processus,15026/02 Architecture 7 8 Sortie 3 octobre 2012 17 / 84 Pipeline ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Instructions 1 2 3 4 Illustration 1 IF 2 ID IF Cycles d’horloge 3 4 5 6 DF ID IF Unités fonctionnelles IF ID DF EX RW 3 2 1 Gestion des processus,15026/02 Architecture 7 8 Sortie 3 octobre 2012 17 / 84 Pipeline ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Instructions 1 2 3 4 Illustration 1 IF 2 ID IF Cycles d’horloge 3 4 5 6 DF ID IF Unités fonctionnelles IF ID DF EX RW 3 2 1 Gestion des processus,15026/02 Architecture 7 8 Sortie 3 octobre 2012 17 / 84 Pipeline ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Instructions 1 2 3 4 Illustration 1 IF 2 ID IF Cycles d’horloge 3 4 5 6 DF EX ID IF Unités fonctionnelles IF ID DF EX RW 3 2 1 1 Gestion des processus,15026/02 Architecture 7 8 Sortie 3 octobre 2012 17 / 84 Pipeline ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Instructions 1 2 3 4 Illustration 1 IF 2 ID IF Cycles d’horloge 3 4 5 6 DF EX ID DF IF Unités fonctionnelles IF ID DF EX RW 3 2 2 1 Gestion des processus,15026/02 Architecture 7 8 Sortie 3 octobre 2012 17 / 84 Pipeline ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Instructions 1 2 3 4 Illustration 1 IF 2 ID IF 3 DF ID IF Cycles d’horloge 4 5 6 EX DF ID Unités fonctionnelles IF ID DF EX RW 3 3 2 1 Gestion des processus,15026/02 Architecture 7 8 Sortie 3 octobre 2012 17 / 84 Pipeline ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Instructions 1 2 3 4 Illustration 1 IF 2 ID IF 3 DF ID IF Cycles d’horloge 4 5 6 EX DF ID IF Unités fonctionnelles IF ID DF EX RW 4 3 2 1 Gestion des processus,15026/02 Architecture 7 8 Sortie 3 octobre 2012 17 / 84 Pipeline ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Instructions 1 2 3 4 Illustration 1 IF 2 ID IF 3 DF ID IF Cycles d’horloge 4 5 6 EX DF ID IF Unités fonctionnelles IF ID DF EX RW 3 2 1 Gestion des processus,15026/02 Architecture 7 8 Sortie 3 octobre 2012 17 / 84 Pipeline ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Instructions 1 2 3 4 Illustration 1 IF 2 ID IF 3 DF ID IF Cycles d’horloge 4 5 6 EX RW DF ID IF Unités fonctionnelles IF ID DF EX RW 3 2 1 1 Gestion des processus,15026/02 Architecture 7 8 Sortie 3 octobre 2012 17 / 84 Pipeline ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Instructions 1 2 3 4 Illustration 1 IF 2 ID IF 3 DF ID IF Cycles d’horloge 4 5 6 EX RW DF EX ID IF Unités fonctionnelles IF ID DF EX RW 3 2 2 1 Gestion des processus,15026/02 Architecture 7 8 Sortie 3 octobre 2012 17 / 84 Pipeline ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Instructions 1 2 3 4 Illustration 1 IF 2 ID IF 3 DF ID IF Cycles d’horloge 4 5 6 EX RW DF EX ID DF IF Unités fonctionnelles IF ID DF EX RW 3 3 2 1 Gestion des processus,15026/02 Architecture 7 8 Sortie 3 octobre 2012 17 / 84 Pipeline ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Instructions 1 2 3 4 Illustration 1 IF 2 ID IF 3 DF ID IF Cycles d’horloge 4 5 6 EX RW DF EX ID DF IF ID Unités fonctionnelles IF ID DF EX RW 4 3 2 1 Gestion des processus,15026/02 Architecture 7 8 Sortie 3 octobre 2012 17 / 84 Pipeline ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Instructions 1 2 3 4 Illustration 1 IF 2 ID IF 3 DF ID IF Cycles d’horloge 4 5 6 EX RW DF EX ID DF IF ID Unités fonctionnelles IF ID DF EX RW 3 2 1 Gestion des processus,15026/02 Architecture 7 8 Sortie 1 3 octobre 2012 17 / 84 Pipeline ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Instructions 1 2 3 4 Illustration 1 IF 2 ID IF 3 DF ID IF Cycles d’horloge 4 5 6 EX RW DF EX RW ID DF IF ID Unités fonctionnelles IF ID DF EX RW 3 2 2 Gestion des processus,15026/02 Architecture 7 8 Sortie 1 3 octobre 2012 17 / 84 Pipeline ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Instructions 1 2 3 4 Illustration 1 IF 2 ID IF 3 DF ID IF Cycles d’horloge 4 5 6 EX RW DF EX RW ID DF EX IF ID Unités fonctionnelles IF ID DF EX RW 3 3 2 Gestion des processus,15026/02 Architecture 7 8 Sortie 1 3 octobre 2012 17 / 84 Pipeline ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Instructions 1 2 3 4 Illustration 1 IF 2 ID IF 3 DF ID IF Cycles d’horloge 4 5 6 EX RW DF EX RW ID DF EX IF ID DF Unités fonctionnelles IF ID DF EX RW 4 3 2 Gestion des processus,15026/02 Architecture 7 8 Sortie 1 3 octobre 2012 17 / 84 Pipeline ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Instructions 1 2 3 4 Illustration 1 IF 2 ID IF 3 DF ID IF Cycles d’horloge 4 5 6 EX RW DF EX RW ID DF EX IF ID DF Unités fonctionnelles IF ID DF EX RW 3 2 Gestion des processus,15026/02 Architecture 7 8 Sortie 2 3 octobre 2012 17 / 84 Pipeline ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Instructions 1 2 3 4 Illustration 1 IF 2 ID IF 3 DF ID IF Cycles d’horloge 4 5 6 EX RW DF EX RW ID DF EX IF ID DF Unités fonctionnelles IF ID DF EX RW 3 3 Gestion des processus,15026/02 Architecture 7 8 RW Sortie 2 3 octobre 2012 17 / 84 Pipeline ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Instructions 1 2 3 4 Illustration 1 IF 2 ID IF 3 DF ID IF Cycles d’horloge 4 5 6 EX RW DF EX RW ID DF EX IF ID DF Unités fonctionnelles IF ID DF EX RW 4 3 Gestion des processus,15026/02 Architecture 7 8 RW EX Sortie 2 3 octobre 2012 17 / 84 Pipeline ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Instructions 1 2 3 4 Illustration 1 IF 2 ID IF 3 DF ID IF Cycles d’horloge 4 5 6 EX RW DF EX RW ID DF EX IF ID DF Unités fonctionnelles IF ID DF EX RW 3 Gestion des processus,15026/02 Architecture 7 8 RW EX Sortie 3 3 octobre 2012 17 / 84 Pipeline ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Instructions 1 2 3 4 Illustration 1 IF 2 ID IF 3 DF ID IF Cycles d’horloge 4 5 6 EX RW DF EX RW ID DF EX IF ID DF Unités fonctionnelles IF ID DF EX RW 4 Gestion des processus,15026/02 Architecture 7 8 RW EX RW Sortie 3 3 octobre 2012 17 / 84 Pipeline ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Instructions 1 2 3 4 Illustration 1 IF 2 ID IF 3 DF ID IF Cycles d’horloge 4 5 6 EX RW DF EX RW ID DF EX IF ID DF Unités fonctionnelles IF ID DF EX RW 7 8 RW EX RW Sortie 4 Gestion des processus,15026/02 Architecture 3 octobre 2012 17 / 84 Pipeline ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Profondeurs de pipeline Révision Marque commerciale Willamette (180 nm) Northwood (130 nm) Gallatin (130 nm) Prescott (90 nm) Cedar Mill (65 nm) Smithfield (90 nm) Presler (65nm) Penryn (45nm) Nehalem (45nm) Celeron, Pentium 4 Celeron, Pentium 4, Pentium 4 HT Pentium 4 HT Extreme Edition, Xeon Celeron D, Pentium 4, Pentium 4 HT, Pentium 4 Extreme Edition Celeron D, Pentium 4 Pentium D Pentium D Pentium Core Xeon Gestion des processus,15026/02 Profondeur Architecture 20 20 20 31 31 31 31 12-14 16 3 octobre 2012 19 / 84 Pipeline ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Limites • Afin de maintenir les performances du processeur (à savoir une instruction exécutée par cycle d’horloge), il convient que le pipeline ne se vide jamais. • Ceci n’est pas vraiment possible, car le processeur ne sait pas toujours quelles sont les prochaines instructions à exécuter : Les branchements conditionnels conduisent potentiellement vers deux instructions situées à des endroits différents. 2 La faible vitesse de la mémoire (comparativement à celle du processeur) ne permet pas de remplir le pipeline à la vitesse à laquelle il se vide. 3 Les traitements déclenchés par des évènements extérieurs (et donc imprévisibles) peuvent conduire le processeur à devoir exécuter des instructions non prévues. 1 Gestion des processus,15026/02 Architecture 3 octobre 2012 20 / 84 Pipeline ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Extensions • Pour lutter contre les ruptures du pipeline dues aux branchements conditionnels, les architectes ont proposé : • Architectures superscalaires. • Exécution spéculative. • Prédiction de branchement. • Afin de préserver le remplissage du pipeline, même lorsque les temps d’accès à la mémoire centrale sont longs, on utilise des mémoires caches. Gestion des processus,15026/02 Architecture 3 octobre 2012 21 / 84 ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Architecture superscalaire Une architecture est dite superscalaire lorsqu’elle possède plusieurs exemplaires de chacune des unités d’exécution. • Il est possible d’avoir plusieurs pipelines. • Les unités éventuellement non utilisées peuvent ne pas être alimentées et réduire la consommation électrique. Gestion des processus,15026/02 Architecture 3 octobre 2012 22 / 84 ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Prédiction de branchement • Le processeur peut maintenir dans une mémoire interne (de faible capacité) des statistiques sur les tests conditionnels. • Pour les instructions de tests récemment rencontrées, il peut maintenir le pourcentage de fois où le test a rendu vrai. • En s’aidant cette statistique, il peut tenter de prédire quelle sera la prochaine instruction à exécuter après un test conditionnel : • Si la prédiction est correcte, le pipeline est correctement rempli. • Si elle est fausse, il faut annuler les effets des instructions dans le pipeline qui ne correspondent pas à l’exécution qui doit avoir lieu. • En cas de succès, la vitesse d’exécution est maintenue maximale. • En cas d’erreur le surcoût est important. Gestion des processus,15026/02 Architecture 3 octobre 2012 23 / 84 ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Exécution spéculative En couplant les architecture superscalaires avec plusieurs pipelines, on peut : • Exécuter les deux branches d’un saut conditionnel simultanément (chacune dans un pipeline). • Le pipeline qui contient la branche qui ne devra pas être prise sera tout simplement vidé. Ceci permet de maintenir une vitesse maximale dans de nombreuses circonstances. C’est un second exemple de concurrence au sein du processeur. Gestion des processus,15026/02 Architecture 3 octobre 2012 24 / 84 ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Architecture multiprocesseurs • Les architectes ont assez vite compris qu’une des manières d’augmenter les performances du matériel était d’en augmenter le parallélisme. • Plusieurs manières d’obtenir ce résultat ont été testées : Augmenter le parallélisme au sein du processeur (architectures multiscalaires, hyperpipelinées) 2 Système multi-processeurs. 1 Gestion des processus,15026/02 Architecture 3 octobre 2012 25 / 84 ÉCOLE SUPÉRIEURE Architecture multiprocesseurs D’ÉLECTRICITÉ Catégories On distingue deux types de systèmes multiprocesseurs. Selon que le type d’accès à la mémoire associée à chacun des processeurs : • Accès uniformes (Symetric Multi Processor ). • Accès non-uniforme (Non Uniform Memory Access). Gestion des processus,15026/02 Architecture 3 octobre 2012 26 / 84 ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Architectures multithreadées Une architecture est dite multithreadée si elle est capable d’exécuter plusieurs fils d’exécution de manière concurrente. On distingue trois technologies (qui peuvent être combinées) : • Pseudo-concurrence à grain fin • Concurrence réelle à grain fin • Multicœur Gestion des processus,15026/02 Architecture 3 octobre 2012 27 / 84 ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Architectures multithreadées Pseudo-concurrence à grain fin • Dans ce type d’architecture, à chaque cycle d’horloge un nouveau fil d’exécution est choisi par le matériel. • Il s’agit clairement d’une pseudo-concurrence, puisque les instructions des divers fils d’exécution ne sont pas exécutées parallèlement, mais entrelacées avec le grain le plus fin (cycle d’horloge). Gestion des processus,15026/02 Architecture 3 octobre 2012 28 / 84 ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Architectures multithreadées Concurrence réelle à grain fin (SMT : Simultaneous Multi Threading) • Maximiser l’utilisation des différentes unités d’exécution (architectures multiscalaires). • Ajout d’une unité logique permettant d’allouer les différentes unités d’exécution à deux (ou plus) fils d’exécution. • Architecture SMP. • Les processeurs HyperThreading d’Intel sont des exemples de cette technologie. • Les processeurs UltraSparc T1, T2 (Oracle, ex Sun) sont des exemples de cette technologie. Gestion des processus,15026/02 Architecture 3 octobre 2012 29 / 84 ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Architectures multithreadées Multicœur (Multicore) • Il s’agit ”simplement” de graver plusieurs cœurs d’un même processeur sur le même die. • Architecture SMP. • Les processeurs Intel ou AMD multi-cœurs sont des exemples de cette technologie. • Les processeurs UltraSparc T1, T2 (Oracle, ex Sun) sont des exemples de cette technologie. Gestion des processus,15026/02 Architecture 3 octobre 2012 30 / 84 ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Temps d’accès à la mémoire Constatation Les temps d’accès à la mémoire (RAM) sont d’un ordre de grandeur plus lent que la vitesse d’exécution pure du processeur. • Typiquement un processeur récent peut exécuter une instruction à chaque cycle d’horloge (2 GHz ⇒ 2 Ginstr.s−1 ). • Une barrette de RAM DDR-3 cadencée à 266 MHz (DDR3-1066) peut transférer ≈ 17 Go.s−1 . • Pour une instruction de taille moyenne de 10 octets, on obtient au mieux 1.7 Ginstr.s−1 . • On ne peut donc pas alimenter le pipeline à la vitesse du processeur. • Par ailleurs, cette bande passante doit être partagée par l’ensemble des fils d’exécution (couramment 8 actuellement). Gestion des processus,15026/02 Architecture 3 octobre 2012 31 / 84 ÉCOLE Caches SUPÉRIEURE D’ÉLECTRICITÉ Une manière de compenser cette perte de vitesse est d’utiliser une mémoire cache. • Il s’agit d’une mémoire directement intégrée sur le die. • Sa vitesse de lecture/écriture est inversement proportionnelle à sa taille. • Comme la taille du cache est inférieure à celle de la mémoire, il se produit forcément des collisions. • Chaque cache possède sa politique de remplacement. • Les processeurs modernes possèdent en général au moins deux niveaux de caches (L1,L2), sinon trois. Gestion des processus,15026/02 Architecture 3 octobre 2012 32 / 84 ÉCOLE Caches SUPÉRIEURE D’ÉLECTRICITÉ Dimension d’un cache On peut se représenter un cache comme une matrice d’octets. Un cache est caractérisé par son nombre de lignes (cache rows), et son nombre de colonnes (cache row size). Sa taille (cache size) est donc simplement la multiplication entre le nombre de lignes et la largeur d’une ligne. Exemples Cache L1 d’un processeur actuel : 1024 lignes de longueur 64 octets (64 ko). Cache L2 d’un processeur actuel : à partir de 256 ko jusqu’à quelques méga-octets. Gestion des processus,15026/02 Architecture 3 octobre 2012 33 / 84 Caches ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Politique de remplacement La modification d’un cache se fait une ligne à la fois. Il faut choisir cette ligne. C’est le rôle de la politique de remplacement. Cette politique se situe entre deux extrêmes : • Le contenu d’adresse mémoire donnée ne peut être placé que dans une seule ligne bien précise (et toujours la même). • Le contenu d’une adresse mémoire donnée peut être placé dans n’importe quelle ligne de cache. Associativité Le nombre de lignes dans lesquelles peut être stockée une donnée est appelé l’associativité du cache. Gestion des processus,15026/02 Architecture 3 octobre 2012 34 / 84 ÉCOLE Caches SUPÉRIEURE D’ÉLECTRICITÉ Associativité Associativité complète Lorsque n’importe quelle ligne de cache peut être utilisée pour stocker une donnée provenant de n’importe quelle adresse, on dit que le cache est complètement associatif (fully associative). Associativité partielle Lorsque que seulement k lignes de cache peuvent être utilisées pour stocker une donnée, on dit que le cache est k -associatif (k-way associativity). Gestion des processus,15026/02 Architecture 3 octobre 2012 35 / 84 Caches ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Associativité complète Avantages • Meilleure utilisation du cache Inconvénients • Il est nécessaire de parcourir toutes les lignes pour savoir si le contenu d’une adresse mémoire est présent. Gestion des processus,15026/02 Architecture 3 octobre 2012 36 / 84 Caches ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Associativité partielle Avantages • Il ne faut consulter que k lignes pour savoir si le contenu d’une adresse mémoire est présent. Inconvénients • Le cache peut ne pas être complètement rempli et pourtant une donnée peut être retirée du cache pour faire de la place à une autre avec laquelle elle entre en collision (ces deux adresses mémoire doivent être stockées sur les mêmes lignes de cache). Gestion des processus,15026/02 Architecture 3 octobre 2012 37 / 84 ÉCOLE Caches SUPÉRIEURE D’ÉLECTRICITÉ Associativité des caches TM R Sur un processeur récent (Intel Core i5-2410M CPU @ 2.30GHz) on constate les dimensionnements et associativité suivants : Deux caches de niveau 1 (instructions et données) • Largeur de ligne : 64 • Taille : 32ko • Associativité : 8 Cache de niveau 2 (unifié) • Largeur de ligne : 64 • Taille : 256ko • Associativité : 8 Cache de niveau 3 (unifié) • Largeur de ligne : 64 • Taille : 3mo • Associativité : 12 Gestion des processus,15026/02 Architecture 3 octobre 2012 38 / 84 ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Caches Obtenir ces informations sous Linux #grep . /sys/devices/system/cpu/cpu0/cache/index*/* /sys/devices/system/cpu/cpu0/cache/index0/coherency_line_size:64 /sys/devices/system/cpu/cpu0/cache/index0/level:1 /sys/devices/system/cpu/cpu0/cache/index0/number_of_sets:64 /sys/devices/system/cpu/cpu0/cache/index0/physical_line_partition:1 /sys/devices/system/cpu/cpu0/cache/index0/shared_cpu_list:0-1 /sys/devices/system/cpu/cpu0/cache/index0/shared_cpu_map:00000000,00000000,00000000,00000000,000000 /sys/devices/system/cpu/cpu0/cache/index0/size:32K /sys/devices/system/cpu/cpu0/cache/index0/type:Data /sys/devices/system/cpu/cpu0/cache/index0/ways_of_associativity:8 /sys/devices/system/cpu/cpu0/cache/index1/coherency_line_size:64 /sys/devices/system/cpu/cpu0/cache/index1/level:1 /sys/devices/system/cpu/cpu0/cache/index1/number_of_sets:64 /sys/devices/system/cpu/cpu0/cache/index1/physical_line_partition:1 /sys/devices/system/cpu/cpu0/cache/index1/shared_cpu_list:0-1 /sys/devices/system/cpu/cpu0/cache/index1/shared_cpu_map:00000000,00000000,00000000,00000000,000000 /sys/devices/system/cpu/cpu0/cache/index1/size:32K /sys/devices/system/cpu/cpu0/cache/index1/type:Instruction /sys/devices/system/cpu/cpu0/cache/index1/ways_of_associativity:8 /sys/devices/system/cpu/cpu0/cache/index2/coherency_line_size:64 /sys/devices/system/cpu/cpu0/cache/index2/level:2 /sys/devices/system/cpu/cpu0/cache/index2/number_of_sets:512 /sys/devices/system/cpu/cpu0/cache/index2/physical_line_partition:1 /sys/devices/system/cpu/cpu0/cache/index2/shared_cpu_list:0-1 /sys/devices/system/cpu/cpu0/cache/index2/shared_cpu_map:00000000,00000000,00000000,00000000,000000 /sys/devices/system/cpu/cpu0/cache/index2/size:256K /sys/devices/system/cpu/cpu0/cache/index2/type:Unified /sys/devices/system/cpu/cpu0/cache/index2/ways_of_associativity:8 /sys/devices/system/cpu/cpu0/cache/index3/coherency_line_size:64 /sys/devices/system/cpu/cpu0/cache/index3/level:3 /sys/devices/system/cpu/cpu0/cache/index3/number_of_sets:4096 /sys/devices/system/cpu/cpu0/cache/index3/physical_line_partition:1 Gestion des processus,15026/02 Architecture 3 octobre 2012 39 / 84 ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Fonctionnement Extrait de http ://en.wikipedia.org/wiki/CPU cache Gestion des processus,15026/02 Architecture 3 octobre 2012 40 / 84 Fonctionnement ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Ligne de cache • Tag : permet de déterminer à quelle adresse mémoire est associé la ligne de cache. • Données : contenu de l’adresse mémoire à proprement parler. • Flags : drapeaux divers de gestion (au moins 1 bit pour signaler si la ligne est active/inactive). Ligne de cache Tag Données Flags Longueur de ligne Gestion des processus,15026/02 Architecture 3 octobre 2012 41 / 84 Fonctionnement ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Découpage d’une adresse mémoire Adresse mémoire Poids faibles Poids forts Tag Index Cache Longueur de ligne Index 0 Tag Données Flags Index 1 Tag Données Flags Index n Tag Données Flags Gestion des processus,15026/02 Architecture 3 octobre 2012 42 / 84 Caches ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Politique de propagation des écritures Deux politiques possibles : • Synchrone (write through) : toute écriture est immédiatement propagée vers la mémoire centrale (ou vers le cache de niveau supérieur). • Asynchrone (write back ) : l’écriture ne se produit qu’au dernier moment, lorsque la ligne doit être écrasée par une nouvelle entrée correspondant à une adresse différente (tag différent). Note La politique write back est plus efficace, mais nécessite un protocole de synchronisation entre caches dans le cas de machine multi-processeurs. Il faut synchroniser les caches entre eux. Gestion des processus,15026/02 Architecture 3 octobre 2012 43 / 84 Exemple du processeur Intel I7 (series 9xx) ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Processeur et brochage (a) Vue de dessus Gestion des processus,15026/02 (b) Vue de dessous Architecture 3 octobre 2012 44 / 84 ÉCOLE Exemple du processeur Intel I7 (series 9xx) SUPÉRIEURE D’ÉLECTRICITÉ Socket LGA 1336/Socket B F IGURE: Vue des 1336 broches du socket B Gestion des processus,15026/02 Architecture 3 octobre 2012 45 / 84 ÉCOLE SUPÉRIEURE Exemple du processeur Intel I7 (series 9xx) D’ÉLECTRICITÉ Gestion des processus,15026/02 Brochage Architecture 3 octobre 2012 46 / 84 Exemple du processeur Intel I7 (series 9xx) ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Brochage 64 broches de données pour le premier banc de mémoire (3 bancs de 2 slots DDR3 ⇒ 3 × 2 × 4 = 24 Go) Extrait de http ://download.intel.com/embedded/processor/designguide/323107.pdf Gestion des processus,15026/02 Architecture 3 octobre 2012 46 / 84 ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Architecture d’une carte mère F IGURE: Détail de l’architecture d’une carte mère x86. Extrait de http ://en.wikipedia.org/wiki/File :Motherboard diagram.svg Gestion des processus,15026/02 Architecture 3 octobre 2012 48 / 84 ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Coopération entre le processeur et les périphériques • Le processeur n’est pas un composant isolé du monde extérieur. • Il est nécessaire qu’il puisse communiquer avec les composants qui l’entourent. • Ces périphériques peuvent être amenés à signaler des modifications de l’environnement (réception d’un paquet Ethernet, appui d’une touche clavier). • La survenue de ces événements est complètement asynchrone. • Une manière de signaler de tels événements peut se faire via la levée d’un signal électrique relié au processeur. Gestion des processus,15026/02 Architecture 3 octobre 2012 49 / 84 ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Interruptions • Cette signalisation se fait via des interruptions. • Une interruption est un signal qui transporte un bit d’information. • Un processeur donné supporte la signalisation d’un certain nombre d’interruption (en général une puissance de deux). • Lorsqu’une interruption est levée, le processeur suspend son exécution. • Celui-ci (via un pilote de périphérique) doit acquitter le plus rapidement possible la bonne réception de l’interruption. • Pour cela le système d’exploitation doit enregistrer une portion de code pour chacune des interruptions possibles. • Il s’agit du vecteur d’interruptions. Gestion des processus,15026/02 Architecture 3 octobre 2012 50 / 84 ÉCOLE SUPÉRIEURE Interruptions sur x86 D’ÉLECTRICITÉ Intel 8529 • Il s’agit du composant destiné à multiplexer les interruptions sur les premiers PC. • Il est relié électriquement à chacun des périphériques. • Il bufferise les interruptions signalés par ces derniers. • Et les transmet séquentiellement au processeur sous la forme d’un encodage binaire. Gestion des processus,15026/02 Architecture 3 octobre 2012 51 / 84 ÉCOLE SUPÉRIEURE Interruptions sur x86 D’ÉLECTRICITÉ I/O APIC • Le composant Intel 8529 ne supportait pas les systèmes multi-processeurs. • Intel a proposé une évolution de ce composant avec l’introduction du pentium Pro. • Il s’agit d’une hiérarchie de gestionnaire d’interruptions. • Un premier composant réceptionne l’ensemble des interruptions. • Il les route vers un gestionnaire local associé à chacun des processeur. • La politique de routage peut être programmée de manière : 1 2 à diriger certaines interruptions vers un processeur fixé ; à équilibrer la charge d’interruptions sur l’ensemble des processeurs. Gestion des processus,15026/02 Architecture 3 octobre 2012 52 / 84 Vérification de l’état des interruptions ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ 0: 1: 4: 7: 8: 9: 14: 15: 16: 17: 19: 20: 21: 22: 23: 26: CPU0 52 430 0 1 0 0 16530 0 57841 317952 0 9566 0 153318 42120 8990 CPU1 904 65351 1 0 1 0 2218946 0 6276636 49186924 3 1014964 0 39626553 1410775 1314373 Gestion des processus,15026/02 /proc/interrupts IO-APIC-edge IO-APIC-edge IO-APIC-edge IO-APIC-edge IO-APIC-edge IO-APIC-fasteoi IO-APIC-edge IO-APIC-edge IO-APIC-fasteoi IO-APIC-fasteoi IO-APIC-fasteoi IO-APIC-fasteoi IO-APIC-fasteoi IO-APIC-fasteoi IO-APIC-fasteoi PCI-MSI-edge timer i8042 parport0 rtc0 acpi pata_amd pata_amd ahci, pata_jmicron, nvidia ivtv0 ohci1394 ehci_hcd:usb1, HDA Intel sata_nv sata_nv, ohci_hcd:usb2 sata_nv fbox Architecture 3 octobre 2012 53 / 84 Vérification de l’état des interruptions ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ /proc/irq/20: total 0 dr-xr-xr-x 4 dr-xr-xr-x 26 dr-xr-xr-x 2 dr-xr-xr-x 2 -rw------- 1 -r--r--r-- 1 root root root root root root /proc/irq/XX/ root root root root root root 0 0 0 0 0 0 30 30 30 30 30 30 sept. sept. sept. sept. sept. sept. 07:05 07:05 07:05 07:05 07:05 07:05 . .. ehci_hcd:usb1 HDA Intel smp_affinity spurious /proc/irq/20/ehci_hcd:usb1: total 0 dr-xr-xr-x 2 root root 0 30 sept. 07:05 . dr-xr-xr-x 4 root root 0 30 sept. 07:05 .. /proc/irq/20/HDA Intel: total 0 dr-xr-xr-x 2 root root 0 30 sept. 07:05 . dr-xr-xr-x 4 root root 0 30 sept. 07:05 .. Gestion des processus,15026/02 Architecture 3 octobre 2012 54 / 84 ÉCOLE SUPÉRIEURE Ports d’entrées-sorties D’ÉLECTRICITÉ Port I/O • Il s’agit d’adresses mémoires spéciales. • Elles ne peuvent être lues ou écrites que via des instructions spécialisées du processeur. • La lecture ou l’écriture à ces adresses correspond à la réception ou la transmission d’information vers un registre localisé dans un périphérique ; • mais partagé entre celui-ci et le processeur. • Tout se passe comme si l’adresse mémoire en question contenait une image du contenu du registre. Gestion des processus,15026/02 Architecture 3 octobre 2012 55 / 84 ÉCOLE SUPÉRIEURE Cartographie des ports d’entrées-sorties D’ÉLECTRICITÉ 0000-001f : 0020-0021 : 0040-0043 : 0050-0053 : 0060-0060 : 0064-0064 : 0070-0073 : 0080-008f : 00a0-00a1 : 00c0-00df : 00f0-00ff : 0170-0177 : 0170-0177 01f0-01f7 : 01f0-01f7 0290-0297 : dma1 pic1 timer0 timer1 keyboard keyboard rtc0 dma page reg pic2 dma2 fpu 0000:00:04.0 : pata_amd 0000:00:04.0 : pata_amd pnp 00:02 Gestion des processus,15026/02 /proc/ioports 0376-0376 : 0376-0376 0378-037a : 03c0-03df : 03f6-03f6 : 03f6-03f6 03f8-03ff : 04d0-04d1 : 0778-077a : 0800-087f : 0960-0967 : 0960-0967 0970-0977 : 0970-0977 09e0-09e7 : 09e0-09e7 09f0-09f7 : 09f0-09f7 0b60-0b63 : 0b60-0b63 0b70-0b73 : 0b70-0b73 0be0-0be3 : 0be0-0be3 0bf0-0bf3 : 0bf0-0bf3 0000:00:04.0 : pata_amd parport0 vesafb 0000:00:04.0 : pata_amd serial pnp 00:02 parport0 pnp 00:02 0000:00:05.1 : sata_nv 0000:00:05.0 : sata_nv 0000:00:05.1 : sata_nv 0000:00:05.0 : sata_nv 0000:00:05.1 : sata_nv 0000:00:05.0 : sata_nv 0000:00:05.1 : sata_nv 0000:00:05.0 : sata_nv Architecture 0cf8-0cff : PCI conf1 1000-107f : pnp 00:01 1000-1003 : ACPI PM1a_EVT_BLK 1004-1005 : ACPI PM1a_CNT_BLK 1008-100b : ACPI PM_TMR 101c-101c : ACPI PM2_CNT_BLK 1020-1027 : ACPI GPE0_BLK 1080-10ff : pnp 00:01 1400-147f : pnp 00:01 1480-14ff : pnp 00:01 14a0-14af : ACPI GPE1_BLK 1800-187f : pnp 00:01 1880-18ff : pnp 00:01 1c00-1c3f : 0000:00:01.1 1c00-1c3f : nForce2_smbus 1c40-1c7f : 0000:00:01.1 8000-9fff : PCI Bus 0000:02 8c00-8c0f : 0000:02:00.1 8c00-8c0f : pata_jmicron 9000-9003 : 0000:02:00.1 9000-9003 : pata_jmicron 9400-9407 : 0000:02:00.1 9400-9407 : pata_jmicron 9800-9803 : 0000:02:00.1 9800-9803 : pata_jmicron 9c00-9c07 : 0000:02:00.1 9c00-9c07 : pata_jmicron 3 octobre 2012 56 / 84 ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Entrées-sorties projetées en mémoire Memory mapped I/O • Il s’agit d’un concept proche des ports d’entrées-sorties. • Sauf qu’ici les adresses peuvent être manipulées par l’ensemble des instructions du processeur. • Elles ne correspondent pas à de la mémoire vive, mais sont détournées par le north bridge (contrôleur mémoire) vers le périphérique qui a enregistré cette zone de mémoire. • Cette programmation du north bridge est faite en coopération entre le périphérique et le système d’exploitation par l’intermédiaire d’un pilote de périphérique (driver). • La communication entre le processeur et le périphérique est identique à celle des ports d’entrées-sorties. Gestion des processus,15026/02 Architecture 3 octobre 2012 57 / 84 ÉCOLE SUPÉRIEURE Cartographie de la mémoire D’ÉLECTRICITÉ /proc/iomem 00000000-0000ffff : reserved 00010000-0009efff : System RAM 0009f000-0009ffff : reserved 000d2800-000d3fff : pnp 00:0d 000f0000-000fffff : reserved 00100000-dfedffff : System RAM 01000000-0135960e : Kernel code 0135960f-014ddb07 : Kernel data 0154b000-015d75cb : Kernel bss 20000000-23ffffff : GART dfee0000-dfee2fff : ACPI Non-volatile Storage dfee3000-dfeeffff : ACPI Tables dfef0000-dfefffff : reserved dff00000-dfffffff : RAM buffer e0000000-efffffff : PCI Bus 0000:03 e0000000-efffffff : 0000:03:00.0 e0000000-e02fffff : vesafb f0000000-f3ffffff : PCI MMCONFIG 0 [00-3f] f0000000-f3ffffff : reserved f0000000-f3ffffff : pnp 00:0c f4000000-f7ffffff : PCI Bus 0000:01 f4000000-f7ffffff : 0000:01:07.0 f4000000-f47fffff : ivtv encoder f5000000-f57fffff : ivtv decoder f6000000-f600ffff : ivtv registers Gestion des processus,15026/02 Architecture 3 octobre 2012 58 / 84 ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Accès directs en mémoire DMA (Direct Memory Access) • Un périphérique peut obtenir un accès direct à la mémoire (sans passer par le goulot d’étranglement que représente le processeur). • Ceci permet d’obtenir un accès à très haut débit. • Le périphérique peut transférer de grande quantité de données (à grande vitesse). • Il existe un contrôleur programmable et dédié à cet effet. • Il s’agit du contrôleur DMA. Gestion des processus,15026/02 Architecture 3 octobre 2012 59 / 84 ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Temps partagé Constatation Sur les premiers systèmes d’exploitation, les tâches s’exécutaient les unes après les autres. Cependant les opérations d’entrées-sorties sont beaucoup plus lentes que la vitesse du processeur. Celui-ci passait une grande partie de son temps à attendre la terminaison de ces opérations. Solution Entrelacer l’exécution des différentes tâches. Lorsqu’une tâche est bloquée sur une entrée-sortie, le système d’exploitation peut basculer vers une autre tâche prête à s’exécuter. Gestion des processus,15026/02 Problématique 3 octobre 2012 60 / 84 ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Pourquoi les processus ? • Sur les systèmes multiprogrammés, plusieurs tâches peuvent s’exécuter en apparence de manière simultanée sur le système. • Un processus est une abstraction qui permet de représenter et de contrôler une tâche s’exécutant sur un système. • Cette abstraction permet notamment d’optimiser les performances sur les systèmes en attribuant de manière juste le processeur aux processus les plus à même de s’exécuter. Gestion des processus,15026/02 Problématique 3 octobre 2012 61 / 84 ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Un processus, c’est quoi ? • Un processus est caractérisé par : • • • • Son compteur ordinal. Ses registres. Ses données. Ses ressources (fichiers, sockets, etc.). • Le système d’exploitation offre à chaque processus un ”processeur virtuel” sur lequel celui-ci a l’impression d’être le seul à s’exécuter. • Chaque processus n’a donc pas a priori à considérer les autres processus qui s’exécutent sur le même processeur. • Dans le cas d’architectures multiprocesseurs, il est possible qu’un même processus s’exécute successivement sur plusieurs processeurs différents. Gestion des processus,15026/02 Problématique 3 octobre 2012 62 / 84 ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Ordonnancement des processus • Le rôle de l’ordonnanceur est d’attribuer successivement le ou les processeurs aux processus en concurrence pour cette ressource. • Lorsque plusieurs processus sont prêts, l’ordonnanceur choisit le processus qui sera le suivant à s’exécuter. • L’algorithme d’ordonnancement définit les choix qui seront faits par l’ordonnanceur. • Chaque algorithme d’ordonnancement optimise l’ordonnancement en fonction de propriétés qu’il privilégie. Gestion des processus,15026/02 Ordonnancement 3 octobre 2012 63 / 84 ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Propriétés visées par l’algorithme d’ordonnanceur • L’équité vise à ce que chaque processus bénéficie d’un temps d’exécution équitable. • Le respect de la priorité vise à ce que les processus les plus prioritaires bénéficient de plus de temps processeur. • L’équilibre vise à ce que toutes les parties du système sont occupées au mieux. • La maximisation de l’usage CPU vise à utiliser au maximum le CPU. • La capacité de traitement vise à optimiser le nombre de travaux traités sur une durée donnée. • Le délai de rotation vise à avoir le délai moyen le plus faible entre le début et la fin de chaque traitement. • La réactivité vise à minimiser le temps de réponse aux requêtes de l’utilisateur. Gestion des processus,15026/02 Ordonnancement 3 octobre 2012 64 / 84 ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Taxonomie des algorithmes d’ordonnancement On distingue deux grands types d’algorithmes d’ordonnancement : • Ordonnancement coopératif. • Ordonnancement préemptif. Si la première catégorie a été très utilisée dans des OS plus anciens, la seconde catégorie est celle utilisée par tous les OS modernes. Gestion des processus,15026/02 Ordonnancement 3 octobre 2012 65 / 84 ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Ordonnancement coopératif Un algorithme d’ordonnancement coopératif laisse le processus courant s’exécuter jusqu’à celui-ci soit bloqué par : • • • • Une demande d’entrée-sortie. Une interruption d’entrée-sortie. Une primitive de synchronisation. Un relâchement volontaire du processeur. La création et la terminaison d’un processus impliquent aussi des décisions d’ordonnancement. Gestion des processus,15026/02 Ordonnancement 3 octobre 2012 66 / 84 ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Inconvénients de l’ordonnancement coopératif • L’ordonnancement coopératif ne permet pas d’assurer l’équité. • Un processus qui n’effectue aucune entrée-sortie peut mobiliser le processeur sans jamais le relâcher. • Il est nécessaire que se produise régulièrement une interruption matérielle. • Ceci amène à définir la notion de quantum de temps. • Le processus courant se voit attribué une quantité de temps de processeur (le quantum de temps). • Le système d’exploitation programme le contrôleur d’interruption de façon à ce que celui-ci génère une interruption à l’échéance de ce quantum de temps. • Ceci permet au système d’exploitation de reprendre la main. Gestion des processus,15026/02 Ordonnancement 3 octobre 2012 67 / 84 ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Ordonnancement préemptif Un algorithme d’ordonnancement préemptif laisse le processus courant s’exécuter jusqu’à ce que : • • • • • Celui-ci produise une entrée-sortie bloquante. Celui-ci se synchronise de manière bloquante. Se produise une interruption d’entrée-sortie. Celui-ci relâche volontaire le processeur. Son quantum de temps de calcul soit écoulé. La création et la terminaison d’un processus impliquent là encore aussi des décisions d’ordonnancement. Gestion des processus,15026/02 Ordonnancement 3 octobre 2012 68 / 84 ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Changement de contexte Definition Le passage d’un processus à l’autre par l’ordonnanceur est appelé changement de contexte. Il est nécessaire de sauvegarder l’état de la tâche courante, pour pouvoir le rétablir plus tard. Gestion des processus,15026/02 Ordonnancement 3 octobre 2012 69 / 84 ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ État d’une tâche Qu’est-ce que l’état d’une tâche ? Gestion des processus,15026/02 Ordonnancement 3 octobre 2012 70 / 84 ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Changement de contexte • Durant un changement de contexte, l’ordonnanceur doit tout d’abord sauvegarder l’état du processus courant (registres, compteur de programme, etc.) dans une zone de données prévue à cet effet et appelée table des processus. • Il charge ensuite de la table des processus les données concernant le prochain processus à s’exécuter et les rétablit. • Enfin, il fait reprendre l’exécution du nouveau processus dans l’état dans lequel celui-ci avait été précédemment interrompu. • Le changement de contexte est donc une opération coûteuse. Gestion des processus,15026/02 Ordonnancement 3 octobre 2012 71 / 84 ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Algorithme du tourniquet (Round-Robin) • L’algorithme d’ordonnancement par tourniquet donne à chaque processus un quantum de temps pour s’exécuter. • Lorsque ce quantum est écoulé, l’ordonnanceur passe au processus suivant. • Le tourniquet est équitable. • Il n’est pas du tout réactif, ne permet pas de respect de la priorité, etc. Gestion des processus,15026/02 F IGURE: L’ordonnancement par tourniquet Ordonnancement 3 octobre 2012 72 / 84 ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Algorithme du tourniquet avec priorités fixes • Chaque processus a un niveau de priorité et l’ordonnanceur maintient autant de listes de que niveaux. • L’ordonnanceur parcourt les listes par ordre décroissant de priorité et exécute le premier processus prêt qu’il rencontre. • À chaque niveau de priorité, le tourniquet est appliqué. • Le tourniquet avec priorités fixes prend en compte la priorité mais n’est pas F IGURE: Tourniquet avec priorités fixes équitable et peut même entraı̂ner des famines. Gestion des processus,15026/02 Ordonnancement 3 octobre 2012 73 / 84 ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Tourniquet avec priorités variables L’exemple de MS-Windows • Il existe 32 niveaux de priorité, de 0 à 15 pour les threads à priorité variable, et de 16 à 31 pour les threads temps-réels. • Lorsqu’un thread est interrompu par l’horloge et qu’il est à priorité variable, sa priorité est réduite. • Quand un thread à priorité variable est lancé après avoir attendu une ressource, sa priorité est augmentée en fonction de la ressource : • Forte augmentation s’il s’agissait par exemple du clavier. • Faible augmentation s’il s’agissait par exemple de disque. • Un thread appartenant à la fenêtre qui a actuellement le focus gagne deux points de priorité. Gestion des processus,15026/02 Ordonnancement 3 octobre 2012 74 / 84 ÉCOLE SUPÉRIEURE Edsger Dijkstra D’ÉLECTRICITÉ (1930-2002) • Né le 11 mai 1930 à Rotterdam (Pays-Bas) et décédé le 6 août 2002 à Nuenen (Pays-Bas). • Lauréat du Turing Award en 1972. • Les étudiants en première année d’info le connaissent notamment grâce à son algorithme de parcours de plus court chemin dans les graphes. • Il a aussi été un grand défenseur de la programmation structurée. • Si nous parlons de lui aujourd’hui, c’est pour sa contribution à la synchronisations des processus. Gestion des processus,15026/02 Synchronisation 3 octobre 2012 75 / 84 ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Sémaphores • Créé par Edsger Dijkstra dans THE (Technische Hogeschool Eindhoven) Operating System, un sémaphore permet la synchronisation entre plusieurs processus souhaitant accéder de manière exclusive à un objet partagé. • Un sémaphore créé avec une valeur val correspondant au nombre d’accès simultanés à la ressource autorisés. • Un processeur souhaitant accéder à une ressource réalise une opération P sur ce sémaphore : • Si val est supérieure à 0, le processus continue et val est décrémenté. • Si val est égale à 0, le processus est bloqué. Il ne sera libéré que quand val sera de nouveau supérieure à 0. • Un processus qui libère une ressource réalise sur le sémaphore une opération V, qui incrémente val de 1. Un des processus bloqué pourra ainsi être débloqué. Gestion des processus,15026/02 Synchronisation 3 octobre 2012 76 / 84 ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Sémaphores Moyen mnémotechnique • Opération P : Puis-je ? • Opération V : Vas-y ! Gestion des processus,15026/02 Synchronisation 3 octobre 2012 77 / 84 ÉCOLE Mutex SUPÉRIEURE D’ÉLECTRICITÉ Le mutex est un cas particulier du sémaphore, initialisé à 1. Gestion des processus,15026/02 Synchronisation 3 octobre 2012 78 / 84 ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Instructions atomiques • Si on regarde en détail l’opération P du sémaphore ou du mutex, on s’aperçoit qu’elle comporte deux opérations successives : • Le test de val • Si val est supérieur à 0, décrémentation de val • Qu’arrive-t-il si le processus est interrompu entre ces deux opérations et qu’un autre processus tente d’accéder à la ressource ? • Plusieurs approches peuvent être utilisées pour résoudre ce problème, dont l’instruction processeur atomique Test And Set ou la demande de section critique Gestion des processus,15026/02 Synchronisation 3 octobre 2012 79 / 84 ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Inversion de priorité L’histoire de Mars PathFinder • Mars Pathfinder est une mission spatiale de la NASA qui s’est déroulée en 1996. • Son but était de faire atterrir une sonde sur Mars contenant un robot (Rocky). • 7 mois après le décollage, Rocky atterrit sur Mars et fonctionne très bien. • Cependant, après un certain temps, des données collectées sont systématiquement perdues. Gestion des processus,15026/02 Synchronisation F IGURE: Rocky 3 octobre 2012 80 / 84 ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Inversion de priorité Ce qui s’est passé sur Mars ce jour là • Les trois processus suivants s’exécutaient sur le système d’exploitation temps réel VxWorks de Rocky : • Un processus de priorité haute qui gérait de la mémoire partagée et le réarmement périodique d’un chien de garde. • Un processus de priorité faible qui écrivait dans cette mémoire les données météorologiques qu’il collectait. • Un troisième processus de priorité moyenne chargé de transmettre les informations collectées vers la Terre (temps d’exécution assez long). • L’accès à la mémoire partagée est protégé par un mutex. Gestion des processus,15026/02 Synchronisation 3 octobre 2012 81 / 84 ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Inversion de priorité Ce qui s’est passé sur Mars ce jour là • Il arrivait que le processus de priorité faible demande un accès exclusif à la mémoire et l’obtienne. • Si une interruption intervenait entraı̂nant un changement de contexte vers le processus de priorité haute ; celui-ci se bloquait en demandant lui aussi un accès exclusif à la mémoire. • Si une transmission vers la Terre se déclenchait à cet instant le processus de priorité moyenne obtenait le processeur. • Il empêchait le processus de priorité faible de libérer l’accès à la mémoire. • Celui-ci ne pouvait pas débloquer le processus de haute priorité. • Redémarrage par le chien de garde. Gestion des processus,15026/02 Synchronisation 3 octobre 2012 82 / 84 ÉCOLE SUPÉRIEURE Inversion de priorité D’ÉLECTRICITÉ Schéma Au tableau ... Gestion des processus,15026/02 Synchronisation 3 octobre 2012 83 / 84 ÉCOLE SUPÉRIEURE D’ÉLECTRICITÉ Inversion de priorité En terme technique L’inversion de priorité est un problème classique qui peut survenir dans les mécanismes d’ordonnancement avec priorité et qui se traduit par le fait qu’une tâche à priorité élevée ne peut avoir accès au processeur car elle est bloquée par une tache de priorité inférieure. Gestion des processus,15026/02 Synchronisation 3 octobre 2012 84 / 84