Les Systèmes D'exploitation
Total Page:16
File Type:pdf, Size:1020Kb
Cours IN201 Année 2010-2011 Les Systèmes d’Exploitation Responsable : Bertrand Collin. Auteurs : Bertrand Collin, Marc Baudoin, Manuel Bouyer, Jérôme Gueydan, Thomas Degris, Fré- déric Loyer, Damien Mercier. École nationale supérieure de techniques avancées Copyright c Bertrand Collin 2009–2011 Ce document est mis à disposition selon les termes du contrat Creative Com- mons « Paternité - Pas d’utilisation commerciale - Partage des conditions initiales à l’identique » 2.0 France : http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ Vous êtes libre : – de reproduire, distribuer et communiquer cette création au public ; – de modifier cette création. Selon les conditions suivantes : Paternité. Vous devez citer le nom de l’auteur original de la manière indiquée par l’auteur de l’œuvre ou le titulaire des droits qui vous confère cette autorisation (mais pas d’une manière qui suggérerait qu’ils vous soutiennent ou approuvent votre utilisation de l’œuvre). Pas d’utilisation commerciale. Vous n’avez pas le droit d’utiliser cette création à des fins commerciales. Partage des conditions initiales à l’identique. Si vous modifiez, transformez ou adaptez cette création, vous n’avez le droit de distribuer la création qui en résulte que sous un contrat identique à celui-ci. – À chaque réutilisation ou distribution de cette création, vous devez faire appa- raître clairement au public les conditions contractuelles de sa mise à disposition. La meilleure manière de les indiquer est un lien vers cette page Web. – Chacune de ces conditions peut être levée si vous obtenez l’autorisation du titulaire des droits sur cette œuvre. – Rien dans ce contrat ne diminue ou ne restreint le droit moral de l’auteur ou des auteurs. Ce qui précède n’affecte en rien vos droits en tant qu’utilisateur (exceptions au droit d’auteur : copies réservées à l’usage privé du copiste, courtes citations, parodie...). 3 Avertissement Les auteurs du document Ce document est l’œuvre itérative des nombreux enseignants ayant participé au cours « Systèmes d’exploitation » de l’ENSTA ParisTech depuis sa création : même si chacun des chapitres a été initialement écrit par un seul enseignant, ceux-ci ont été ensuite relus, corrigés, complétés, remaniés chaque année et il est difficile aujourd’hui d’attribuer avec justesse la paternité exacte des différentes contributions. Les auteurs des documents originaux sont cités ci-dessous, de même que les enseignants qui ont participé au cours au fil des ans, en espérant que personne n’ait été oublié. Les chapitres allant de l’introduction à 5 ont été écrits par Jérôme Gueydan et mis à jour par Bertrand Collin. Le chapitre 6 s’inspire très fortement de textes écrits par Frédéric Loyer et Pierre Fiorini et a été remis à jour par Bertrand Collin. Le chapitre 7 a été écrit par Manuel Bouyer et Frédéric Loyer et très légèrement mis à jour par Bertrand Collin puis corrigé pour la partie concernant l’UEFI. Les chapitres 8 et 9 ont été rédigés par Bertrand Collin et relus par Marc Baudoin. Les chapitres 10, 11, 12 et 13 sont l’œuvre de Manuel Bouyer, Jérôme Gueydan et Damien Mercier. Les chapitres 14, 15 et 16 ont été écrits par Marc Baudoin et Damien Mercier. Le chapitre 17 a été écrit par Bertrand Collin et patiemment relu et corrigé par Marc Baudoin et Manuel Bouyer. Les chapitres 18 et 19 ont été rédigés par Thomas Degris. Les exercices et corrigés proposés tout au long de ce document ont été conjoin- tement écrits par Marc Baudoin, Manuel Bouyer, Bertrand Collin, Thomas Degris, Jérôme Gueydan et Damien Mercier. Les projets décrits dans les chapitres 20, 21, 22, 23, 24 et 25 ont été respectivement proposés par Nicolas Israël, Olivier Perret, Damien Mercier et Bertrand Collin. L’aide-mémoire du langage C proposé dans le chapitre 26 a été rédigé par Damien Mercier. 5 Les personnes suivantes ont par ailleurs participé à la constitution de ce document à l’occasion de leur participation au cours « Systèmes d’exploitation » : Robert N’Guyen, Régis Cridlig, Antoine de Maricourt, Matthieu Vallet. Anglicisme et autres barbarismes Il est très difficile d’expliquer le fonctionnement de l’informatique, des systèmes d’exploitation et des ordinateurs sans employer de mots anglais ou, pire, de mots francisés à partir d’une racine anglaise (comme rebooter, par exemple, souvent employé en lieu et place de réinitialiser). Nous avons essayé tout au long de ce document de cours d’utiliser systématiquement des mots français en indiquant en italique le mot anglais habituellement employé. Néanmoins, certains mots anglais n’ont pas de traduction satisfaisante (comme bug, par exemple) et nous avons parfois préféré utiliser le mot anglais original plutôt que l’une des traductions officielles (bogue, en l’occurrence). Cependant, afin de ne pas tomber dans le travers fustigé au paragraphe précédent, cette utilisation des angliscismes a été strictement limitée au terme initial et des traductions françaises ont été employées pour les termes dérivés (par exemple, débogueur et débogage). Enfin, certaines expressions anglaises sont parfois employées sans faire référence à leur sens originel (comme fork, par exemple). Dans ce cas, la traduction française donne une expression correcte, mais plus personne ne fait le lien entre cette expression et le sujet évoqué. L’essentiel étant que nous nous comprenions tous, nous avons dans ce cas-là utilisé le mot anglais. Mises à jour Les dernières mises à jour concernant les sujets présentés en cours, les énoncés et les exercices des travaux pratiques ou l’énoncé des projets figurent sur la page www consacrée à ce cours 1. Tous les programmes présentés en exemple dans ce document sont disponibles via cette page www ainsi que la majorité des corrections des exercices de travaux pratiques. Remerciements Les auteurs remercient tous les (re)lecteurs bénévoles qui ont eu le courage d’in- diquer les erreurs, les imprécisions et les fautes d’orthographe, ainsi que toutes les personnes qui, par le biais de discussions fructueuses, de prêts d’ouvrages ou d’expli- cations acharnées, ont permis la réalisation de ce manuscrit. En particulier, les auteurs remercient : 1. Cette page est accessible à partir de l’url http://www.ensta.fr/~bcollin/ 6 – Thierry Bernard et Jacques Le Coupanec pour les nombreuses explications sur l’architecture des ordinateurs et la programmation de la MMU, ainsi que pour la relecture attentive du chapitre 1 ; – Eric Benso, Christophe Debaert et Cindy Blondeel pour la relecture minutieuse des chapitres allant de l’introduction à 7 ; – Régis Cridlig pour les nombreuses précisions apportées aux chapitres allant de l’introduction à 5 ; – Béatrice Renaud pour la lecture attentive des chapitres allant de l’introduction à 7 ainsi que pour la correction des nombreuses fautes d’orthographe ; – Lamine Fall et Denis Vervisch pour leur relecture patiente de l’ensemble du document. 7 Glossaire De nombreux acronymes ou abréviations sont utilisés dans ce manuscrit. Ils sont généralement explicités dans le texte, mais un résumé de ces termes employés paraît toutefois utile. ADSL Asymmetric Digital Subscriber Line ALU Arithmetic and Logic Unit APIC Advanced Programmable Interrupt Controller ATA Advanced Technology Attachment ATAPI ATA with Packet Interface BSB Back Side Bus FSB Front Side Bus LAPIC Local Advanced Programmable Interrupt Controller CISC Complex Instruction Set Computer CPU Central Process Unit DDR Double Data Rate DRAM Dynamic Random Access Memory DRM Digital Right Management DVD Digital Versatil Disk SRAM Static Random Access Memory GPT Globally Unique Identifier Partition Table IPI Inter Processor Interrupts IMR Interrupt Mask Register IRQ Interruption ReQuest IRR Interrupt Request Register ISR In-Service Register MMU Memory Management Unit MPI Message Passing Interface PCIe Peripheral Component Interconnect Express PIC Programmable Interrupt Controler POSIX Portable Operating System Interface [for Unix] PTE Page Table Entry 9 PVM Parallel Virtual Machine RISC Reduced Instruction Set Computer SCSI Small Computer System Interface SDRAM Synchronous Dynamic Random Access Memory SSII Société de Services en Ingénierie et Informatique ou Société de Services et d’Ingénierie en Informatique TLB Translocation Lookaside Buffer UEFI Unified Extensible Firmware Interface USB Universal Serial Bus 10 Introduction Pourquoi un système d’exploitation ? Le système d’exploitation est l’élément essentiel qui relie la machine, composée d’éléments physiques comme le microprocesseur, le disque dur ou les barrettes mé- moire, et l’utilisateur qui souhaite effectuer des calculs. Sans système d’exploitation, chaque utilisateur serait obligé de connaître le fonctionnement exact de la machine sur laquelle il travaille et il serait, par exemple, amené à programmer directement un contrôleur de périphérique USB pour pouvoir enregistrer ses données sur une clé USB. Sans le contrôle du système d’exploitation, les utilisateurs pourraient aussi détruire irrémédiablement certaines données stockées sur un ordinateur, voire détruire certains périphériques – comme le disque dur – en programmant des opérations illicites. Les systèmes d’exploitation jouent donc un rôle majeur dans l’utilisation d’un ordinateur et si l’outil informatique s’est répandu dans le monde entier, c’est certes grâce à l’abaissement des prix d’achat et grâce à l’augmentation de la puissance des ordinateurs, mais c’est surtout grâce aux progrès réalisés lors des cinquante dernières années dans la programmation des systèmes d’exploitation : avec une machine de puissance équivalente, la moindre opération sur un ordinateur qui aujourd’hui nous paraît triviale était alors proprement impossible à réaliser ! 11 Ce document présente les systèmes d’exploitation ainsi que leurs composants principaux et leurs structures. Toutes les notions essentielles à la compréhension du fonctionnement d’un ordinateur avec son système d’exploitation sont ici abordées, mais un lecteur désireux d’approfondir un sujet particulier doit se reporter à un ouvrage spécialisé, par exemple un des ouvrages cités dans la bibliographie. Les notions pré- sentées ici ne font en général référence à aucun système d’exploitation en particulier.