Précis de système d’exploitation

download Précis de système d’exploitation

of 72

Transcript of Précis de système d’exploitation

  • 7/22/2019 Prcis de systme dexploitation

    1/72

    Prcis de systme dexploitation

    Dpartement Informatique et Mathmatiques Appliques

    Grard Padiou

    5 octobre 2010

    Prambule

    Le document suivant nest quun rsum trs condensdes principes de conception et des mcanismesmis en uvre dans les systmes dexploitation. La connaissance approfondie dun systme dexploitation estun vaste sujet. Pour les lecteurs intresss, la lecture des livres suivants est recommande :

    Un livre complet prsentant de faon approfondie tous les principes de conception, les mcanismes etles aspects techniques des systmes dexploitation :

    Andrew S. Tanenbaum, Systmes dexploitation, 3-ime dition, PEARSON Education, 2003. Un livre lui aussi trs approfondi mais en langue anglaise :

    Abraham Silberschatz, Peter Baer Galvin et Greg Gagne, Operating System Concepts, 7-ime dition,John Wiley and Sons Inc., 2004.

    Un livre ddi au systme dexploitation qui marque lge de la maturit dans la technologie de cessystmes, en loccurrence le systme Unix :

    Maurice J. Bach, The Design of the UNIX Operating System, Prentice Hall International, 1986. Un livre plus spcifiquement ddi au systme dexploitation Windowset qui en prsente clairement

    les concepts et leur mise en uvre :Gary Nutt, Operating System Projects using Windows NT, Addison Wesley Longman Inc., 1999.

    Enfin, un livre plus spcialement ddi la description de la notion de mmoire virtuelle, conceptfondamental des systmes dexploitation et qui reste encore aujourdhui parmi les logiciels les pluscomplexes jamais dvelopps. La rfrence propose ci-dessous dcrit de faon approfondie la gestiondes mmoires virtuelles dans le systme Linux :

    Mel Gorman,Understanding the Linux Virtual Memory Manager, Bruce Perens Open source series,Pearson Education, Inc., 2004.

    Remerciements

    Ces quelques pages ne seraient pas ce quelles sont aujourdhui sans les nombreux lecteurs ou lectricesqui ont dtect les erreurs, oublis, points obscurs tout au long des mises jour annuelles.

    Il y a bien sr parmi eux des gnrations dlves du dpartement, mais aussi, les collgues qui ont particip lenseignement des systmes dexploitation de faon rcurrente ou temporaire. En tout premier lieu, je tiens

    remercier Philippe Quinnec, correcteur redoutable, Philippe Mauran, pour la reformulation des passagestrop nigmatiques, Patrick Amestoy pour ses interrogations opinitres et fort utiles, Mamoun Filali pour sonrle patient et infatigable de gourou et Michel Charpentier pour ses critiques toujours constructives.

    Systmes dExploitation Dpartement Informatique et Mathmatiques appliques 1

  • 7/22/2019 Prcis de systme dexploitation

    2/72

    Systmes dExploitation Dpartement Informatique et Mathmatiques appliques 2

  • 7/22/2019 Prcis de systme dexploitation

    3/72

    Table des matires

    1 Introduction 5

    1.1 Une drle dhistoire. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.2 Une dfinition un peu plus prcise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.3 Un systme : un logiciel pas comme les autres ! . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    1.3.1 Un logiciel ractif. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.3.2 Un logiciel ncessaire. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.3.3 Un logiciel qui partage et cohabite avec dautres . . . . . . . . . . . . . . . . . . . . . 81.3.4 Un logiciel qui rsiste aux fautes des autres . . . . . . . . . . . . . . . . . . . . . . . . 91.3.5 Un programme au service des autres . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101.3.6 Un programme parallle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.3.7 Un programme de taille respectable . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.3.8 Un programme discret ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.3.9 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

    1.4 La notion de programme : le point de vue du noyau . . . . . . . . . . . . . . . . . . . . . . . 121.4.1 La notion de format binaire objet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141.4.2 Image binaire excutable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141.4.3 Autre format de programme excutable . . . . . . . . . . . . . . . . . . . . . . . . . . 15

    1.5 Principes de conception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151.5.1 Conception selon une approche hirarchique . . . . . . . . . . . . . . . . . . . . . . . . 151.5.2 La notion de ressource virtuelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161.5.3 Le principe de liaison dynamique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

    1.6 Un mini-systme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171.6.1 Larchitecture matrielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171.6.2 La spcification du systme dexploitation . . . . . . . . . . . . . . . . . . . . . . . . . 181.6.3 Linterprteur de commande. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191.6.4 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

    2 Les processus 212.1 Les processus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.1.1 Origine et motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.1.2 Le concept de processus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222.1.3 Les oprations sur les processus. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.1.4 Lordonnancement des processus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

    2.2 Lenvironnement dexcution dun processus . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262.2.1 La communication par vnements asynchrones . . . . . . . . . . . . . . . . . . . . . . 262.2.2 La communication par flots de donnes . . . . . . . . . . . . . . . . . . . . . . . . . . 27

    2.3 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

    3

  • 7/22/2019 Prcis de systme dexploitation

    4/72

    3 Les fichiers 313.1 Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.2 Le concept de fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

    3.2.1 Dfinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333.2.2 Mthode daccs squentielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333.2.3 Mthode daccs directe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343.2.4 Autres mthodes daccs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

    3.3 Organisation de lespace logique des fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353.3.1 La dsignation des fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363.3.2 La protection des fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

    3.4 Organisation de lespace physique des ressources . . . . . . . . . . . . . . . . . . . . . . . . . 393.4.1 La dsignation des ressources matrielles ou priphriques . . . . . . . . . . . . . . . . 393.4.2 La connexion des priphriques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393.4.3 La notion de volume . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

    3.5 La projection de lespace des fichiers sur lespace des ressources . . . . . . . . . . . . . . . . . 413.5.1 Principes gnraux de conception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

    3.5.2 Le niveau rpertoire : implantation de larborescence de fichiers . . . . . . . . . . . . . 413.5.3 Le niveau fichier : implantation des fichiers . . . . . . . . . . . . . . . . . . . . . . . . 413.5.4 Le niveau bloc : la gestion de lallocation/libration despace aux fichiers . . . . . . . 443.5.5 La destruction des fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453.5.6 La gestion des changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

    3.6 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

    4 Les mmoires virtuelles 474.1 Mmoires virtuelles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

    4.1.1 Le problme du partage mmoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474.1.2 Mmoire virtuelle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484.1.3 Principe de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484.1.4 La pagination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

    4.1.5 La segmentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494.1.6 La technique mixte segmentation-pagination . . . . . . . . . . . . . . . . . . . . . . . 504.1.7 Le couplage des programmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514.1.8 Les stratgies dallocation de pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514.1.9 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

    5 Conclusion 57

    Appendices 59

    A Exercices 61A.1 Des questions dordre gnral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61A.2 propos des processus. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62A.3 propos des fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

    B Encore mieux, exercices corrigs. . . 65B.1 Gnralits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65B.2 Processus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66B.3 Les fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

    Systmes dExploitation Dpartement Informatique et Mathmatiques appliques 4

  • 7/22/2019 Prcis de systme dexploitation

    5/72

    Chapitre 1

    Introduction

    1.1 Une drle dhistoire. . .

    Lhistoire des systmes dexploitation se confond intimement avec lhistoire de la programmation, delalgorithmique et du gnie logiciel. En effet, sans systme (dexploitation), pas dutilisation possible dunordinateur. Pourtant, cet artefact reste bien mystrieux. En fait, un informaticien amateur ou professionnelpeut souvent se contenter dune vision trs extrieure.

    Il est facile de rsumer la perception la plus courante : Lorsque lon met sous tension un ordinateur (personnel par exemple), on entend le disque dur sagiter,

    lcran passe par diffrentes couleurs, puis quelques lignes truffes de noms tranges et de nombres d-filent. Aprs un laps de temps variable (1mn environ), un ensemble dicnes et de fentres apparaissent :a y est, on peut cliquer !! LE systme est charg.

    Dans le cas o lon vient dacheter un magnifique engin avec, selon le vendeur, 500 Giga de disquedur et 2 Giga de mmoire centrale, on souhaite videmment vrifier ces petites choses. Aprs quelquesclics de souris et un peu de flair, on arrive obtenir les informations recherches : et l, bizarrerie,lespace libre sur le disque dur est de 420 Giga. O sont passs les 80 Giga manquants ? La mmoirecentrale ne fait plus quant elle, que 1,5 Giga. O sont passs les 500 Mega manquants. Le nophytese prcipitera sur son tlphone pour traiter son vendeur de tous les noms doiseaux. Il entendra alorsla phrase miracle mais encore nigmatique : Cest LE systme .

    Pour lusager confirm, le systme apparat sous une forme dsagrable : aprs des heures deffort, unprogramme denfer commence faire ce quon voulait. Mais, soudain, lors dun nime test, une petitefentre de couleur blanche (blme) apparat avec un message sibyllin :

    system error at#17AF486Puis, plus rien. Les clics se perdent. . . Lcran reste dsesprment fig. LE systme est plant 1.Uneseule solution : redmarrer.

    Pour lusager confirm, le systme, cest aussi celui dont on cause, entre amis, au coin du feu : Et toi ? tu as install la version OS 8.5.1 ? Non, je prfre rester en 7.5.3 ; jassure Oui, mais en 8.5.1, tu peux, blablabla. . .

    En rsum, le systme, a met du temps dmarrer, a consomme des ressources (disque, mmoire), ase plante , sans lui, on ne peut plus rien faire, a volue de version en version vers un mieux toujours rvmais rarement vrifi.

    On peut faire de linformatique avec cette connaissance limite dun systme dexploitation. Cependant,il peut tre intressant den savoir un peu plus. Cela permet entre autre chose de pouvoir exploiter au mieuxles possibilits offertes par un systme ou de comprendre pourquoi a ne marche pas.

    Les systmes dexploitation ont t particulirement importants dans le dveloppement de linformatique.

    1. Terminologie professionnelle : on dit aussi plus prcisement et par exemple, Windows Vista sest plant

    5

  • 7/22/2019 Prcis de systme dexploitation

    6/72

    Ce sont eux qui ont pos, dans leur conception et ralisation, les plus gros problmes de programmation dufait de leur taille et de leur complexit. Ils ont donc beaucoup marqu, influenc, fait progresser le gnielogiciel : principe de modularit, dencapsulation par exemple, gestion de versions, cycle de dveloppement,programmation par composants ( programming in the large ) avec les langages de script, mais aussila programmation parallle (synchronisation de processus), la notion de ressource virtuelle permettant deconstruire des abstractions des ressources relles (machine virtuelle, mmoire virtuelle, imprimante virtuelle),la scurit, la tolrance aux fautes, les bases de donnes, . . .

    Il est donc normal de leur rendre hommage !

    Au passage, une remarque importante : il est a noter que les ressources matrielles que doit grer unsystme dexploitation ont vu leur technologie profondment voluer au cours de ces 40 dernires annes.

    En effet, la puissance des processeurs a doubl tous les 18 mois depuis les annes 70 par suite de lintgra-tion dun nombre de plus en plus grand de transistors dans les microprocesseurs (la densit des transistorssur une puce a doubl tous les deux ans de 1971 2001 selon la loi dite de Gordon Moore).

    La capacit des mmoires de masse et disques en particulier a aussi connu une augmentation extraordi-naire. Dune capacit de quelques Mega (1 5 Mega) dans les annes 70, une unit de disque offre aujourdhuipour un prix moindre et sur un support matriel bien plus petit, une capacit de 500 Giga, soit 100 000 foisplus. Si des progrs similaires avaient t faits dans le domaine de lautomobile, une voiture qui consommait10 litres au 100 kms, ne devrait plus consommer que 0,1 millilitre . . . ou bien elle devrait rouler 10 millionsde km/h au lieu de 100 km/h . . .

    Il nest pas tonnant quavec une telle volution des performances des ordinateurs, ceux-ci aient eu unimpact si important dans tous les domaines de la socit au point de parler aujourdhui de civilisationnumrique ou dconomie numrique.

    De faon tonnante, malgr cette volution extrmement rapide, les principes et concepts des systmesdexploitation se sont montrs trs stables depuis les annes 70.

    Enfin, lapparition des rseaux dordinateurs a lanc un nouveau dfi la communaut systme . Aprsune vingtaine dannes deffort de recherche, les systmes dexploitation rpartis sont arrivs maturit.

    Mais ceci est une autre histoire . . .

    Dans ce qui suit, et compte tenu du contexte gnral de ce document, nous utiliserons labrviation systme pour dsigner un systme dexploitation.

    1.2 Une dfinition un peu plus prcise

    Un systme est, nous venons de le voir, un ensemble de modules, de composants logiciels indispensablepour pouvoir utiliser un ordinateur. Comme tout programme, il faut donc le dmarrer, et cest cette phasede dmarrage qui se droule lorsque lon place lordinateur sous tension. En fait, comme tout programmeexcutable, une partie du systme doit tre installe en mmoire centrale pour pouvoir sexcuter : on appellece programme, cur du systme, le noyau 2.

    Une fois ce noyau install et actif, quelle fonction doit-il raliser? En fait, elle peut paratre lmentaire.Ce que veut lusager, cest pouvoir excuter des programmes soit disponibles tels que les compilateurs, lesditeurs de textes, les interprteurs,. . ., soit crits par lutilisateur lui-mme. La fonction du systme estdassurer lenchanement de lexcution de ces programmes la demande de lusager. Autrement dit, lesystme transforme larchitecture matrielle en une machine excuter des programmes. Cependant, cettetche est plus ardue quil ny parat. Nous allons prciser pourquoi.

    2. En anglais, kernel ou nucleus ou supervisor.

    Systmes dExploitation Dpartement Informatique et Mathmatiques appliques 6

  • 7/22/2019 Prcis de systme dexploitation

    7/72

    En rsum, un systme est un logiciel qui doit remplir les objectifs suivants :

    Offrir une interface agrable aux usagers pour dvelopper et excuter leurs programmes. Cela passepar une interface simple pour soumettre les demandes dexcution de programmes appeles commandes

    dune part et, dautre part, par un ensemble doprations mises la disposition de tout programmeurpour raliser des traitements ou grer des donnes rmanentes 3. Ces oprations sur des abstractionsbien dfinies sappellent des primitives et dfinissent une machine logique caractristique du systmeou de la famille de systmes que lon utilise.

    Offrir une interface indpendante de larchitecture matrielle : les caractristiques des ressourcesde larchitecture tels que type de processeur, de disque, dinterface (SCSI, Firewire, USB parexemple),. . .doivent tre le plus possible masques. Lidal est de pouvoir dvelopper des programmesdans un environnement systme donn (Unix par exemple) et porter ces programmes par simple re-compilation sur diffrentes configurations et/ou marques de machines ds lors quelles utilisent le mmesystme. Cette proprit de portabilit est extrmement importante pour les applications. En fait, lesystme implante une machine virtuelle aux proprits plus attractives que la machine relle. Cestainsi que lon pourra parler de "machine" Windows pour signifier que lon utilise une machine dotedun systme Windows. Cette indpendance vis--vis du matriel est une des proprits fondamentales

    dun systme dexploitation. Assurer une gestion optimale des ressources disponibles. Autrement dit, le programme systme doit

    tre le plus conome possible. Il ne doit pas consommer trop de ressources pour sa propre excution.Cest hlas un problme majeur comme nous lavons vu avec les disques durs qui se rduisent et lespacemmoire qui disparat. De plus, le systme doit excuter les programmes demands avec le maximumdefficacit. Pour cela, lutilisation du paralllisme potentiel offert par une architecture est un objectiftrs important. Dans presque toute architecture, les changes mmoire centrale/priphrie (appeleshistoriquement les entres/sorties) peuvent sexcuter en parallle avec lexcution dinstructions surle(s) processeur(s) central(aux).

    Contrler les actions de lusager (ou des usagers) afin de garantir, en tout premier lieu, lintgrit desinformations rmanentes places sur disque dans des fichiers. De faon plus gnrale, le systme doitgarantir lintgrit et la confidentialit des informations de ses usagers.

    1.3 Un systme : un logiciel pas comme les autres !

    Un systme dexploitation est donc en premire approximation un ensemble de logiciels qui vont offrirun support, un environnement dexcution aux programmes applicatifs. On peut cependant distinguer deuxcontextes possibles dutilisation de cet environnement :

    un contexte de dveloppement de programmes : le systme est utilis par des dveloppeurs pour pro-grammer et mettre au point de nouvelles applications dans un contexte mtier particulier : calculscientifique, gestion, multimdia, tlphonie, etc

    un contexte dexploitation : le systme est utilis comme support dexcution dun ensemble dap-plications ddies : bureautique, transactions bancaires, contrle dun racteur, acquisition dimagessatellitaires, video la demande, etc.

    Ces deux modes dutilisation ne sont bien sr pas exclusifs et, pour le systme dexploitation lui-mme, les fonctions de base assurer sont identiques. Seuls des rglages de configuration ou des aspects interface usager viendront particulariser et adapter au mieux le systme son contexte dutilisation.

    Un logiciel systme possde cependant quelques particularits par rapport la plupart des programmesapplicatifs. Nous allons lister ces principales originalits.

    3. On appelle information rmanente, des donnes ou programmes dont la dure de vie est indpendante de lexcution dunprogramme, par opposition aux informations temporaires lies la dure de vie dune excution.

    Systmes dExploitation Dpartement Informatique et Mathmatiques appliques 7

  • 7/22/2019 Prcis de systme dexploitation

    8/72

    1.3.1 Un logiciel ractif

    Un systme interagit avec ses usagers. Il ne ralise donc pas le calcul dune certaine fonction dotede paramtres donnes comme le font les programmes fonctionnels. Son interaction avec lenvironnement

    prend la forme dun processus sans fin. Pire, on souhaite mme quun systme nait pas la mauvaise ide desarrter (plantage !) car son bon fonctionnement est indispensable lusager. On peut simplement arrterle fonctionnement du systme lorsquon le souhaite.

    1.3.2 Un logiciel ncessaire

    Comme on vient de le souligner, le systme est pratiquement indispensable pour utiliser efficacement etsans trop de difficults un ordinateur. En particulier, le systme doit tre charg au dmarrage. En fait, cestla partie noyau qui est recopie en mmoire centrale depuis en gnral le disque dit systme. Cette phase dechargement sappelle le bootstrapping. Lors de la mise sous tension, le contrle est donn un programmede chargement initial (bootstrap).

    En fait, cest aujourdhui, la plupart du temps, un metteur au point minimal rsidant en mmoire morte.

    Celui-ci permet de visualiser/modifier par exemple les mots de la mmoire centrale, les registres du processeur,mais aussi de charger le fichier contenant la version excutable du noyau.

    Aprs le chargement du noyau, le contrle est donn un ou plusieurs programme(s) script(s) 4 quitermine(ent) linitialisation du systme par le lancement dactivits assurant des fonctions systmes commepar exemple la connexion dun usager (phase de login) ou la gestion des imprimantes.

    1.3.3 Un logiciel qui partage et cohabite avec dautres

    Cest certainement lune des particularits majeures quil faut bien apprhender. Un systme, et plusspcifiquement sa partie noyau, est un programme qui doit assurer lexcution dautres programmes. Donc,lorsquun systme active un programme usager, il existe forcement deux programmes en mmoire centrale :le noyau et celui de lusager.

    Il y a donc partage des ressources de lordinateur entre le noyau et les programmes usagers. Rciproque-ment, les programmes usagers ont en commun (ils partagent) le noyau qui est donc vu comme une ressourcecommune. La rpartition quitable des ressources aux diffrents programmes usagers est un rle fondamentaldu systme. Il doit attribuer aux programmes usagers les ressources ncessaires leur excution : espacemmoire centrale pour charger le programme en mmoire, temps processeur pour lexcution des instructions,accs aux priphriques units de disque, lecteur/graveur de CD ou DVD, cl USB, scanner, imprimante,modem,...

    titre dexemple, lorsquun systme gre plusieurs usagers et plusieurs programmes par usager, il doitprendre soin de rpartir quitablement les ressources. Il ne faut pas quun programme reste, par exemple,indfiniment ignor par le systme.

    Un des premiers dfis relev par les concepteurs de systme a t de rpartir les ressources dun systmemonoprocesseur entre diffrents usagers interactifs. Ces systmes dits temps partag avaient pour am-bition de faire croire leurs usagers quils taient chacun seul utiliser lordinateur. Lastuce adopte taitde provoquer une commutation de programme actif rgulirement par quantum de temps (100 millisecondespar exemple) de faon ce que tous les programmes sexcutent tour de rle. Lchelle de temps de lusagertant beaucoup plus lente, celui-ci pouvait avoir limpression de disposer de lordinateur pour lui seul (si lesystme tait bien fait et les usagers peu nombreux ou peu actifs). Cette mthode reste toujours dactualitdans la plupart des systmes (non temps rel).

    Ce partage de ressources et cette cohabitation posent aussi un problme de protection des programmesles uns envers les autres. En particulier, le noyau ne doit pas tre mis en danger par les programmes usagersquil supervise.

    4. Nous reviendrons sur cette notion de programme et langage de script.

    Systmes dExploitation Dpartement Informatique et Mathmatiques appliques 8

  • 7/22/2019 Prcis de systme dexploitation

    9/72

    1.3.4 Un logiciel qui rsiste aux fautes des autres

    Lorsquun programme a t charg en mmoire par le noyau et que son excution commence, le noyauperd le contrle au profit de ce programme. Ce dernier peut alors provoquer des erreurs. On peut distinguer

    deux types derreurs dues aux fautes de programmation : les erreurs dexcution dtectes par le processeur : par exemple, instruction inconnue, oprande

    une adresse inexistante, division par zro, . . . De telles erreurs sont dtectes par le processeur et undroutement se produit vers une routine de traitement. Pour que le systme puisse continuer sa tche(et non pas sarrter), il faut donc que la routine de traitement du droutement soit partie intgrantedu noyau et assure par exemple larrt dfinitif du programme fautif, lmission dun message derreuret le passage lexcution dun autre programme usager sil en existe au moins un.

    les erreurs dues des tentatives daccs des ressources contrles par le noyau ou alloues dautresprogrammes. Lune de ces ressources est lespace allou chaque programme en mmoire centrale. Eneffet, un programme usager en excution peut par erreur lire, crire ou se brancher au hasard dansla zone mmoire o est charg le noyau. Une lecture nest pas trop grave except sous langle de laconfidentialit. Une criture est par contre beaucoup plus destructrice : une ou plusieurs instructionsou donnes du noyau peuvent ainsi disparatre. Dans ce cas, si le noyau doit excuter la squence

    dtruite, le rsultat est imprvisible, ou plutt fort prvisible : le systme se plante ! Il en sera engnral de mme pour un branchement, car on ne sait pas trop ce qui sera alors excut. Pour viterde telles dfaillances du systme, il faut mettre en uvre des mcanismes de protection mmoire.

    Pour faire face ces erreurs, un ensemble de mcanismes matriels ont t conus et implants dans lesarchitectures des processeurs. Nous prcisons le rle de chacun de ces mcanismes.

    Protection mmoire

    Lorsquun programme usager a le contrle, autrement dit, il sexcute, il faut confiner son espace mmoireadressable de telle sorte quil ne puisse ni lire ni crire dans les zones qui ne lui appartiennent pas. Il faut que lesystme partage la mmoire centrale en zones distinctes attribues chaque programme en cours dexcution.Si un programme tente daccder hors de son domaine chez ses voisins, le mcanisme de protection mmoireprovoquera un droutement de telle faon quune nouvelle fois, le noyau puisse reprendre le contrle et, parexemple, arrter le programme fautif.

    Modes dexcution

    Ces mcanismes de protection de la mmoire sont dlicats mettre en uvre. En effet, il faut un mca-nisme programmable par le noyau de telle faon que les zones protges puissent voluer selon les programmes.Dans ce cas, la protection ne sera relle que si un programme usager ne peut la modifier son profit. Unprogramme usager doit donc sexcuter dans un mode qui lui interdit lexcution des instructions permettantde modifier les protections de la mmoire. Seul le noyau doit pouvoir le faire. Ceci conduit distinguer pourun processeur deux modes dexcution (au minimum) :

    un mode usager (esclave), dans lequel certaines instructions du jeu dinstructions du processeur sontinterdites. Toute tentative dexcution provoquera une exception (droutement) contrlable par lenoyau ;

    un mode superviseur (matre) dans lequel toutes les instructions du processeur sont excutables. Lesinstructions excutables seulement dans le mode superviseur sont appeles des instructions privilgies.

    Cette notion de mode assure la validit du systme de protection mmoire condition de contrler lepassage entre les deux modes. Lorsquun programme usager sexcute, le processeur est en mode esclave.Cependant lorsquil appelle une primitive du noyau, il faut passer en mode matre de telle faon que laprimitive puisse accder toutes les ressources sans restriction. Lors de la terminaison de la primitive, lasortie du noyau et le retour dans le programme appelant doivent saccompagner inversement du passage dumode matre au mode esclave.

    De faon plus gnrale, la notion de mode est utilise pour limiter les droits daccs dun programme enexcution aux ressources du systme. En effet, certaines instructions du processeur peuvent avoir un effet

    Systmes dExploitation Dpartement Informatique et Mathmatiques appliques 9

  • 7/22/2019 Prcis de systme dexploitation

    10/72

    important sur le fonctionnement global du systme. titre dexemple, si un programme peut excuter uneinstruction qui le rend le plus prioritaire et non interruptible, ce programme risque de perturber fortementlexcution des autres et en particulier monopoliser les ressources du systme son profit pour une dureindfinie. De telles instructions ne seront donc autorises quen mode superviseur.

    Attention: un programme usager ne doit videmment pas pouvoir programmer le changement de modedu processeur. On reviendrait la case dpart. . ..

    Interruptions

    Un autre genre de faute peut tre tout simplement le phnomne de boucle infinie. Un programme peutentrer dans une boucle permanente. Dans ce cas, seule lintervention de lusager ou du systme au bout dundlai plus ou moins long, peut permettre dinterrompre lexcution du programme fautif. Il faut pour celadisposer dun mcanisme matriel permettant dinterrompre lexcution de la boucle par un signal externeau programme. Cest une des utilisations de la notion dinterruption. 5

    Conclusion

    En conclusion, la tolrance aux fautes des programmes usagers et la protection des programmes les unspar rapport aux autres imposent donc de disposer de mcanismes matriels spcifiques : un systme degestion des exceptions (interruptions et droutements), un mcanisme de protection mmoire et au moinsdeux modes dexcution du processeur. Le tableau ci-dessous fait le lien entre fautes et mcanismes ncessaires leur correction.

    Faute du programme Mcanisme ncessaireAccs hors limite Protection mmoire

    + modes matre/esclaveBoucle infinie InterruptionInstruction inexcutable DroutementIntgrit des ressources gres par le systme Instructions privilgies

    1.3.5 Un programme au service des autres

    Un systme est un programme au service des autres. En effet, lorsquun programme usager sexcute, ilappelle en gnral diffrents services offerts sous la forme de primitives par le noyau. Par exemple, lorsquelon veut lire ou crire un fichier, lorsque lon veut obtenir de lespace mmoire, si lon veut connatre la date,le rpertoire courant, si lon veut attendre la fin dun autre programme, etc.

    Lappel de tels services, entre un programme usager et le noyau, obit au schma procdural. Cependant,limplantation dun appel de primitive ncessite un mcanisme spcifique. En effet, si le programme usagerpeut appeler une primitive du noyau par une instruction de branchement classique, cela signifie que toutprogramme a le droit dappeler le noyau en un point quelconque (et pas seulement un point dentre duneprimitive). Ceci est videmment inacceptable comme nous lavons vu. De plus, la commutation de modenest pas effectue. Par consquent, il faut pouvoir, certes autoriser les appels des primitives du noyau, maisil faut aussi protger le noyau des appels dans le vide.

    Pour restreindre les appels des points dentres prdfinis, on a donc recours un mcanisme detype droutement programm. Sur tout processeur, il existe une instruction permettant de provoquer undroutement volontaire (explicitement programm). Le format le plus classique dune telle instruction estle suivant : T RAP n o nest un numro qui sert dindex dans une table de branchements. Lorsquunetelle instruction est excute, il y a branchement ladresse trouve dans la table lindex spcifi, celle-cifournissant le point dentre de la primitive. Il suffit donc que le noyau contienne une telle table correctementinitialise.

    Bien entendu, cette table doit tre protge de telle faon quelle ne puisse tre modifie par un programmeutilisateur.

    5. Les interruptions jouent par ailleurs un rle essentiel dans la gestion des entres/sorties.

    Systmes dExploitation Dpartement Informatique et Mathmatiques appliques 10

  • 7/22/2019 Prcis de systme dexploitation

    11/72

    Enfin, nous avons vu, que grce au noyau, un systme construit une machine tendue (virtuelle) dote deprimitives qui implantent des abstractions simplifiant la programmation. Par exemple, le concept de fichierpermet de sabstraire de la connaissance des paramtres internes de programmation dune unit de disque(adresses des registres de contrle, adresse physique de lunit, codage des ordres dcriture/lecture, posi-tionnement de tte,. . .). Le systme construit une sorte de machine virtuelle fichiers ayant pour composantet support physique, lunit de disque.

    Cependant, il est important de garantir lintgrit de la structure de fichiers mmorise sur le supportphysique. Or, un programmeur mal intentionn (le hacker de base) peut trs bien arriver connatre suffi-samment dinformations sur la programmation de plus bas niveau de lunit. Dans ce cas, il peut arriver crire un programme qui pourra lire ou pire crire un ou plusieurs secteurs du disque SANS avoir recours lappel dune primitive daccs aux fichiers. Il court-circuite le noyau. Dans ce cas, lintgrit de lespacede fichiers ne peut plus tre garantie par le systme.

    Il est donc extrmement important quun programme usager ne puisse pas excuter une telle oprationdirecte daccs. Pour cela, deux approches sont possibles :

    Si les interfaces des contrleurs sont projets en mmoire (les registres de contrle sont visibles commedes mots des adresses prcises et fixes de la mmoire centrale) : dans ce cas, il suffit de protger cet

    espace et dempcher ainsi laccs au contrleur. Si les interfaces des contrleurs sont programmables laide dinstructions spcifiques du processeur, ilsuffit que ces instructions soient privilgies. Un programme qui sexcute en mode esclave ne pourrapas excuter de telles instructions.

    1.3.6 Un programme parallle

    Les systmes dexploitation sont indniablement lorigine de la programmation parallle. Cest leurconception et ralisation qui a conduit dcouvrir les difficults du partage de ressources entre des activitsconcurrentes.

    En effet, les architectures de calculateur ont offert la possibilit de traitements parallles ds les annes1960. Les changes mmoire centrale/priphrique (appels entres/sorties) ont t confis des processeursddis (canaux) permettant dexcuter en parallle un programme sur le(s) processeur(s) central(aux). Ce

    principe est dautant plus efficace que lchange est long. Il y a en effet une diffrence de temps daccs etde dbit extrmement importante entre la mmoire centrale, les mmoires de masse telles que les disques etles priphriques tels que les consoles, les imprimantes.

    Le concept fondamental de processus a t propos pour structurer et contrler ces activits parallles.Les techniques de synchronisation et communication entre processus constituent un volet cl du domaineinformatique.

    1.3.7 Un programme de taille respectable

    Mme si lon se limite au noyau, ce programme est de taille respectable (2 Mega-octets par exemple). Ilcomporte diffrentes classes de modules :

    Les primitives qui sont les oprations (sous-programmes) appeles par les programmes usagers (ouservices systme);

    Les pilotes dentres/sorties ( device drivers ) qui implantent les interfaces de programmation desdiffrents contrleurs dunits priphriques ;

    Les routines de traitement des exceptions : droutements ou interruptions. Les programmes de services qui assurent des fonctions spcifiques : service dimpression, service de

    connexion. . .

    1.3.8 Un programme discret ?

    Un systme a pour objectif de mettre la disposition des programmes usagers les ressources de lordinateurquil contrle. Pour assurer sa tche, nous avons vu quil est embarqu dans le mme bateau et quil

    Systmes dExploitation Dpartement Informatique et Mathmatiques appliques 11

  • 7/22/2019 Prcis de systme dexploitation

    12/72

    Figure 1.1 Principe de structuration en couches

    consomme lui-mme invitablement des ressources. Il doit cependant rester le plus discret possible par untemps de supervision ( overhead ) minimal. Cest un objectif difficile qui nest pas toujours atteint.

    1.3.9 Conclusion

    Un systme dexploitation comporte un composant essentiel appel noyau. Celui-ci est certes un programme , dans la mesure o il se compose de primitives, de pilotes, de routines, tous ces com-posants tant fondamentalement des programmes , du code excutable. Cependant, nous venons de voirque la fonction que doit assurer ce noyau, en loccurrence, lexcution des autres programmes, ncessite desmcanismes particuliers au niveau de larchitecture matrielle et pose des difficults particulires de ralisa-tion. Cest pourquoi, le dveloppement de ces noyaux, et plus gnralement de ces systmes dexploitation,a soulev de nombreux problmes de gnie logiciel et, par consquent, a fait progress sans nul doute lartou la science de la programmation.

    1.4 La notion de programme : le point de vue du noyauNous avons beaucoup parl de programmes . Nous avons vu, en particulier, que la fonction dun noyau

    tait dassurer lexcution correcte des programmes qui taient soumis par les usagers au systme. Il est doncindispensable de prciser cette notion de programme. Plus prcisment, quest-ce quun programme pour lenoyau? Cette question est primordiale et elle constitue mme une marque spcifique dun systme. En effet,tous les systmes dexploitation ne traitent pas le mme format de programme.

    Auparavant, rappelons la notion de programme telle quelle se prsente pour un programmeur dapplica-tion. Prenons pour exemple un programme source crit en C :

    #include < stdio.h >

    int main(int argc, char *argv[]) {

    printf("coucou");

    return 0 ;

    }

    Ce programme va tre compil par le compilateur C qui va engendrer dans un fichier une reprsentationnouvelle du programme : en loccurrence, la version dite binaire objet r-ditable. Un tel fichier contient unedescription structure du programme excuter. Ce format de description est trs spcifique dun systmedexploitation (ou dune famille de).

    La figure1.2prsente cette structure distinguant len-tte et une suite de sections ainsi que des tablesdiverses qui seront utilises par lditeur de liens. Le code engendr dans une section spcifique (dite text)nest cependant pas encore tout fait excutable. Des oprandes, en particulier, dans les instructions debranchement, restent dfinir.

    Systmes dExploitation Dpartement Informatique et Mathmatiques appliques 12

  • 7/22/2019 Prcis de systme dexploitation

    13/72

    Une dcompilation de la seule section de code du programme binaire objet de lexemple, donne lecode suivant en assembleur pour un processeur Intel:

    Adresse code oprandes oprandes avec symboles

    _main :0000000000000000 pushq %rbp0000000000000001 movq %rsp,%rbp0000000000000004 subq $0x10,%rsp0000000000000008 movl %edi,0xfc(%rbp)000000000000000b movq %rsi,0xf0(%rbp)000000000000000f leaq 0x00000000(%rip),%rdi LC0(%rip),%rdi0000000000000016 movl $0x00000000,%eax $_main, %eax000000000000001b callq 0x00000020 _printf0000000000000020 movl $0x00000000,%eax $_main, %eax0000000000000025 leave0000000000000026 ret

    Le code produit par le compilateur est dans un format binaire objet r-ditable, cest--dire quil peuttre trait par un diteur de liens pour obtenir un programme binaire objet excutable. Ainsi, aprs la phaseddition des liens, on obtient le code final suivant :

    Adresse code oprandes oprandes avec symbolesstart :0000000100000ec4 pushq $0x000000000100000ec6 movq %rsp,%rbp0000000100000ec9 andq $0xf0,%rsp0000000100000ecd movq 0x08(%rbp),%rdi0000000100000ed1 leaq 0x10(%rbp),%rsi0000000100000ed5 movl %edi,%edx0000000100000ed7 addl $0x01,%edx0000000100000eda shll $0x03,%edx

    0000000100000edd addq %rsi,%rdx0000000100000ee0 movq %rdx,%rcx0000000100000ee3 jmp 0x100000ee90000000100000ee5 addq $0x08,%rcx0000000100000ee9 cmpq $0x00,(%rcx)0000000100000eed jne 0x200000ee50000000100000eef addq $0x08,%rcx0000000100000ef3 callq 0x100000f00 _main0000000100000ef8 movl %eax,%edi0000000100000efa callq 0x100000f28 symbol stub for : _exit0000000100000eff hlt_main :0000000100000f00 pushq %rbp0000000100000f01 movq %rsp,%rbp0000000100000f04 subq $0x10,%rsp0000000100000f08 movl %edi,0xfc(%rbp)0000000100000f0b movq %rsi,0xf0(%rbp)0000000100000f0f leaq 0x0000001e(%rip),%rdi LC0(%rip),%rdi0000000100000f16 movl $0x00000000,%eax $_main, %eax0000000100000f1b callq 0x100000f2e symbol stub for : _printf0000000100000f20 movl $0x00000000,%eax $_main, %eax0000000100000f25 leave0000000100000f26 ret

    Systmes dExploitation Dpartement Informatique et Mathmatiques appliques 13

  • 7/22/2019 Prcis de systme dexploitation

    14/72

    Figure 1.2 Programme binaire excutable et image

    On peut constater que lditeur de liens a ajout un code commenant ltiquette startet se droulantjusqu ltiquette _main qui dbute la gnration du code du programme correspondant. On remarqueraaussi linstruction de branchement de type sous-programme (callq) pour appeler le programme principal.Nanmoins, le code du sous-programme printfnest toujours pas prsent. En fait, il nest pas inclus dans lebinaire objet excutable car il sera coupl dynamiquement lors du chargement du programme en mmoire.Autrement dit, il apparaitra bien dans limage binaire mmoire qui sera construite par le chargeur partirde ce binaire objet excutable, mais cette implantation des sous-programmes de la bibliothque C ne se feraquen mmoire virtuelle au moment de limplantation de limage binaire excutable 6.

    1.4.1 La notion de format binaire objetLa notion de format binaire objet excutable ou r-ditable est donc fondamentale dans un systme

    dexploitation. Cest la reprsentation officielle de tout programme qui peut tre dvelopp et mis enuvre sous un systme donn. La structure logique dun binaire objet r-ditable ou excutable est la mme.

    En rsum, le format de description dun programme pour un systme donn est : Spcifique dune famille de systmes : Unix, Windows, . . . ; Portable : format identique le processeur ; Existe sous deux formes de format commun : excutable et r-ditable (statiquement ou dynamique-

    ment). titre dexemples, nous citons quelques formats selon les systmes : Les vieux formats Unix : Formats a.outet COFF(Common Object File Format) La famille Unix (Linux, Solaris, Irix, System V, BSD) : FormatELF (Executable and Linking Format)

    La famille Windows : Format PE (Portable Executable Format) etCOFF. La famille Mac OS X dApple : le format macho. . .

    1.4.2 Image binaire excutable

    Une dernire forme de programme existe : limage du programme qui sera implante en mmoire centralepar le chargeur du noyau pour que le programme puisse enfin tre excut. Cette image mmoire est doncconstruite partir du binaire objet excutable lors du chargement en mmoire. La figure1.2montre les deuxreprsentations de programme.

    6. Se reporter au chapitre sur les mmoires virtuelles pour plus de dtails sur cette notion de couplage en 4.1.7.

    Systmes dExploitation Dpartement Informatique et Mathmatiques appliques 14

  • 7/22/2019 Prcis de systme dexploitation

    15/72

    En fait, cette image sera implante trs souvent dans une mmoire virtuelle par couplage (voir 4.1.7).De faon similaire au format binaire objet, une image binaire dun programme est structure en segments.Chaque segment contient soit du code, soit des donnes. Un segment est rserv pour lallocation dynamiquede mmoire durant lexcution du programme : allocation despace selon un schma de pile lors des appels deprocdure, allocation despace selon un schma de tas pour les structures de donnes dynamiques accdespar pointeur.

    1.4.3 Autre format de programme excutable

    Pour le systme dexploitation, il existe un autre format de programme excutable. En effet, nous avons vuque les requtes pour soumettre un programme excuter peuvent se faire grce un langage de commandes(ou langage de script) par lintermdiaire dun interprteur. Cet interprteur considre une commande soitcomme immdiatement interprtable par lui-mme (cas des commandes dites built in ) soit comme unnom de programme excutable. Or, bien entendu, pour linterprteur, deux possibilits sont offertes :

    soit il sagit dun programme binaire objet excutable : cest le format que nous venons danalyser etil suffira de provoquer le chargement en mmoire de ce programme excutable;

    soit il sagit dun programme de script, cest--dire un programme crit dans le langage textuel delinterprteur. Ce programme est tout autant excutable, mais cette fois-ci, par linterprteur (et nonpas par le processeur natif).

    Consquence : ces deux formes de programmes sont donc excutables en ce sens que un fichier qui contientlun ou lautre de ces programmes peut tre accd en mode excution .

    1.5 Principes de conception

    Un systme prsente donc des particularits importantes. Cependant, la ralisation dun tel logiciel sap-puie sur des principes de conception qui ont t ensuite trs utiles en gnie logiciel de faon gnrale. Nousinsistons sur les principes de conception essentiels.

    1.5.1 Conception selon une approche hirarchique

    Un principe de conception fondamental consiste construire une hirarchie de machines abstraites, vir-tuelles. Chacune implante un jeu dinstructions, de commandes qui sera implant laide de la machinede niveau infrieur. On reprsente graphiquement cette approche mthodologique sous la forme dune ciblecomme la figure (1.1).

    Au niveau le plus bas, on trouve larchitecture matrielle qui apporte les ressources utilisables et un jeudinstructions correspondant une famille de processeurs (RISC par exemple). ce niveau les instructionssont trs lmentaires et leurs oprandes aussi (octets, entiers, rels flottants. . .).

    Au niveau suivant, le cur dun systme est constitu par le programme noyau. Celui-ci permet dtendrele jeu dinstructions prcdent par un ensemble de primitives qui implante les abstractions cls qui permet-tront au systme de grer les traitements et les donnes des usagers. Pour les traitements, la notion deprocessus permet de contrler lexcution dun programme squentiel. Pour les donnes, la notion de fichierpermet de sabstraire des particularits physiques des priphriques et de contrler laccs aux informationsde chaque usager. Les primitives dun noyau sont des sous-programmes qui peuvent donc tre appels du-rant lexcution dun programme. Linterface dappel est cependant particulire via la notion de droutementprogramm (TRAP). Ils peuvent comporter de quelques centaines plusieurs milliers dinstructions machine.

    Au niveau suivant, un interprteur de commande va permettre de dialoguer avec le systme pour sou-mettre des demandes dexcution de programmes. Un interprteur de commandes est en fait un programmesystme qui, une fois actif, devient un processus interprteur. Dans le systme Unix, la famille des langagesde scripts shell permet de demander lexcution dun ou plusieurs programmes ventuellement en parallle.Lexcution dune commande est alors la plupart du temps synonyme de lexcution dun programme sous

    Systmes dExploitation Dpartement Informatique et Mathmatiques appliques 15

  • 7/22/2019 Prcis de systme dexploitation

    16/72

    la forme dun processus. Seules quelques commandes trs lmentaires, dtes built-in , sont directementinterprtes. ce niveau, on a donc bien obtenu une machine capable dassurer lexcution de programmesquels quils soient.

    Les langages de script sont particulirement importants pour le dveloppement rapide de programme,pour le prototypage. Ils sont aussi des langages de programmation large chelle dans la mesure oles objets oprandes sont des entits gros grain, essentiellement des fichiers de donnes ou des fichiersexcutables (contenant des programmes excutables ou interprtables).

    ceci peut sajouter un sous-systme de fentrage tel que X11. Dans ce cas, un processus serveur assurele contrle de la ressource cran et accepte de grer les interactions avec lusager via la souris et un curseurdcran.

    Chaque frontire entre niveaux adjacents de la hirarchie prcdente comporte une rupture dchelle. Letableau ci-dessous rsume la structuration trois niveaux des systmes actuels.

    Niveau Ressource Type dinterface Dure dune oprationMatriel Processeur Instruction sec

    Noyau Primitives Sous-programme >millisecInterprteur Commandes Programmes quelconque

    1.5.2 La notion de ressource virtuelle

    La notion de ressource virtuelle est apparue assez tt dans la conception des systmes. Cette notionsinscrit naturellement dans leffort gnral des concepteurs de systme pour offrir aux programmes desusagers un environnement de programmation masquant les caractristiques matrielles et parfois mme leurlimitations ou imperfections.

    Une premire application de lide de ressource virtuelle a t la notion dimprimante virtuelle . Aulieu que chaque programme dite directement ses rsultats sur une imprimante souvent unique et lente, lesrsultats sont redirigs dans un fichier sans modification du programme. Cette redirection est transparente.Un programme spficique assure ldition effective du contenu de chaque fichier dimpression squentielle-ment. Cette stratgie est appele spooling7. La dmarche est donc dattribuer une imprimante virtuelle chaque programme. Celle-ci est prive au programme (pas de problme de concurrence) et plus rapide quela ressource relle (la rapidit dcriture sur disque est beaucoup plus grande que la vitesse dimpression).La ressource virtuelle a des proprits meilleures que celle de lobjet rel.

    Cette ide a t en particulier utilise pour la gestion de la mmoire centrale. Le partage de la mmoiredisponible entre plusieurs programmes (multiprogrammation) pose des problmes dallocation de la ressourcemmoire. Le concept de mmoire virtuelle permet doptimiser lallocation de la mmoire relle et, danscertains cas, autorise par exemple lexcution de programmes ayant une taille suprieure la mmoire relle !

    Une ressource virtuelle est donc une abstraction dune ressource relle qui amliore les proprits dela ressource relle. Par ailleurs, le nombre de ressources virtuelles utilises peut tre dynamique. Ainsi, de

    multiples exemplaires dune ressource qui nexiste physiquement quen un seul exemplaire peuvent tre crs la demande.

    Aujourdhui, la notion de machine virtuelle est trs dveloppe. Vieille ide, elle rapparat avec la puis-sance norme des serveurs actuels. Cette notion permet de transformer une machine unique relle en unensemble de machines virtuelles qui, chacune, peuvent excuter un systme dexploitation ventuellementdiffrent. Cette approche connat un fort dveloppement permettant par exemple de faire tourner deux sys-tmes dexploitation, Linux et Windows, simultanment sur une mme machine ou de faire cohabiter unemachine virtuelle dexploitation et une machine virtuelle de dveloppement sur la mme machine relle.

    7. de labrviation SPOOL : Simultaneous Peripheral Operations On-line

    Systmes dExploitation Dpartement Informatique et Mathmatiques appliques 16

  • 7/22/2019 Prcis de systme dexploitation

    17/72

    1.5.3 Le principe de liaison dynamique

    Lorsquun programme sexcute, il demande dynamiquement des services au noyau. Par exemple, unprogramme veut accder un fichier pour le lire. Par lappel de la primitive open, le noyau va crer la

    connexion dynamique entre le fichier et le programme usager et renvoyer lappelant un identificateur deconnexion (qui est souvent un simple index) qui sera ensuite utilis lors des oprations de lecture. Loprationcloserompra cette liaison. Cest donc une liaison dynamique qui est cre entre le programme en excutionet la ressource fichier quil veut utiliser.

    Cette fonction de liaison, connexion dynamique est une des tches de base du noyau. En particulier,toutes les communications du processus avec son environnement externe (fichiers, pseudo-priphriques,autres processus) ncessitent pralablement une opration de liaison dynamique qui saccompagne en gnraldun contrle sur les droits daccs de lappelant.

    Loptimisation de lutilisation des ressources conduit le noyau adopter le plus possible une stratgieconsistant retarder la liaison effective le plus tard possible (Delay Binding Time). titre dexemple, dansun systme de gestion de mmoire virtuelle, la liaison dune zone de mmoire relle (appele page) unprogramme peut tre retarde jusqu lultime moment dune rfrence dans cette zone.

    1.6 Un mini-systme

    Pour prciser les principaux problmes auxquels se heurte le concepteur de systme dexploitation, onconsidre un exemple de mini-systme. Nous prsentons dabord larchitecture matrielle, puis la machinelogique, abstraite qui est implante pas le systme dexploitation et qui va rendre utilisable, exploitable larchitecture matrielle. Pour simplifier, on considre un systme trs simple qui offre une interface dusageminimaliste, en loccurrence, un cran/clavier qui permet de soumettre un interprteur des commandes.

    1.6.1 Larchitecture matrielle

    Une architecture matrielle simple est celle des ordinateurs personnels (PC) qui comportent un bus uniqueauquel sont connects les diffrents modules : processeur, mmoire et interfaces diverses : Ethernet, FireWire,USB, sries (RS232), parallle,. . .

    La figure (1.3) prsente le schma dune telle architecture ne comportant comme ressource priphriquequun cran-clavier et un disque fixe.

    Figure 1.3 Architecture minimale standard

    Systmes dExploitation Dpartement Informatique et Mathmatiques appliques 17

  • 7/22/2019 Prcis de systme dexploitation

    18/72

    Figure 1.4 Machine abstraite usager

    1.6.2 La spcification du systme dexploitation

    Pour utiliser larchitecture prcdente, il faut dfinir un protocole de communication entre lusager devant

    son cran-clavier et cette architecture. Cest le rle du systme de raliser une telle interface de dialogue. Lafonction de base qui doit tre assure via ce protocole est de permettre lusager de soumettre des demandesdexcution de programmes. Autrement dit, le systme aura pour tche dassurer la bonne excution desprogrammes demands par lusager squentiellement.

    Limplantation de cette interface de dialogue peut prendre la forme minimaliste suivante : aprs char-gement et initialisation du systme, lusager voit apparatre un prompt (par exemple le symbole >) luiindiquant la disponibilit du systme. Il peut alors taper une commande sur une ligne et terminer par unreturn.

    Toute commande est en faite une suite de chanes de caractres spars par des blancs. La premire chanedoit tre un identificateur qui dsigne un nom de fichier contenant un programme excutable 8.Les chanessuivantes constituent les arguments fournis au lancement de lexcution du programme par le systme . Eneffet, le systme interprte la commande frappe par lusager comme une demande dexcution du programme

    excutable rfrenc.On suppose quil existe sur le disque, un ensemble de fichiers contenant des programmes excutablesconstituant les commandes de base offertes aux usagers. Ceci suppose videmment que le volume disque estbien vu comme un espace de fichiers et que linterprteur va chercher les fichiers binaires objets excutablesimplantant les commandes dans un rpertoire prdfini.

    Nous donnons quelques exemples de commandes possibles :

    lister liste les commandes de base qui existent;date affiche la date prsente;expliquer explique la fonction de la commande rfrence;calculer calcule lexpression arithmtique fournie

    en paramtre et affiche le rsultat ;

    mem affiche lespace mmoire centrale disponible ;usagers liste les usagers connus du systme ;exit arrt du systme ;. . .

    La figure (1.4) illustre cette vision, un niveau logique, de la machine abstraite usager. On neconsidre ici que linterface usager via un cran/clavier.

    8. Dans le cas dun vrai systme, linterprteur de commande excute lui-mme un ensemble prdfini de commandes qualifiesde built-in .

    Systmes dExploitation Dpartement Informatique et Mathmatiques appliques 18

  • 7/22/2019 Prcis de systme dexploitation

    19/72

    1.6.3 Linterprteur de commande

    La gestion du dialogue usager-systme sappuie classiquement sur un programme appel interprteur decommandes. Lalgorithme de principe dun tel interprteur, dcrit en pseudo-Java, est le suivant :

    Interprter() {

    while (true) {

    cran.Afficher(>) ; Commande c = Ligne.Lire() ;

    if (c.Valide()) c.Excuter() ; else cran.Afficher(c.Erreur);

    }

    }

    Quant lexcution dune commande valide, elle peut tre raffine dans la classe Commande par ladescription de la mthodeExcuter:

    class Commande {

    ...

    void Excuter() {Proc prog = Programme.Charger(this.nom) ;

    prog(this.arg) ;

    }

    boolean Valide() {...}

    ...

    }

    Quelques remarques : les commandes se traduisent pour linterprteur par le lancement dun programme qui est activ par

    un appel de type procdural aprs chargement pralable en mmoire centrale ; linterprteur fait appel des oprations dutilit publique telles que Afficher, Lire, Charger qui

    appellent des primitives du noyau. Ces primitives constituent un ensemble doprations sur des abs-

    tractions telles que fichiers, processus, mmoire, canaux,. . . qui dfinissent une machine systme , la fois plus simple et puissante, pour dvelopper des programmes. Un noyau implante ainsi une machinetendue systme offrant les mme services tous les programmes usagers.

    1.6.4 Exercices

    Linterprteur prcdent doit assurer un service permanent et fiable. Pour ce faire, plusieurs obstaclesdoivent tre surmonts. En effet, des fautes de programmation dans les programmes commandes et plusgnralement, dans un vrai systme, les programmes des usagers, peuvent provoquer des erreurs conduisant larrt du systme.

    1. numrer diffrentes anomalies qui pourraient survenir durant lexcution du programme charg etlanc par linterprteur ;

    2. Pour chacune, proposer un mcanisme pour rcuprer lerreur et assurer la survie du systme ;3. Linterface du systme jouet propos est enrichie par la notion dusager. Un usager ne peut excuter

    des commandes quaprs une phase didentification. Modifier linterprteur pour assurer ce contrledaccs.

    Systmes dExploitation Dpartement Informatique et Mathmatiques appliques 19

  • 7/22/2019 Prcis de systme dexploitation

    20/72

    Systmes dExploitation Dpartement Informatique et Mathmatiques appliques 20

  • 7/22/2019 Prcis de systme dexploitation

    21/72

    Chapitre 2

    Les processus

    2.1 Les processus

    2.1.1 Origine et motivation

    Une tche fondamentale dun systme dexploitation est dassurer lexcution de programmes divers etvaris...

    Ces programmes peuvent tre de diffrentes natures : programme dvelopp par un programmeur pour une application ; programme assurant une fonction dans la production mme dautres programmes : compilateurs, in-

    terprteurs, diteur de liens, metteur au point ; programme dit "systme" assurant une tche dans le fonctionnement mme du systme : interprteur

    de commande par exemple.Les concepteurs de systmes dexploitation se sont trs vite aperus que lon pouvait envisager de g-

    rer lexcution de plusieurs programmes en parallle. En effet, une architecture classique de machine, mmemono-processeur, autorise le paralllisme des changes dinformation entre les priphriques (disques, bandesimprimantes, scanners, CD,. . .) et la mmoire centrale dune part, et dautre part, lexcution dun pro-gramme par le(s) processeur(s) avec cependant un problme de contention et de partage daccs la mmoirecentrale qui apparat alors comme une ressource commune partage. La figure (2.1) illustre ce paralllismedes entres/sorties avec lexcution des programmes.

    des informations

    Scanner Disque Impr imanteConcole

    Mmoire

    Programme

    ProcesseurParalllisme

    de transfert

    Figure 2.1 Paralllisme entre entres/sorties et excution dun programme

    Or, on a grand intrt exploiter ce paralllisme. Prenons lexemple dun interprteur de commandes.Son schma dexcution comporte des lectures rptitives du clavier pour lire la commande de lusager. Tantque la ligne de commande na pas t frappe, le programme interprteur na rien dautre faire que detester de faon continue si le caractre de fin de ligne a bien t lu et plac dans un octet de la mmoirecentrale. Ce test incessant est une boucle qui va tre excute durant plusieurs secondes. Autrement dit, leprocesseur excute plusieurs millions de fois la mme instruction de test. Le processeur pourrait donc tre

    21

  • 7/22/2019 Prcis de systme dexploitation

    22/72

    plus efficacement utilis si lon pouvait assurer lexcution dun autre programme pendant cette priode olinterprteur est logiquement bloqu. Pour cela, plusieurs conditions sont nanmoins ncessaires :

    il faut savoir suspendre momentanment lexcution dun programme : le programme interprteur doit

    tre arrt, son tat courant dexcution doit tre sauvegard en mmoire de telle sorte que lon puissecontinuer son excution ultrieurement. Ceci implique de savoir sauvegarder/restaurer un contextedexcution de programme. Cest pourquoi, tout processeur possde un contexte minimal dexcutionrassemblant les informations caractristiques et suffisantes pour pouvoir, si elles sont recharges dans lesregistres du processeur, reprendre lexcution en son point de sauvegarde. Cet ensemble dinformationsse prsente sous la forme dun mot dtat programme (PSW : Program Status Word), car lasauvegarde de ltat en mmoire centrale (en gnral par empilement) occupe un (double)-mot ;

    linterface de supervision des entres/sorties doit pouvoir mettre une interruption vers le processeurlorsquun change de donnes est termin afin que le noyau systme puisse enregistrer que le programmeayant lanc lchange peut dsormais continuer. Cette gestion des vnements asynchrones de fin delecture ou dcriture met en jeu intensivement le mcanisme dinterruption. On peut remarquer que letraitement dune interruption implique aussi la sauvegarde de ltat du programme qui est interrompu.Le processeur commute de lexcution du programme (interrompu) lexcution de la routine de

    traitement de linterruption. En fin de routine, le contrle doit tre rendu au programme interrompuet donc le processeur commute de lexcution de la routine lexcution du programme interrompu.

    Ainsi, dun point de vue logique, le processeur(s) ne sarrte(nt) jamais, mais il(s) commute(nt) frquem-ment dun programme un autre, ce programme pouvant tre un programme applicatif ou un programme systme tel que linterprteur de commandes. Le noyau, quant lui, sert dintermdiaire et de super-viseur de ces commutations (via lexcution de primitives ou de routines dexception). Cest pourquoi, lesconcepteurs de systme ont eu lide dabstraire, sous la forme dun concept et aussi dun objet, la gestionde lexcution dun programme sous le contrle dun noyau dexploitation. Ce concept est celui de processus.

    2.1.2 Le concept de processus

    Une processus modlise lexcution dun programme. Il capte le caractre dynamique dun traitementralis par un programme. Il ne doit donc pas tre confondu avec la notion de programme qui capte laspectstatique et descriptif dun traitement. On peut par exemple comparer le programme un DVD et le processeurau lecteur de DVD. Alors, le processus sera . . . le visionnage du DVD. Sil y a une interruption de la sancede cinma, on sait quil faut reprendre la projection au point o elle avait t interrompue. Cest la mmechose pour lexcution dun programme.

    Un processus est donc une entit dynamique qui a une dure de vie limite (la dure de lexcution du pro-gramme) et dont on peut caractriser le comportement un certain niveau dabstraction par un diagrammede transitions dtat. La figure (2.2) illustre les rgles comportementales dun processus en distinguant 3tats :

    Dans ltat actif, le processus excute des instructions dun programme. Il monopolise un processeur.

    Dans ltat prt, le processus est arrt. Il ne lui manque que la ressource processeur pour deveniractif. Autrement dit, il suffira de lui allouer le (un) processeur et de charger le contexte dexcutionsauvegard pour que celui-ci poursuive lexcution du programme dont il a la charge.

    Dans ltat bloqu, le processus est aussi arrt. Mais, pour se poursuivre, une condition logique devrade plus devenir vraie. Par exemple, le processus interprteur attendant quune ligne de commande soitfrappe est bloqu tant que cette ligne nest pas disponible. La sortie de ltat bloqu pourra conduire leprocessus soit dans ltat actif, soit dans ltat prt. Ce choix est fix par la stratgie dordonnancementdes processus vis--vis de la ressource processeur.

    On dsigne souvent lensemble compos des processus prts et actifs comme lensemble des processusexcutables.

    Systmes dExploitation Dpartement Informatique et Mathmatiques appliques 22

  • 7/22/2019 Prcis de systme dexploitation

    23/72

    Dbloquer

    Actif Prt

    Bloqu

    Crer

    Dtruire

    Dtruire

    Exit

    Bloquer

    Suspendre

    Activer

    Figure 2.2 Diagramme de transitions dtat dun processus

    2.1.3 Les oprations sur les processus

    Le diagramme de transitions fait apparatre les primitives applicables aux objets processus. Celles-cidfinissent la classe ou le type des objets processus du point de vue du noyau de gestion des processus.

    Crer

    La premire opration indispensable est lopration de cration dun processus. Pour le noyau, un objetprocessus est un objet comme un autre. La cration dun processus apparat donc comme la cration dunobjet de la classe processus avec ses attributs et mthodes (oprations). Parmi les attributs dun processus,on trouve par exemple, le nom du fichier do est issu le programme associ au processus, un nom internede processus (numro par exemple), ltat, le contexte initial qui sera charg dans les registres du processeurpour dbuter lexcution, lespace mmoire allou pour le chargement et lexcution du programme, certains

    paramtres dexcution (priorit, dlais de garde,. . .), le nom de lusager pour lequel le processus travaille ,lenvironnement fichier accessible (rpertoire de travail), etc. Ainsi, un objet processus peut ncessiter undescripteur de plusieurs Koctets. Dans le systme Unix, on distingue mme une zone noyaudu descripteurde processus (structure sproc) et une zone usager(structure uproc). La premire est alloue dans lespacemmoire du noyau, alors que la seconde est dans lespace mmoire utilisateur.

    Lorsquon cre un processus, deux approches sont possibles : soit le nouvel objet est cr de toute pice,soit le nouvel objet est une copie dun processus courant. Cette dernire approche est par exemple adopt parle systme Unix. Elle prsente lavantage de pouvoir dcomposer la cration dun processus en deux tapes :une premire tape concerne laspect parallle avec la cration dun processus sosie et une deuxime tapeconcerne laspect traitement (programme) avec la commutation du programme excut par le processus sosie.De plus, le processus fils cr hrite naturellement de tout lenvironnement dexcution du processus pre(crateur). Ceci vite davoir prciser explicitement un grand nombre de paramtres de cration.

    Enfin, la gestion globale des processus par le noyau comporte souvent la structuration de lensemble desprocessus existants selon une arborescence fonde sur la relation de cration. Cette structure permettra enparticulier un processus pre dattendre la terminaison dun ou plusieurs de ses fils assurant ainsi unesynchronisation globale entre processus.

    Activer

    Un processus prt peut devenir actif par lopration Activer. Cette opration consiste essentiellement, charger dans les registres du processeur le contexte sauvegard en mmoire. La ressource processeur est ainsialloue au processus pour excuter rellement un programme. La priode active du processus se terminesoit par un blocage, soit par une premption du processeur au bout dun dlai fix maximal (voir opration

    Systmes dExploitation Dpartement Informatique et Mathmatiques appliques 23

  • 7/22/2019 Prcis de systme dexploitation

    24/72

    Suspendre). Cette suspension force dun processus permet de rpartir plus quitablement la ressourceprocesseur entre les diffrents processus prts candidats.

    SuspendreSi la commutation dun processus un autre nest cause que pas le blocage dun processus actif, un

    processeur peut tre monopolis par un processus pendant une longue priode. Par exemple, si le programmeexcut comporte de longues tapes de calcul sur des donnes en mmoire centrale, il faudra attendre unelecture ou criture sur disque pour quune commutation se produise. Pour mieux rpartir le temps processeurentre les processus, un processeur est en gnral allou au processus pour une dure maximale fixe appelequantum. Si le processus atteint la fin de quantum, alors une interruption est provoque et le processus actifsur le processeur interrompu est suspendu. Librant ainsi le processeur, un autre processus prt peut treactiv.

    Bloquer

    Cette opration comporte une premire tape identique loprationSuspendre

    . Mais, le processus nepeut plus tre candidat la ressource processeur. Il devra tre replac dans ltat prt, ventuellementdirectement dans ltat actif, par une opration explicite Dbloquer. Les priodes pendant lesquelles unprocessus est bloqu correspondent aux priodes pendant lesquelles la poursuite de lactivit du processusest conditionne par la disponibilit dune ressource ou loccurrence dun vnement (fin dentre/sortie parexemple).

    Cette opration a un effet de bord important : elle libre la ressource processeur pour un autre processusprt. Par consquent, elle conduit le noyau enchaner par une opration Activer(si possible).

    Dbloquer

    Cette opration replace un processus parmi les processus excutables. Elle est invoque en gnral suroccurrence dun vnement asynchrone provoqu par un autre processus, une fin dentre/sortie ou une fin

    de quantum.

    Exit

    La terminaison dun programme se traduit par la fin du processus mais pas larrt du processeur. Parconsquent, la fin du programme doit se traduire par un appel explicite au noyau dexcution via uneprimitiveExit. Lobjet processus correspondant pourra alors tre dtruit sauf contraintes particulires. Unecommutation de processus sensuivra automatiquement.

    Dtruire

    Si un programme ne se termine pas normalement ou si une raison externe ncessite de dtruire unprocessus (manque de ressource, surcharge du systme), on pourra tre amen dtruire un processus non

    actif.

    2.1.4 Lordonnancement des processus

    Il faut bien distinguer trois niveaux dordonnancement des processus. La figure (2.3) illustre ces niveauxrsums dans le tableau suivant :

    Processus Ordonnancement Gestion des transitionsExcutables court-terme Prt ActifSynchroniss moyen-terme Excutable Bloqu

    Rguls long-terme Dormant Synchronis

    Systmes dExploitation Dpartement Informatique et Mathmatiques appliques 24

  • 7/22/2019 Prcis de systme dexploitation

    25/72

    Actif

    Bloqu

    Dormant

    SynchronissRguls

    moyentermeOrdonnancement

    ExcutablesOrdonnancement

    courtterme

    Ordonnancement

    longterme

    Prt

    Figure 2.3 Niveaux dordonnancement

    Le niveau des processus excutables gre lordonnancement court terme qui consiste contrler lal-location de la ressource processeur. Il sagit de rpartir selon une stratgie dordonnancement adquate letemps processeur disponible entre les diffrents processus excutables cest--dire dans ltat prt ou actif.En gnral, le noyau gre donc une file dattente des processus prts (file simple chronologique fifo ou priorit) et ceux-ci passent dans ltat actif ds quun processeur (et par consquent du temps processeur)est disponible. Le choix dun processus dans la file dtermine ce qui se passe dans le systme pour quelquescentaines de millisecondes. On parle donc dordonnancement court-terme.

    Le niveau des processus synchroniss contrle le bloquage/dbloquage des processus intervenant lors delallocation/libration des autres ressources que processeur ncessaires lexcution du processus. chaque

    demande de ressource physique ou logique peut tre associe une file dattente de processus bloqus et lastratgie dordonnancement consistera donc ici choisir quel(s) processus dbloquer lorsque la ressourceattendue sera disponible. Ce choix a donc un impact sur ce qui sexcute dans le systme dans les quelquessecondes qui suivent. On parle dordonnancement moyen-terme.

    La figure2.4prsente un diagramme des vnements qui peuvent senchaner sur un processeur uniquedurant une priode dactivit du systme : on suppose quil existe trois programmes dusagers en coursdexcution, soit donc trois processus usagers. Ces programmes font appel aux primitives du noyau, icipour lire des fichiers (primitive read) par exemple. Les interruptions de fin de quantum provoquent descommutations de processus. Une fin dentre-sortie signale ici la fin de la lecture demande par le processusP1 ce qui permet au noyau de redonner le contrle du processeur au processus P1.

    Enfin, le niveau des processus rguls gre lordonnancement long terme qui consiste contrler la

    cration/destruction des processus. En effet, la dcision de crer un nouveau processus peut tre soumise condition : par exemple, le nombre de processus existants est infrieur une limite fixe. La cration dunprocessus peut avoir un impact sur ce qui se passe dans le systme pendant une dure longue : si le processusdoit excuter un calcul de plusieurs heures . . .

    En rsum, lordonnancement des processus est une tche complexe comportant diffrentes stratgiesdordonnancement selon le niveau o lon se place ou selon les ressources mises en jeu. Une difficult debase rside dans la ncessit de partager quitablement les ressources entre les processus demandeurs. Unprocessus ne doit pas rester bloquer indfiniment en attente dune ressource. De nombreuses recherches ontt ralises sur ce sujet pour optimiser le flot global de processus excuts par le systme tout en satisfaisantles contraintes temporelles dexcution (temps de rponse) propres chaque processus.

    Systmes dExploitation Dpartement Informatique et Mathmatiques appliques 25

  • 7/22/2019 Prcis de systme dexploitation

    26/72

    Figure 2.4 Diagramme vnementiel de lactivit dun systme pour un processeur fix

    2.2 Lenvironnement dexcution dun processus

    Le noyau dexcution assure et contrle le droulement dun processus de faon garantir sa bonneexcution sans mettre en danger ni lexcution des autres processus, ni le fonctionnement correct du noyaului-mme. Pour ce faire, il doit fournir une sorte de machine virtuelle la plus portable possible. En effet,il est intressant de pouvoir crire des programmes qui sappuient sur les services offerts par le systmedexploitation plutt que sur les caractristiques particulires de tel ou tel processeur ou priphrique. Entreautre chose, la machine support de lexcution du processus doit tre capable :

    de traiter les exceptions dues des erreurs de programmation contenues dans un programme de faon viter larrt du systme global : seul le processus ayant provoqu lerreur sera interrompu ;

    de communiquer des vnements asynchrones externes vers le processus : par exemple, les interruptionsdentre/sortie ;

    dchanger des flots dinformations via les ressources priphriques, fichiers et/ou dautres processus.

    2.2.1 La communication par vnements asynchrones

    Un processus doit disposer dun systme de gestion dexceptions lui permettant de ragir des vne-ments internes lexcution mme du programme (droutement) ou des vnements externes telles queles interruptions. Or, les concepteurs de processeurs dotent leurs architectures de systmes dexception trspropritaires. Bien que lon retrouve de nombreux points communs, il existe des diffrences : nombre de

    niveaux dinterruptions, nombre exact dinterruptions, masquage ou invalidation des exceptions, etc. Face cette htrognit des processeurs, les concepteurs de systme dfinissent un systme standard dexception.

    La figure (2.5) illustre lide dun systme dexception portable qui interagit avec le processus en coursdexcution.

    Loccurrence dune exception provoquera une action par dfaut : en gnral, le processus cible est arrtet dtruit. Un code de terminaison peut permettre un autre processus de tester si le processus sest terminnormalement ou sur exception.

    Nanmoins, le noyau offre une interface de programmation sous la forme dun ensemble de primitives quipermettent de programmer le systme dexception en offrant par exemple la possibilit :

    de masquer la plupart des exceptions;

    Systmes dExploitation Dpartement Informatique et Mathmatiques appliques 26

  • 7/22/2019 Prcis de systme dexploitation

    27/72

    Machine OS

    Actif

    Processusdexceptions

    Systme

    Droutement

    Figure 2.5 Systme dexception portable

    cran

    ?

    ?

    ?

    Fichier

    Figure 2.6 Environnement de communication dun processus

    de connecter une routine de traitement dexception qui sera excute par le processus lui permettantainsi de continuer son excution aprs rcupration de lexception;

    dignorer une exception.

    2.2.2 La communication par flots de donnes

    Pour excuter un programme, un processus va consommer un ensemble de ressources du systme : de

    la mmoire centrale, du temps processeur mais aussi des ressources dun niveau plus abstrait tel que parexemple des fichiers et/ou les dispositifs dentres/sorties plus spcialiss tels que : imprimante, scanner,CD-Rom, etc.

    La connexion du processus ces moyens de communication externe est dynamique. En effet, au cours delexcution du programme, celui-ci peut demander louverture dun flot de donnes avec un fichier ou uneressource priphrique prcise. Le noyau dexcution doit donc grer, contrler et permettre la communicationdu processus avec son environnement via un ensemble de canaux potentiels. Pour quune communicationstablisse rellement, le programme doit contenir des appels au noyau pour ouvrir et connecter ces canaux une ressource effective qui peut tre : un fichier, un (pseudo-)priphrique ou mme un autre processus (viaun tube ou pipe sous le systme Unix par exemple).

    Cette approche assure une indpendance (relative, il ne sera pas possible de lire sur une imprimante !)des programmes par rapport lenvironnement rel de leur excution. En effet, les connexions des canauxpeuvent tre modifies sans intervenir dans le code du programme. Cette possibilit est appele redirection.

    titre dexemple, le systme Unix fournit par dfaut trois canaux connects : stdinqualifie dentre standard est connecte par dfaut, pour un processus interactif, au clavier de

    lusager connect, stdoutqualifie de sortie standard est connecte la fentre de lancement du processus, stderr deuxime sortie standard, ddie par convention eux messages derreurs, connecte comme

    stdout la fentre de lancement.Ces trois connexions peuvent tre modifies : par exemple, lentre standard peut tre redirige sur un

    fichier de donnes et la sortie standard redirige sur un autre fichier destin contenir les rsultats.Une possibilit offerte par ce mcanisme de redirection est de dfinir un schma de communication entre

    processus via la notion de pipe ou tube. Un objet pipe est une ressource permettant de faire communiquer

    Systmes dExploitation Dpartement Informatique et Mathmatiques appliques 27

  • 7/22/2019 Prcis de systme dexploitation

    28/72

    PipeP1 P2

    Figure 2.7 Communication par pipe

    deux processus selon un schma de producteur-consommateur. La figure (2.7) illustre cette connexion parpipe entre un processus producteur et un processus consommateur. Le processus producteur crit via uncanal connect au pipe un flot doctets. En parallle, le processus producteur lit et consomme donc le flotdoctets produit. La consommation des donnes produites se fait dans lordre chronologique de production.Bien que le schma de production-consommation soit asynchrone et parallle, le producteur peut tre bloqusur la primitive dcriture si la capacit de mmorisation du pipe est atteinte. En effet, la ressource pipe estessentiellement constitue par un tampon mmoire attribu au pipe par le noyau lors de la cration de lobjet.Celui-ci nest pas de capacit illimite (quelques Koctets en gnral). De mme, le processus consommateursera bloqu en lecture si rien na t produit lors dune demande de lecture.

    Le mcanisme de pipe permet de raliser trs simplement un traitement parallle de type pipeline. Unesuite de processus excute des traitements complmentaires o chacun exploite un flot de donnes entrant etproduit un flot rsultat sortant consomm par le suivant. Les programmes ayant ce comportement gnriquede consommateur/producteur peuvent tre considrs comme des filtres. Le systme Unix offre ainsi enstandard un ensemble de commandes de filtrage (grep, tr, tail, head, cat, cut, join,. . .) qui permettent deprogrammer trs rapidement des applications complexes sur des flots de donnes.

    2.3 Conclusion

    La notion de processus intervient comme lobjet fondamental gr par un noyau dexcution. Il permetdassurer le suivi et le contrle de lexcution dun programme de faon sre vis--vis des autres programmesou du noyau ainsi que dexploiter le paralllisme possible entre les traitements en cours optimisant ainsilutilisation dune architecture matrielle.

    La dfinition dun systme dexception et dun environnement de communication par flots, indpendantdes aspects matriels, assure par ailleurs une bonne portabilit des applications. Les programmes dveloppspeuvent tre crits pour une machine virtuelle systme plutt que pour la machine matrielle Sun, Intelou Motorola.

    La gestion des processus pose cependant des problmes difficiles de programmation parallle. En effet,

    ceux-ci entrent en concurrence pour accder aux ressources du systme dont ils ont besoin (mmoire, pro-cesseur, fichiers,. . .) et ils doivent se coordonner pour changer des donnes (exemple du schma producteur-consommateur). Les progrs technologiques aussi bien que ceux enregistrs dans le domaine de la program-mation et de lalgorithmique, ont conduit introduire un deuxime niveau de paralllisme : un processusnexcute plus un seul programme squentiellement, mais peut drouler un calcul comportant plusieursactivits parallles. On parle alors de processus lgers (ou threads). Cependant, un processus (lourd par op-position) reste lunit dallocation de ressources pour lexcution dun programme dsormais ventuellementparallle.

    Cet aspect a fait lobjet de longues recherches sur le thme de la synchronisation des processus (lourdsou lgers). Ce sujet sera donc dvelopp dans un module spcifique.

    Systmes dExploitation Dpartement Informatique et Mathmatiques appliques 28

  • 7/22/2019 Prcis de systme dexploitation

    29/72

    Systmes dExploitation Dpartement Informatique et Mathmatiques appliques 29

  • 7/22/2019 Prcis de systme dexploitation

    30/72

    Systmes dExploitation Dpartement Informatique et Mathmatiques appliques 30

  • 7/22/2019 Prcis de systme dexploitation

    31/72

    Chapitre 3

    Les fichiers

    3.1 Introduction

    La notion de fichier est labstraction fondamentale introduite dans les systmes dexploitation pourgrer les donnes des utilisateurs acquises ou produites via les divers priphriques connects : disques,cran/clavier, imprimantes, scanners, modems, etc.

    La gestion de ces donnes comporte deux aspects complmentaires : un aspect communication : les donnes doivent tre changes entre la mmoire centrale o rside le

    programme en cours dexcution et les ressources externes ou priphriques qui permettent dobtenirou de produire des donnes ;

    un aspect mmorisation, conservation : les donnes changes appartiennent diffrents usagers quisouhaitent pouvoir retrouver leurs donnes dans le temps. Cette permanence, rmanence des donnespar rapport la dure des traitements (cest--dire des processus) et leur protection contre des accserrons accidentels ou/et malveillants constituent des lments essentiels dans la gestion des fichiers.

    Comme le montre la figure3.1,le concepteur dun systme de gestion de fichiers est confront au problme

    suivant : comment fournir une interface de programmation simple pour programmer les changes de donnesavec un environnement compos de ressources matrielles fort diverses : disques ou quivalents (cl USB),amovibles ou pas, mais aussi imprimantes, scanners, modems, appareil photo, etc ?

    Concevoir un systme de gestion de fichiers pose les trois problmes fondamentaux suivants : lorganisation, la structuration dun espace logique de fichiers ; lorganisation, la structuration de lespace physique des ressources ; la relation entre ces deux espaces : comment les objets fichiers de lespace logique sont implants par