You are on page 1of 72

Prcis de systme dexploitation

Dpartement Informatique et Mathmatiques Appliques Grard Padiou 5 octobre 2010


Prambule
Le document suivant nest quun rsum trs condens des principes de conception et des mcanismes mis en uvre dans les systmes dexploitation. La connaissance approfondie dun systme dexploitation est un 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 et les 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 ces systmes, en loccurrence le systme Unix : Maurice J. Bach, The Design of the UNIX Operating System, Prentice Hall International, 1986. Un livre plus spciquement ddi au systme dexploitation Windows et qui en prsente clairement les concepts et leur mise en uvre : Gary Nutt, Operating System Projects using Windows NT, Addison Wesley Longman Inc., 1999. Enn, un livre plus spcialement ddi la description de la notion de mmoire virtuelle, concept fondamental des systmes dexploitation et qui reste encore aujourdhui parmi les logiciels les plus complexes jamais dvelopps. La rfrence propose ci-dessous dcrit de faon approfondie la gestion des 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 lectrices qui 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 passages trop nigmatiques, Patrick Amestoy pour ses interrogations opinitres et fort utiles, Mamoun Filali pour son rle patient et infatigable de gourou et Michel Charpentier pour ses critiques toujours constructives.

Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

Table des matires


1 Introduction 1.1 Une drle dhistoire. . . . . . . . . . . . . . . . . . . . . . 1.2 Une dnition un peu plus prcise . . . . . . . . . . . . 1.3 Un systme : un logiciel pas comme les autres ! . . . . . 1.3.1 Un logiciel ractif . . . . . . . . . . . . . . . . . . 1.3.2 Un logiciel ncessaire . . . . . . . . . . . . . . . . 1.3.3 Un logiciel qui partage et cohabite avec dautres 1.3.4 Un logiciel qui rsiste aux fautes des autres . . . 1.3.5 Un programme au service des autres . . . . . . . 1.3.6 Un programme parallle . . . . . . . . . . . . . . 1.3.7 Un programme de taille respectable . . . . . . . 1.3.8 Un programme discret ? . . . . . . . . . . . . . . 1.3.9 Conclusion . . . . . . . . . . . . . . . . . . . . . 1.4 La notion de programme : le point de vue du noyau . . 1.4.1 La notion de format binaire objet . . . . . . . . . 1.4.2 Image binaire excutable . . . . . . . . . . . . . 1.4.3 Autre format de programme excutable . . . . . 1.5 Principes de conception . . . . . . . . . . . . . . . . . . 1.5.1 Conception selon une approche hirarchique . . . 1.5.2 La notion de ressource virtuelle . . . . . . . . . . 1.5.3 Le principe de liaison dynamique . . . . . . . . . 1.6 Un mini-systme . . . . . . . . . . . . . . . . . . . . . . 1.6.1 Larchitecture matrielle . . . . . . . . . . . . . . 1.6.2 La spcication du systme dexploitation . . . . 1.6.3 Linterprteur de commande . . . . . . . . . . . . 1.6.4 Exercices . . . . . . . . . . . . . . . . . . . . . . 2 Les processus 2.1 Les processus . . . . . . . . . . . . . . . . . . . . . . . 2.1.1 Origine et motivation . . . . . . . . . . . . . . 2.1.2 Le concept de processus . . . . . . . . . . . . . 2.1.3 Les oprations sur les processus . . . . . . . . . 2.1.4 Lordonnancement des processus . . . . . . . . 2.2 Lenvironnement dexcution dun processus . . . . . . 2.2.1 La communication par vnements asynchrones 2.2.2 La communication par ots de donnes . . . . 2.3 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . 3 5 5 6 7 8 8 8 9 10 11 11 11 12 12 14 14 15 15 15 16 17 17 17 18 19 19 21 21 21 22 23 24 26 26 27 28

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

3 Les chiers 3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Le concept de chier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.1 Dnition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.2 Mthode daccs squentielle . . . . . . . . . . . . . . . . . . . . 3.2.3 Mthode daccs directe . . . . . . . . . . . . . . . . . . . . . . . 3.2.4 Autres mthodes daccs . . . . . . . . . . . . . . . . . . . . . . . 3.3 Organisation de lespace logique des chiers . . . . . . . . . . . . . . . . 3.3.1 La dsignation des chiers . . . . . . . . . . . . . . . . . . . . . . 3.3.2 La protection des chiers . . . . . . . . . . . . . . . . . . . . . . 3.4 Organisation de lespace physique des ressources . . . . . . . . . . . . . 3.4.1 La dsignation des ressources matrielles ou priphriques . . . . 3.4.2 La connexion des priphriques . . . . . . . . . . . . . . . . . . . 3.4.3 La notion de volume . . . . . . . . . . . . . . . . . . . . . . . . . 3.5 La projection de lespace des chiers sur lespace des ressources . . . . . 3.5.1 Principes gnraux de conception . . . . . . . . . . . . . . . . . . 3.5.2 Le niveau rpertoire : implantation de larborescence de chiers . 3.5.3 Le niveau chier : implantation des chiers . . . . . . . . . . . . 3.5.4 Le niveau bloc : la gestion de lallocation/libration despace aux 3.5.5 La destruction des chiers . . . . . . . . . . . . . . . . . . . . . . 3.5.6 La gestion des changes . . . . . . . . . . . . . . . . . . . . . . . 3.6 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Les mmoires virtuelles 4.1 Mmoires virtuelles . . . . . . . . . . . . . . . . . . . 4.1.1 Le problme du partage mmoire . . . . . . . 4.1.2 Mmoire virtuelle . . . . . . . . . . . . . . . . 4.1.3 Principe de base . . . . . . . . . . . . . . . . 4.1.4 La pagination . . . . . . . . . . . . . . . . . . 4.1.5 La segmentation . . . . . . . . . . . . . . . . 4.1.6 La technique mixte segmentation-pagination 4.1.7 Le couplage des programmes . . . . . . . . . 4.1.8 Les stratgies dallocation de pages . . . . . . 4.1.9 Conclusion . . . . . . . . . . . . . . . . . . . 5 Conclusion Appendices

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . chiers . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

31 31 33 33 33 34 34 35 36 36 39 39 39 40 41 41 41 41 44 45 45 46 47 47 47 48 48 49 49 50 51 51 55 57 59

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

A Exercices 61 A.1 Des questions dordre gnral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 A.2 propos des processus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 A.3 propos des chiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 B Encore mieux, exercices corrigs. . . 65 B.1 Gnralits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 B.2 Processus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 B.3 Les chiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

Chapitre 1

Introduction
1.1 Une drle dhistoire. . .

Lhistoire des systmes dexploitation se confond intimement avec lhistoire de la programmation, de lalgorithmique et du gnie logiciel. En eet, sans systme (dexploitation), pas dutilisation possible dun ordinateur. Pourtant, cet artefact reste bien mystrieux. En fait, un informaticien amateur ou professionnel peut 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 direntes couleurs, puis quelques lignes trues de noms tranges et de nombres dlent. 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 magnique engin avec, selon le vendeur, 500 Giga de disque dur et 2 Giga de mmoire centrale, on souhaite videmment vrier ces petites choses. Aprs quelques clics de souris et un peu de air, 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 mmoire centrale ne fait plus quant elle, que 1,5 Giga. O sont passs les 500 Mega manquants. Le nophyte se prcipitera sur son tlphone pour traiter son vendeur de tous les noms doiseaux. Il entendra alors la phrase miracle mais encore nigmatique : Cest LE systme . Pour lusager conrm, le systme apparat sous une forme dsagrable : aprs des heures deort, un programme denfer commence faire ce quon voulait. Mais, soudain, lors dun nime test, une petite fentre de couleur blanche (blme) apparat avec un message sibyllin : system error at #17AF 486 Puis, plus rien. Les clics se perdent. . . Lcran reste dsesprment g. LE systme est plant 1 . Une seule solution : redmarrer. Pour lusager conrm, 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), a se plante , sans lui, on ne peut plus rien faire, a volue de version en version vers un mieux toujours rv mais rarement vri. 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 mieux les possibilits oertes 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

Ce sont eux qui ont pos, dans leur conception et ralisation, les plus gros problmes de programmation du fait de leur taille et de leur complexit. Ils ont donc beaucoup marqu, inuenc, fait progresser le gnie logiciel : 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 aussi la programmation parallle (synchronisation de processus), la notion de ressource virtuelle permettant de construire 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 un systme dexploitation ont vu leur technologie profondment voluer au cours de ces 40 dernires annes. En eet, la puissance des processeurs a doubl tous les 18 mois depuis les annes 70 par suite de lintgration dun nombre de plus en plus grand de transistors dans les microprocesseurs (la densit des transistors sur 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 extraordinaire. Dune capacit de quelques Mega (1 5 Mega) dans les annes 70, une unit de disque ore aujourdhui pour un prix moindre et sur un support matriel bien plus petit, une capacit de 500 Giga, soit 100 000 fois plus. Si des progrs similaires avaient t faits dans le domaine de lautomobile, une voiture qui consommait 10 litres au 100 kms, ne devrait plus consommer que 0,1 millilitre . . . ou bien elle devrait rouler 10 millions de km/h au lieu de 100 km/h . . . Il nest pas tonnant quavec une telle volution des performances des ordinateurs, ceux-ci aient eu un impact si important dans tous les domaines de la socit au point de parler aujourdhui de civilisation numrique ou dconomie numrique. De faon tonnante, malgr cette volution extrmement rapide, les principes et concepts des systmes dexploitation se sont montrs trs stables depuis les annes 70. Enn, lapparition des rseaux dordinateurs a lanc un nouveau d la communaut systme . Aprs une vingtaine dannes deort 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 dnition un peu plus prcise

Un systme est, nous venons de le voir, un ensemble de modules, de composants logiciels indispensable pour pouvoir utiliser un ordinateur. Comme tout programme, il faut donc le dmarrer, et cest cette phase de dmarrage qui se droule lorsque lon place lordinateur sous tension. En fait, comme tout programme excutable, une partie du systme doit tre installe en mmoire centrale pour pouvoir sexcuter : on appelle ce 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, les diteurs de textes, les interprteurs,. . ., soit crits par lutilisateur lui-mme. La fonction du systme est dassurer lenchanement de lexcution de ces programmes la demande de lusager. Autrement dit, le systme transforme larchitecture matrielle en une machine excuter des programmes. Cependant, cette tche 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

En rsum, un systme est un logiciel qui doit remplir les objectifs suivants : Orir une interface agrable aux usagers pour dvelopper et excuter leurs programmes. Cela passe par 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 programmeur pour raliser des traitements ou grer des donnes rmanentes 3 . Ces oprations sur des abstractions bien dnies sappellent des primitives et dnissent une machine logique caractristique du systme ou de la famille de systmes que lon utilise. Orir une interface indpendante de larchitecture matrielle : les caractristiques des ressources de larchitecture tels que type de processeur, de disque, dinterface (SCSI, Firewire, USB par exemple),. . .doivent tre le plus possible masques. Lidal est de pouvoir dvelopper des programmes dans un environnement systme donn (Unix par exemple) et porter ces programmes par simple recompilation sur direntes congurations et/ou marques de machines ds lors quelles utilisent le mme systme. Cette proprit de portabilit est extrmement importante pour les applications. En fait, le systme implante une machine virtuelle aux proprits plus attractives que la machine relle. Cest ainsi que lon pourra parler de "machine" Windows pour signier que lon utilise une machine dote dun 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 lespace mmoire qui disparat. De plus, le systme doit excuter les programmes demands avec le maximum decacit. Pour cela, lutilisation du paralllisme potentiel oert par une architecture est un objectif trs important. Dans presque toute architecture, les changes mmoire centrale/priphrie (appeles historiquement les entres/sorties) peuvent sexcuter en parallle avec lexcution dinstructions sur le(s) processeur(s) central(aux). Contrler les actions de lusager (ou des usagers) an de garantir, en tout premier lieu, lintgrit des informations rmanentes places sur disque dans des chiers. De faon plus gnrale, le systme doit garantir lintgrit et la condentialit 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 orir un support, un environnement dexcution aux programmes applicatifs. On peut cependant distinguer deux contextes possibles dutilisation de cet environnement : un contexte de dveloppement de programmes : le systme est utilis par des dveloppeurs pour programmer et mettre au point de nouvelles applications dans un contexte mtier particulier : calcul scientique, gestion, multimdia, tlphonie, etc un contexte dexploitation : le systme est utilis comme support dexcution dun ensemble dapplications ddies : bureautique, transactions bancaires, contrle dun racteur, acquisition dimages satellitaires, video la demande, etc. Ces deux modes dutilisation ne sont bien sr pas exclusifs et, pour le systme dexploitation luimme, les fonctions de base assurer sont identiques. Seuls des rglages de conguration 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 programmes applicatifs. Nous allons lister ces principales originalits.
3. On appelle information rmanente, des donnes ou programmes dont la dure de vie est indpendante de lexcution dun programme, par opposition aux informations temporaires lies la dure de vie dune excution.

Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

1.3.1

Un logiciel ractif

Un systme interagit avec ses usagers. Il ne ralise donc pas le calcul dune certaine fonction dote de paramtres donnes comme le font les programmes fonctionnels. Son interaction avec lenvironnement prend la forme dun processus sans n. Pire, on souhaite mme quun systme nait pas la mauvaise ide de sarrter (plantage !) car son bon fonctionnement est indispensable lusager. On peut simplement arrter le 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 ecacement et sans trop de dicults un ordinateur. En particulier, le systme doit tre charg au dmarrage. En fait, cest la partie noyau qui est recopie en mmoire centrale depuis en gnral le disque dit systme . Cette phase de chargement sappelle le bootstrapping. Lors de la mise sous tension, le contrle est donn un programme de 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/modier par exemple les mots de la mmoire centrale, les registres du processeur, mais aussi de charger le chier contenant la version excutable du noyau. Aprs le chargement du noyau, le contrle est donn un ou plusieurs programme(s) script(s) 4 qui termine(ent) linitialisation du systme par le lancement dactivits assurant des fonctions systmes comme par 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 plus spciquement 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. Rciproquement, les programmes usagers ont en commun (ils partagent) le noyau qui est donc vu comme une ressource commune. La rpartition quitable des ressources aux dirents programmes usagers est un rle fondamental du systme. Il doit attribuer aux programmes usagers les ressources ncessaires leur excution : espace mmoire 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 doit prendre soin de rpartir quitablement les ressources. Il ne faut pas quun programme reste, par exemple, indniment ignor par le systme. Un des premiers ds relev par les concepteurs de systme a t de rpartir les ressources dun systme monoprocesseur entre dirents usagers interactifs. Ces systmes dits temps partag avaient pour ambition de faire croire leurs usagers quils taient chacun seul utiliser lordinateur. Lastuce adopte tait de provoquer une commutation de programme actif rgulirement par quantum de temps (100 millisecondes par exemple) de faon ce que tous les programmes sexcutent tour de rle. Lchelle de temps de lusager tant beaucoup plus lente, celui-ci pouvait avoir limpression de disposer de lordinateur pour lui seul (si le systme tait bien fait et les usagers peu nombreux ou peu actifs). Cette mthode reste toujours dactualit dans la plupart des systmes (non temps rel). Ce partage de ressources et cette cohabitation posent aussi un problme de protection des programmes les uns envers les autres. En particulier, le noyau ne doit pas tre mis en danger par les programmes usagers quil supervise.
4. Nous reviendrons sur cette notion de programme et langage de script.

Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

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 noyau perd le contrle au prot 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 un droutement 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 intgrante du noyau et assure par exemple larrt dnitif du programme fautif, lmission dun message derreur et 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 dautres programmes. Lune de ces ressources est lespace allou chaque programme en mmoire centrale. En eet, un programme usager en excution peut par erreur lire, crire ou se brancher au hasard dans la zone mmoire o est charg le noyau. Une lecture nest pas trop grave except sous langle de la condentialit. Une criture est par contre beaucoup plus destructrice : une ou plusieurs instructions ou 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 en gnral de mme pour un branchement, car on ne sait pas trop ce qui sera alors excut. Pour viter de 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 les architectures 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 conner son espace mmoire adressable de telle sorte quil ne puisse ni lire ni crire dans les zones qui ne lui appartiennent pas. Il faut que le systme 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 mmoire provoquera un droutement de telle faon quune nouvelle fois, le noyau puisse reprendre le contrle et, par exemple, arrter le programme fautif. Modes dexcution Ces mcanismes de protection de la mmoire sont dlicats mettre en uvre. En eet, il faut un mcanisme 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 modier son prot. Un programme usager doit donc sexcuter dans un mode qui lui interdit lexcution des instructions permettant de modier les protections de la mmoire. Seul le noyau doit pouvoir le faire. Ceci conduit distinguer pour un processeur deux modes dexcution (au minimum) : un mode usager (esclave), dans lequel certaines instructions du jeu dinstructions du processeur sont interdites. Toute tentative dexcution provoquera une exception (droutement) contrlable par le noyau ; un mode superviseur (matre) dans lequel toutes les instructions du processeur sont excutables. Les instructions 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 le passage 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 la primitive puisse accder toutes les ressources sans restriction. Lors de la terminaison de la primitive, la sortie du noyau et le retour dans le programme appelant doivent saccompagner inversement du passage du mode matre au mode esclave. De faon plus gnrale, la notion de mode est utilise pour limiter les droits daccs dun programme en excution aux ressources du systme. En eet, certaines instructions du processeur peuvent avoir un eet
Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

important sur le fonctionnement global du systme. titre dexemple, si un programme peut excuter une instruction qui le rend le plus prioritaire et non interruptible, ce programme risque de perturber fortement lexcution des autres et en particulier monopoliser les ressources du systme son prot pour une dure indnie. De telles instructions ne seront donc autorises quen mode superviseur. Attention : un programme usager ne doit videmment pas pouvoir programmer le changement de mode du processeur. On reviendrait la case dpart. . .. Interruptions Un autre genre de faute peut tre tout simplement le phnomne de boucle innie. Un programme peut entrer dans une boucle permanente. Dans ce cas, seule lintervention de lusager ou du systme au bout dun dlai plus ou moins long, peut permettre dinterrompre lexcution du programme fautif. Il faut pour cela disposer dun mcanisme matriel permettant dinterrompre lexcution de la boucle par un signal externe au 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 uns par rapport aux autres imposent donc de disposer de mcanismes matriels spciques : un systme de gestion des exceptions (interruptions et droutements), un mcanisme de protection mmoire et au moins deux modes dexcution du processeur. Le tableau ci-dessous fait le lien entre fautes et mcanismes ncessaires leur correction. Faute du programme Accs hors limite Boucle innie Instruction inexcutable Intgrit des ressources gres par le systme Mcanisme ncessaire Protection mmoire + modes matre/esclave Interruption Droutement Instructions privilgies

1.3.5

Un programme au service des autres

Un systme est un programme au service des autres. En eet, lorsquun programme usager sexcute, il appelle en gnral dirents services oerts sous la forme de primitives par le noyau. Par exemple, lorsque lon veut lire ou crire un chier, lorsque lon veut obtenir de lespace mmoire, si lon veut connatre la date, le rpertoire courant, si lon veut attendre la n 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 spcique. En eet, si le programme usager peut appeler une primitive du noyau par une instruction de branchement classique, cela signie que tout programme a le droit dappeler le noyau en un point quelconque (et pas seulement un point dentre dune primitive). Ceci est videmment inacceptable comme nous lavons vu. De plus, la commutation de mode nest pas eectue. Par consquent, il faut pouvoir, certes autoriser les appels des primitives du noyau, mais il faut aussi protger le noyau des appels dans le vide. Pour restreindre les appels des points dentres prdnis, on a donc recours un mcanisme de type droutement programm. Sur tout processeur, il existe une instruction permettant de provoquer un droutement volontaire (explicitement programm). Le format le plus classique dune telle instruction est le suivant : T RAP n o n est un numro qui sert dindex dans une table de branchements. Lorsquune telle instruction est excute, il y a branchement ladresse trouve dans la table lindex spci, celle-ci fournissant le point dentre de la primitive. Il sut donc que le noyau contienne une telle table correctement initialise. Bien entendu, cette table doit tre protge de telle faon quelle ne puisse tre modie par un programme utilisateur.
5. Les interruptions jouent par ailleurs un rle essentiel dans la gestion des entres/sorties.

Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

10

Enn, nous avons vu, que grce au noyau, un systme construit une machine tendue (virtuelle) dote de primitives qui implantent des abstractions simpliant la programmation. Par exemple, le concept de chier permet 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, positionnement de tte,. . .). Le systme construit une sorte de machine virtuelle chiers ayant pour composant et support physique, lunit de disque. Cependant, il est important de garantir lintgrit de la structure de chiers mmorise sur le support physique. Or, un programmeur mal intentionn (le hacker de base) peut trs bien arriver connatre susamment 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 chiers. Il court-circuite le noyau. Dans ce cas, lintgrit de lespace de chiers ne peut plus tre garantie par le systme. Il est donc extrmement important quun programme usager ne puisse pas excuter une telle opration directe daccs. Pour cela, deux approches sont possibles : Si les interfaces des contrleurs sont projets en mmoire (les registres de contrle sont visibles comme des mots des adresses prcises et xes de la mmoire centrale) : dans ce cas, il sut de protger cet espace et dempcher ainsi laccs au contrleur. Si les interfaces des contrleurs sont programmables laide dinstructions spciques du processeur, il sut que ces instructions soient privilgies. Un programme qui sexcute en mode esclave ne pourra pas excuter de telles instructions.

1.3.6

Un programme parallle

Les systmes dexploitation sont indniablement lorigine de la programmation parallle. Cest leur conception et ralisation qui a conduit dcouvrir les dicults du partage de ressources entre des activits concurrentes. En eet, les architectures de calculateur ont oert la possibilit de traitements parallles ds les annes 1960. Les changes mmoire centrale/priphrique (appels entres/sorties) ont t cons des processeurs ddis (canaux) permettant dexcuter en parallle un programme sur le(s) processeur(s) central(aux). Ce principe est dautant plus ecace que lchange est long. Il y a en eet une dirence de temps daccs et de dbit extrmement importante entre la mmoire centrale, les mmoires de masse telles que les disques et les 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 domaine informatique.

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). Il comporte direntes classes de modules : Les primitives qui sont les oprations (sous-programmes) appeles par les programmes usagers (ou services systme) ; Les pilotes dentres/sorties ( device drivers ) qui implantent les interfaces de programmation des dirents contrleurs dunits priphriques ; Les routines de traitement des exceptions : droutements ou interruptions. Les programmes de services qui assurent des fonctions spciques : 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 lordinateur quil 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

Figure 1.1 Principe de structuration en couches consomme lui-mme invitablement des ressources. Il doit cependant rester le plus discret possible par un temps de supervision ( overhead ) minimal. Cest un objectif dicile 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 composants tant fondamentalement des programmes , du code excutable. Cependant, nous venons de voir que la fonction que doit assurer ce noyau, en loccurrence, lexcution des autres programmes, ncessite des mcanismes particuliers au niveau de larchitecture matrielle et pose des dicults particulires de ralisation. 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 lart ou la science de la programmation.

1.4

La notion de programme : le point de vue du noyau

Nous 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 donc indispensable de prciser cette notion de programme. Plus prcisment, quest-ce quun programme pour le noyau ? Cette question est primordiale et elle constitue mme une marque spcique dun systme. En eet, 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 dapplication. 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 chier une reprsentation nouvelle du programme : en loccurrence, la version dite binaire objet r-ditable. Un tel chier contient une description structure du programme excuter. Ce format de description est trs spcique dun systme dexploitation (ou dune famille de). La gure 1.2 prsente cette structure distinguant len-tte et une suite de sections ainsi que des tables diverses qui seront utilises par lditeur de liens. Le code engendr dans une section spcique (dite text ) nest cependant pas encore tout fait excutable. Des oprandes, en particulier, dans les instructions de branchement, restent dnir.
Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

12

Une dcompilation de la seule section de code du programme binaire objet de lexemple, donne le code suivant en assembleur pour un processeur Intel : Adresse _main : 0000000000000000 0000000000000001 0000000000000004 0000000000000008 000000000000000b 000000000000000f 0000000000000016 000000000000001b 0000000000000020 0000000000000025 0000000000000026 code pushq movq subq movl movq leaq movl callq movl leave ret oprandes %rbp %rsp,%rbp $0x10,%rsp %edi,0xfc(%rbp) %rsi,0xf0(%rbp) 0x00000000(%rip),%rdi $0x00000000,%eax 0x00000020 $0x00000000,%eax oprandes avec symboles

LC0(%rip),%rdi $_main, %eax _printf $_main, %eax

Le code produit par le compilateur est dans un format binaire objet r-ditable, cest--dire quil peut tre trait par un diteur de liens pour obtenir un programme binaire objet excutable. Ainsi, aprs la phase ddition des liens, on obtient le code nal suivant : Adresse start : 0000000100000ec4 0000000100000ec6 0000000100000ec9 0000000100000ecd 0000000100000ed1 0000000100000ed5 0000000100000ed7 0000000100000eda 0000000100000edd 0000000100000ee0 0000000100000ee3 0000000100000ee5 0000000100000ee9 0000000100000eed 0000000100000eef 0000000100000ef3 0000000100000ef8 0000000100000efa 0000000100000e _main : 0000000100000f00 0000000100000f01 0000000100000f04 0000000100000f08 0000000100000f0b 0000000100000f0f 0000000100000f16 0000000100000f1b 0000000100000f20 0000000100000f25 0000000100000f26 code pushq movq andq movq leaq movl addl shll addq movq jmp addq cmpq jne addq callq movl callq hlt pushq movq subq movl movq leaq movl callq movl leave ret oprandes $0x00 %rsp,%rbp $0xf0,%rsp 0x08(%rbp),%rdi 0x10(%rbp),%rsi %edi,%edx $0x01,%edx $0x03,%edx %rsi,%rdx %rdx,%rcx 0x100000ee9 $0x08,%rcx $0x00,(%rcx) 0x200000ee5 $0x08,%rcx 0x100000f00 %eax,%edi 0x100000f28 %rbp %rsp,%rbp $0x10,%rsp %edi,0xfc(%rbp) %rsi,0xf0(%rbp) 0x0000001e(%rip),%rdi $0x00000000,%eax 0x100000f2e $0x00000000,%eax oprandes avec symboles

_main symbol stub for : _exit

LC0(%rip),%rdi $_main, %eax symbol stub for : _printf $_main, %eax

Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

13

Figure 1.2 Programme binaire excutable et image On peut constater que lditeur de liens a ajout un code commenant ltiquette start et se droulant jusqu ltiquette _main qui dbute la gnration du code du programme correspondant. On remarquera aussi linstruction de branchement de type sous-programme (callq) pour appeler le programme principal. Nanmoins, le code du sous-programme printf nest toujours pas prsent. En fait, il nest pas inclus dans le binaire 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 partir de ce binaire objet excutable, mais cette implantation des sous-programmes de la bibliothque C ne se fera quen mmoire virtuelle au moment de limplantation de limage binaire excutable 6 .

1.4.1

La notion de format binaire objet

La notion de format binaire objet excutable ou r-ditable est donc fondamentale dans un systme dexploitation. Cest la reprsentation ocielle de tout programme qui peut tre dvelopp et mis en uvre 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 : Spcique dune famille de systmes : Unix, Windows, . . . ; Portable : format identique le processeur ; Existe sous deux formes de format commun : excutable et r-ditable (statiquement ou dynamiquement). titre dexemples, nous citons quelques formats selon les systmes : Les vieux formats Unix : Formats a.out et COFF (Common Object File Format) La famille Unix (Linux, Solaris, Irix, System V, BSD) : Format ELF (Executable and Linking Format) La famille Windows : Format PE (Portable Executable Format) et COFF . 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 centrale par le chargeur du noyau pour que le programme puisse enn tre excut. Cette image mmoire est donc construite partir du binaire objet excutable lors du chargement en mmoire. La gure 1.2 montre les deux reprsentations 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

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 dynamique de mmoire durant lexcution du programme : allocation despace selon un schma de pile lors des appels de procdure, allocation despace selon un schma de tas pour les structures de donnes dynamiques accdes par pointeur.

1.4.3

Autre format de programme excutable

Pour le systme dexploitation, il existe un autre format de programme excutable. En eet, nous avons vu que 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 soit comme immdiatement interprtable par lui-mme (cas des commandes dites built in ) soit comme un nom de programme excutable. Or, bien entendu, pour linterprteur, deux possibilits sont oertes : soit il sagit dun programme binaire objet excutable : cest le format que nous venons danalyser et il sura 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 de linterprteur. Ce programme est tout autant excutable, mais cette fois-ci, par linterprteur (et non pas par le processeur natif). Consquence : ces deux formes de programmes sont donc excutables en ce sens que un chier qui contient lun 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 sappuie sur des principes de conception qui ont t ensuite trs utiles en gnie logiciel de faon gnrale. Nous insistons 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, virtuelles. Chacune implante un jeu dinstructions, de commandes qui sera implant laide de la machine de niveau infrieur. On reprsente graphiquement cette approche mthodologique sous la forme dune cible comme la gure (1.1). Au niveau le plus bas, on trouve larchitecture matrielle qui apporte les ressources utilisables et un jeu dinstructions correspondant une famille de processeurs (RISC par exemple). ce niveau les instructions sont trs lmentaires et leurs oprandes aussi (octets, entiers, rels ottants. . .). Au niveau suivant, le cur dun systme est constitu par le programme noyau. Celui-ci permet dtendre le jeu dinstructions prcdent par un ensemble de primitives qui implante les abstractions cls qui permettront au systme de grer les traitements et les donnes des usagers. Pour les traitements, la notion de processus permet de contrler lexcution dun programme squentiel. Pour les donnes, la notion de chier permet de sabstraire des particularits physiques des priphriques et de contrler laccs aux informations de chaque usager. Les primitives dun noyau sont des sous-programmes qui peuvent donc tre appels durant lexcution dun programme. Linterface dappel est cependant particulire via la notion de droutement programm (T RAP ). 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 soumettre des demandes dexcution de programmes. Un interprteur de commandes est en fait un programme systme qui, une fois actif, devient un processus interprteur. Dans le systme Unix, la famille des langages de 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

la forme dun processus. Seules quelques commandes trs lmentaires, dtes built-in , sont directement interprtes. ce niveau, on a donc bien obtenu une machine capable dassurer lexcution de programmes quels 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 o les objets oprandes sont des entits gros grain, essentiellement des chiers de donnes ou des chiers excutables (contenant des programmes excutables ou interprtables). ceci peut sajouter un sous-systme de fentrage tel que X11. Dans ce cas, un processus serveur assure le contrle de la ressource cran et accepte de grer les interactions avec lusager via la souris et un curseur dcran. Chaque frontire entre niveaux adjacents de la hirarchie prcdente comporte une rupture dchelle. Le tableau ci-dessous rsume la structuration trois niveaux des systmes actuels. Niveau Matriel Noyau Interprteur Ressource Processeur Primitives Commandes Type dinterface Instruction Sous-programme Programmes Dure dune opration sec > millisec quelconque

1.5.2

La notion de ressource virtuelle

La notion de ressource virtuelle est apparue assez tt dans la conception des systmes. Cette notion sinscrit naturellement dans leort gnral des concepteurs de systme pour orir aux programmes des usagers un environnement de programmation masquant les caractristiques matrielles et parfois mme leur limitations ou imperfections. Une premire application de lide de ressource virtuelle a t la notion dimprimante virtuelle . Au lieu que chaque programme dite directement ses rsultats sur une imprimante souvent unique et lente, les rsultats sont redirigs dans un chier sans modication du programme. Cette redirection est transparente. Un programme spcique assure ldition eective du contenu de chaque chier dimpression squentiellement. Cette stratgie est appele spooling 7 . La dmarche est donc dattribuer une imprimante virtuelle chaque programme. Celle-ci est prive au programme (pas de problme de concurrence) et plus rapide que la 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 mmoire disponible entre plusieurs programmes (multiprogrammation) pose des problmes dallocation de la ressource mmoire. Le concept de mmoire virtuelle permet doptimiser lallocation de la mmoire relle et, dans certains 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 de la 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 puissance norme des serveurs actuels. Cette notion permet de transformer une machine unique relle en un ensemble de machines virtuelles qui, chacune, peuvent excuter un systme dexploitation ventuellement dirent. Cette approche connat un fort dveloppement permettant par exemple de faire tourner deux systmes dexploitation, Linux et Windows, simultanment sur une mme machine ou de faire cohabiter une machine 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

1.5.3

Le principe de liaison dynamique

Lorsquun programme sexcute, il demande dynamiquement des services au noyau. Par exemple, un programme veut accder un chier pour le lire. Par lappel de la primitive open, le noyau va crer la connexion dynamique entre le chier et le programme usager et renvoyer lappelant un identicateur de connexion (qui est souvent un simple index) qui sera ensuite utilis lors des oprations de lecture. Lopration close rompra cette liaison. Cest donc une liaison dynamique qui est cre entre le programme en excution et la ressource chier 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 (chiers, pseudo-priphriques, autres processus) ncessitent pralablement une opration de liaison dynamique qui saccompagne en gnral dun contrle sur les droits daccs de lappelant. Loptimisation de lutilisation des ressources conduit le noyau adopter le plus possible une stratgie consistant retarder la liaison eective le plus tard possible (Delay Binding Time ). titre dexemple, dans un systme de gestion de mmoire virtuelle, la liaison dune zone de mmoire relle (appele page) un programme 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, on considre un exemple de mini-systme. Nous prsentons dabord larchitecture matrielle, puis la machine logique, abstraite qui est implante pas le systme dexploitation et qui va rendre utilisable, exploitable larchitecture matrielle. Pour simplier, on considre un systme trs simple qui ore une interface dusage minimaliste, 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 unique auquel sont connects les dirents modules : processeur, mmoire et interfaces diverses : Ethernet, FireWire, USB, sries (RS232), parallle,. . . La gure (1.3) prsente le schma dune telle architecture ne comportant comme ressource priphrique quun cran-clavier et un disque xe.

Figure 1.3 Architecture minimale standard


Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

17

Figure 1.4 Machine abstraite usager

1.6.2

La spcication du systme dexploitation

Pour utiliser larchitecture prcdente, il faut dnir 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. La fonction de base qui doit tre assure via ce protocole est de permettre lusager de soumettre des demandes dexcution de programmes. Autrement dit, le systme aura pour tche dassurer la bonne excution des programmes demands par lusager squentiellement. Limplantation de cette interface de dialogue peut prendre la forme minimaliste suivante : aprs chargement et initialisation du systme, lusager voit apparatre un prompt (par exemple le symbole >) lui indiquant la disponibilit du systme. Il peut alors taper une commande sur une ligne et terminer par un return. Toute commande est en faite une suite de chanes de caractres spars par des blancs. La premire chane doit tre un identicateur qui dsigne un nom de chier contenant un programme excutable 8 . Les chanes suivantes constituent les arguments fournis au lancement de lexcution du programme par le systme . En eet, 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 chiers contenant des programmes excutables constituant les commandes de base oertes aux usagers. Ceci suppose videmment que le volume disque est bien vu comme un espace de chiers et que linterprteur va chercher les chiers binaires objets excutables implantant les commandes dans un rpertoire prdni. Nous donnons quelques exemples de commandes possibles : lister date expliquer <nom de commande> calculer <expression arithmtique> mem usagers exit ... liste les commandes de base qui existent ; ache la date prsente ; explique la fonction de la commande rfrence ; calcule lexpression arithmtique fournie en paramtre et ache le rsultat ; ache lespace mmoire centrale disponible ; liste les usagers connus du systme ; arrt du systme ;

La gure (1.4) illustre cette vision, un niveau logique, de la machine abstraite usager. On ne considre ici que linterface usager via un cran/clavier.
8. Dans le cas dun vrai systme, linterprteur de commande excute lui-mme un ensemble prdni de commandes qualies de built-in .

Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

18

1.6.3

Linterprteur de commande

La gestion du dialogue usager-systme sappuie classiquement sur un programme appel interprteur de commandes. 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 rane dans la classe Commande par la description de la mthode Excuter : 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 Acher, Lire, Charger qui appellent des primitives du noyau. Ces primitives constituent un ensemble doprations sur des abstractions telles que chiers, processus, mmoire, canaux,. . . qui dnissent une machine systme , la fois plus simple et puissante, pour dvelopper des programmes. Un noyau implante ainsi une machine tendue systme orant les mme services tous les programmes usagers.

1.6.4

Exercices

Linterprteur prcdent doit assurer un service permanent et able. Pour ce faire, plusieurs obstacles doivent tre surmonts. En eet, des fautes de programmation dans les programmes commandes et plus gnralement, dans un vrai systme, les programmes des usagers, peuvent provoquer des erreurs conduisant larrt du systme. 1. numrer direntes anomalies qui pourraient survenir durant lexcution du programme charg et lanc 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 didentication. Modier linterprteur pour assurer ce contrle daccs.

Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

19

Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

20

Chapitre 2

Les processus
2.1
2.1.1

Les processus
Origine et motivation

Une tche fondamentale dun systme dexploitation est dassurer lexcution de programmes divers et varis. . . Ces programmes peuvent tre de direntes natures : programme dvelopp par un programmeur pour une application ; programme assurant une fonction dans la production mme dautres programmes : compilateurs, interprteurs, 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 grer lexcution de plusieurs programmes en parallle. En eet, une architecture classique de machine, mme mono-processeur, autorise le paralllisme des changes dinformation entre les priphriques (disques, bandes imprimantes, scanners, CD,. . .) et la mmoire centrale dune part, et dautre part, lexcution dun programme par le(s) processeur(s) avec cependant un problme de contention et de partage daccs la mmoire centrale qui apparat alors comme une ressource commune partage. La gure (2.1) illustre ce paralllisme des entres/sorties avec lexcution des programmes.
Processeur Paralllisme de transfert des informations

Concole

Scanner

Disque

Imprimante

Programme Mmoire

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. Tant que la ligne de commande na pas t frappe, le programme interprteur na rien dautre faire que de tester de faon continue si le caractre de n de ligne a bien t lu et plac dans un octet de la mmoire centrale. Ce test incessant est une boucle qui va tre excute durant plusieurs secondes. Autrement dit, le processeur excute plusieurs millions de fois la mme instruction de test. Le processeur pourrait donc tre 21

plus ecacement utilis si lon pouvait assurer lexcution dun autre programme pendant cette priode o linterprteur 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 puisse continuer son excution ultrieurement. Ceci implique de savoir sauvegarder/restaurer un contexte dexcution de programme. Cest pourquoi, tout processeur possde un contexte minimal dexcution rassemblant les informations caractristiques et susantes pour pouvoir, si elles sont recharges dans les registres du processeur, reprendre lexcution en son point de sauvegarde. Cet ensemble dinformations se prsente sous la forme dun mot dtat programme (PSW : Program Status Word), car la sauvegarde 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 processeur lorsquun change de donnes est termin an que le noyau systme puisse enregistrer que le programme ayant lanc lchange peut dsormais continuer. Cette gestion des vnements asynchrones de n de lecture ou dcriture met en jeu intensivement le mcanisme dinterruption. On peut remarquer que le traitement 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 n de routine, le contrle doit tre rendu au programme interrompu et 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) frquemment 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 superviseur de ces commutations (via lexcution de primitives ou de routines dexception). Cest pourquoi, les concepteurs de systme ont eu lide dabstraire, sous la forme dun concept et aussi dun objet, la gestion de 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 traitement ralis par un programme. Il ne doit donc pas tre confondu avec la notion de programme qui capte laspect statique et descriptif dun traitement. On peut par exemple comparer le programme un DVD et le processeur au lecteur de DVD. Alors, le processus sera . . . le visionnage du DVD. Sil y a une interruption de la sance de cinma, on sait quil faut reprendre la projection au point o elle avait t interrompue. Cest la mme chose pour lexcution dun programme. Un processus est donc une entit dynamique qui a une dure de vie limite (la dure de lexcution du programme) et dont on peut caractriser le comportement un certain niveau dabstraction par un diagramme de transitions dtat. La gure (2.2) illustre les rgles comportementales dun processus en distinguant 3 tats : 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 devenir actif. Autrement dit, il sura de lui allouer le (un) processeur et de charger le contexte dexcution sauvegard 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 devra de plus devenir vraie. Par exemple, le processus interprteur attendant quune ligne de commande soit frappe est bloqu tant que cette ligne nest pas disponible. La sortie de ltat bloqu pourra conduire le processus soit dans ltat actif, soit dans ltat prt. Ce choix est x par la stratgie dordonnancement des processus vis--vis de la ressource processeur. On dsigne souvent lensemble compos des processus prts et actifs comme lensemble des processus excutables.
Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

22

Activer Exit Crer Actif Suspendre Dbloquer Bloqu Dtruire


Figure 2.2 Diagramme de transitions dtat dun processus

Prt

Dtruire

Bloquer

2.1.3

Les oprations sur les processus

Le diagramme de transitions fait apparatre les primitives applicables aux objets processus. Celles-ci dnissent 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 objet processus est un objet comme un autre. La cration dun processus apparat donc comme la cration dun objet de la classe processus avec ses attributs et mthodes (oprations). Parmi les attributs dun processus, on trouve par exemple, le nom du chier do est issu le programme associ au processus, un nom interne de processus (numro par exemple), ltat, le contexte initial qui sera charg dans les registres du processeur pour 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 chier accessible (rpertoire de travail), etc. Ainsi, un objet processus peut ncessiter un descripteur de plusieurs Koctets. Dans le systme Unix, on distingue mme une zone noyau du descripteur de processus (structure sproc ) et une zone usager (structure uproc ). La premire est alloue dans lespace mmoire 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 par le 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 tape concerne laspect traitement (programme) avec la commutation du programme excut par le processus sosie. De plus, le processus ls cr hrite naturellement de tout lenvironnement dexcution du processus pre (crateur). Ceci vite davoir prciser explicitement un grand nombre de paramtres de cration. Enn, la gestion globale des processus par le noyau comporte souvent la structuration de lensemble des processus existants selon une arborescence fonde sur la relation de cration. Cette structure permettra en particulier un processus pre dattendre la terminaison dun ou plusieurs de ses ls assurant ainsi une synchronisation 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 ainsi alloue au processus pour excuter rellement un programme. La priode active du processus se termine soit par un blocage, soit par une premption du processeur au bout dun dlai x maximal (voir opration
Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

23

Suspendre). Cette suspension force dun processus permet de rpartir plus quitablement la ressource processeur entre les dirents processus prts candidats. Suspendre Si 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 programme excut comporte de longues tapes de calcul sur des donnes en mmoire centrale, il faudra attendre une lecture ou criture sur disque pour quune commutation se produise. Pour mieux rpartir le temps processeur entre les processus, un processeur est en gnral allou au processus pour une dure maximale xe appele quantum. Si le processus atteint la n de quantum, alors une interruption est provoque et le processus actif sur le processeur interrompu est suspendu. Librant ainsi le processeur, un autre processus prt peut tre activ. Bloquer Cette opration comporte une premire tape identique lopration Suspendre. Mais, le processus ne peut plus tre candidat la ressource processeur. Il devra tre replac dans ltat prt, ventuellement directement dans ltat actif, par une opration explicite Dbloquer. Les priodes pendant lesquelles un processus est bloqu correspondent aux priodes pendant lesquelles la poursuite de lactivit du processus est conditionne par la disponibilit dune ressource ou loccurrence dun vnement (n dentre/sortie par exemple). Cette opration a un eet de bord important : elle libre la ressource processeur pour un autre processus prt. 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 sur occurrence dun vnement asynchrone provoqu par un autre processus, une n dentre/sortie ou une n de quantum. Exit La terminaison dun programme se traduit par la n du processus mais pas larrt du processeur. Par consquent, la n du programme doit se traduire par un appel explicite au noyau dexcution via une primitive Exit. Lobjet processus correspondant pourra alors tre dtruit sauf contraintes particulires. Une commutation de processus sensuivra automatiquement. Dtruire Si un programme ne se termine pas normalement ou si une raison externe ncessite de dtruire un processus (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 gure (2.3) illustre ces niveaux rsums dans le tableau suivant : Processus Excutables Synchroniss Rguls Ordonnancement court-terme moyen-terme long-terme Gestion des transitions Prt Actif Excutable Bloqu Dormant Synchronis 24

Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

Rguls

Synchroniss Bloqu

Ordonnancement longterme

Ordonnancement moyenterme

Dormant Excutables Prt


Ordonnancement courtterme

Actif

Figure 2.3 Niveaux dordonnancement

Le niveau des processus excutables gre lordonnancement court terme qui consiste contrler lallocation de la ressource processeur. Il sagit de rpartir selon une stratgie dordonnancement adquate le temps processeur disponible entre les dirents processus excutables cest--dire dans ltat prt ou actif. En gnral, le noyau gre donc une le dattente des processus prts (le simple chronologique fo 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 le dtermine ce qui se passe dans le systme pour quelques centaines de millisecondes. On parle donc dordonnancement court-terme. Le niveau des processus synchroniss contrle le bloquage/dbloquage des processus intervenant lors de lallocation/libration des autres ressources que processeur ncessaires lexcution du processus. chaque demande de ressource physique ou logique peut tre associe une le dattente de processus bloqus et la stratgie dordonnancement consistera donc ici choisir quel(s) processus dbloquer lorsque la ressource attendue sera disponible. Ce choix a donc un impact sur ce qui sexcute dans le systme dans les quelques secondes qui suivent. On parle dordonnancement moyen-terme. La gure 2.4 prsente un diagramme des vnements qui peuvent senchaner sur un processeur unique durant une priode dactivit du systme : on suppose quil existe trois programmes dusagers en cours dexcution, soit donc trois processus usagers. Ces programmes font appel aux primitives du noyau, ici pour lire des chiers (primitive read) par exemple. Les interruptions de n de quantum provoquent des commutations de processus. Une n dentre-sortie signale ici la n de la lecture demande par le processus P1 ce qui permet au noyau de redonner le contrle du processeur au processus P1 . Enn, le niveau des processus rguls gre lordonnancement long terme qui consiste contrler la cration/destruction des processus. En eet, la dcision de crer un nouveau processus peut tre soumise condition : par exemple, le nombre de processus existants est infrieur une limite xe. La cration dun processus peut avoir un impact sur ce qui se passe dans le systme pendant une dure longue : si le processus doit excuter un calcul de plusieurs heures . . . En rsum, lordonnancement des processus est une tche complexe comportant direntes stratgies dordonnancement selon le niveau o lon se place ou selon les ressources mises en jeu. Une dicult de base rside dans la ncessit de partager quitablement les ressources entre les processus demandeurs. Un processus ne doit pas rester bloquer indniment en attente dune ressource. De nombreuses recherches ont t ralises sur ce sujet pour optimiser le ot global de processus excuts par le systme tout en satisfaisant les contraintes temporelles dexcution (temps de rponse) propres chaque processus.
Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

25

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

2.2

Lenvironnement dexcution dun processus

Le noyau dexcution assure et contrle le droulement dun processus de faon garantir sa bonne excution sans mettre en danger ni lexcution des autres processus, ni le fonctionnement correct du noyau lui-mme. Pour ce faire, il doit fournir une sorte de machine virtuelle la plus portable possible. En eet, il est intressant de pouvoir crire des programmes qui sappuient sur les services oerts par le systme dexploitation plutt que sur les caractristiques particulires de tel ou tel processeur ou priphrique. Entre autre 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 interruptions dentre/sortie ; dchanger des ots dinformations via les ressources priphriques, chiers 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 vnements internes lexcution mme du programme (droutement) ou des vnements externes telles que les interruptions. Or, les concepteurs de processeurs dotent leurs architectures de systmes dexception trs propritaires. Bien que lon retrouve de nombreux points communs, il existe des dirences : nombre de niveaux dinterruptions, nombre exact dinterruptions, masquage ou invalidation des exceptions, etc. Face cette htrognit des processeurs, les concepteurs de systme dnissent un systme standard dexception. La gure (2.5) illustre lide dun systme dexception portable qui interagit avec le processus en cours dexcution. Loccurrence dune exception provoquera une action par dfaut : en gnral, le processus cible est arrt et dtruit. Un code de terminaison peut permettre un autre processus de tester si le processus sest termin normalement ou sur exception. Nanmoins, le noyau ore une interface de programmation sous la forme dun ensemble de primitives qui permettent de programmer le systme dexception en orant par exemple la possibilit : de masquer la plupart des exceptions ;
Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

26

Machine OS

Systme dexceptions

Processus Actif

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 permettant ainsi de continuer son excution aprs rcupration de lexception ; dignorer une exception.

2.2.2

La communication par ots 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 par exemple des chiers 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 eet, au cours de lexcution du programme, celui-ci peut demander louverture dun ot de donnes avec un chier ou une ressource priphrique prcise. Le noyau dexcution doit donc grer, contrler et permettre la communication du processus avec son environnement via un ensemble de canaux potentiels. Pour quune communication stablisse rellement, le programme doit contenir des appels au noyau pour ouvrir et connecter ces canaux une ressource eective qui peut tre : un chier, un (pseudo-)priphrique ou mme un autre processus (via un 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 eet, les connexions des canaux peuvent tre modies sans intervenir dans le code du programme. Cette possibilit est appele redirection. titre dexemple, le systme Unix fournit par dfaut trois canaux connects : stdin qualie dentre standard est connecte par dfaut, pour un processus interactif, au clavier de lusager connect, stdout qualie 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 modies : par exemple, lentre standard peut tre redirige sur un chier de donnes et la sortie standard redirige sur un autre chier destin contenir les rsultats. Une possibilit oerte par ce mcanisme de redirection est de dnir 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

P1

Pipe

P2

Figure 2.7 Communication par pipe

deux processus selon un schma de producteur-consommateur. La gure (2.7) illustre cette connexion par pipe entre un processus producteur et un processus consommateur. Le processus producteur crit via un canal connect au pipe un ot doctets. En parallle, le processus producteur lit et consomme donc le ot doctets 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 bloqu sur la primitive dcriture si la capacit de mmorisation du pipe est atteinte. En eet, la ressource pipe est essentiellement 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 consommateur sera 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. Une suite de processus excute des traitements complmentaires o chacun exploite un ot de donnes entrant et produit un ot rsultat sortant consomm par le suivant. Les programmes ayant ce comportement gnrique de consommateur/producteur peuvent tre considrs comme des ltres. Le systme Unix ore ainsi en standard un ensemble de commandes de ltrage (grep, tr, tail, head, cat, cut, join,. . .) qui permettent de programmer trs rapidement des applications complexes sur des ots de donnes.

2.3

Conclusion

La notion de processus intervient comme lobjet fondamental gr par un noyau dexcution. Il permet dassurer le suivi et le contrle de lexcution dun programme de faon sre vis--vis des autres programmes ou du noyau ainsi que dexploiter le paralllisme possible entre les traitements en cours optimisant ainsi lutilisation dune architecture matrielle. La dnition dun systme dexception et dun environnement de communication par ots, indpendant des aspects matriels, assure par ailleurs une bonne portabilit des applications. Les programmes dvelopps peuvent tre crits pour une machine virtuelle systme plutt que pour la machine matrielle Sun, Intel ou Motorola. La gestion des processus pose cependant des problmes diciles de programmation parallle. En eet, ceux-ci entrent en concurrence pour accder aux ressources du systme dont ils ont besoin (mmoire, processeur, chiers,. . .) et ils doivent se coordonner pour changer des donnes (exemple du schma producteurconsommateur). Les progrs technologiques aussi bien que ceux enregistrs dans le domaine de la programmation et de lalgorithmique, ont conduit introduire un deuxime niveau de paralllisme : un processus nexcute plus un seul programme squentiellement, mais peut drouler un calcul comportant plusieurs activits parallles. On parle alors de processus lgers (ou threads). Cependant, un processus (lourd par opposition) reste lunit dallocation de ressources pour lexcution dun programme dsormais ventuellement parallle. Cet aspect a fait lobjet de longues recherches sur le thme de la synchronisation des processus (lourds ou lgers). Ce sujet sera donc dvelopp dans un module spcique.
Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

28

Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

29

Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

30

Chapitre 3

Les chiers
3.1 Introduction

La notion de chier est labstraction fondamentale introduite dans les systmes dexploitation pour grer 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 dobtenir ou de produire des donnes ; un aspect mmorisation, conservation : les donnes changes appartiennent dirents usagers qui souhaitent pouvoir retrouver leurs donnes dans le temps. Cette permanence, rmanence des donnes par rapport la dure des traitements (cest--dire des processus) et leur protection contre des accs errons accidentels ou/et malveillants constituent des lments essentiels dans la gestion des chiers. Comme le montre la gure 3.1, le concepteur dun systme de gestion de chiers est confront au problme suivant : comment fournir une interface de programmation simple pour programmer les changes de donnes avec 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 chiers pose les trois problmes fondamentaux suivants : lorganisation, la structuration dun espace logique de chiers ; lorganisation, la structuration de lespace physique des ressources ; la relation entre ces deux espaces : comment les objets chiers de lespace logique sont implants par lespace physique des ressources supports ? Ces ressources prsentent des similitudes mais bien des dirences, aussi bien dans leur fonctionnalit, on ne peut pas (re)lire des donnes avec une imprimante, que dans leur capacit de mmorisation : 256Mo pour une cl USB par exemple, 100Go pour un disque, ou la vitesse des contrleurs (10Mo/s pour une interface IDE par DMA, jusqu 640Mo/s pour une interface Ultra-5 SCSI). Le systme de gestion de chiers va avoir pour tche premire de parvenir homogniser toutes ces ressources, en gommant le plus possible leurs dirences. On applique en cela le principe de transparence : orir au programmeur une abstraction, une ressource virtuelle, dont les proprits sont, le plus possible, indpendantes des spcicits matrielles. Il ne faut pas avoir modier un programme parce que lon veut crire des donnes sur une cl USB au lieu de les crire sur un disque dur. On ne veut pas non plus avoir connatre sur quels secteurs du disque seront crites les donnes. La gure 3.2 illustre la liaison dynamique dun processus avec une ressource logique chier . Par un appel de la primitive open, le noyau tablit une liaison dynamique entre le processus et un chier. Une fois cette connexion tablie, les changes par les primitives read ou write sont possibles : pour le programmeur, le chier apparat comme une source (en lecture) ou un puits (en criture) de donnes. Il peut envoyer ou recevoir un ot de donnes. 31

Mmoire centrale

Ressources externes Modem ADSL

read(o?,@m,n) Disques @m

write(o?,@m,n)

Scanner

cl USB

Imprimante

Figure 3.1 La gestion des entres/sorties

Mmoire centrale @m

Disques

Processus Liaison dynamique o = open("f",...) Fichier (ouvert) Pilote

Interface SCSI

write(o,@m,n)

Figure 3.2 Liaison dynamique dun processus un chier

Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

32

squence d'octets Curseur


Figure 3.3 Fichier Le noyau prend en charge la totalit de lchange jusqu la couche physique : le chier ouvert repre limplantation des blocs allous au chier sur le disque et lcriture de nouveaux blocs sera ralise nalement par un pilote (driver) assurant la programmation du contrleur grant les accs physiques au disque cible. Cest ce niveau, et seulement celui-ci, que la connaissance des caractristiques matrielles du contrleur (interface IDE, SCSI, FireWire, USB, etc) et du disque sont prises en compte et masques au programme usager. Nous allons voir plus prcisment, la structuration interne des systmes de gestion de chiers. Auparavant, nous prsentons une dnition gnrale de la notion de chier.

3.2
3.2.1

Le concept de chier
Dnition

Sous sa forme la plus lmentaire, le concept de chier peut tre dcrit comme une squence doctets dote dun curseur et doprations permettant de la lire et de la modier (gure 3.3). Le rle du curseur est de xer le point de dbut de lecture ou dcriture. chier = squence doctets + curseur Les oprations daccs aux donnes dun chier constituent la mthode daccs ce chier. On distingue plusieurs mthodes daccs : squentielle, squentielle indexe, directe, partitionne. Elles ont toutes en commun les deux oprations de lecture (read) et dcriture (write). Cependant le droulement dune opration de lecture ou dcriture dpendra de la mthode daccs utilise.

3.2.2

Mthode daccs squentielle

Comme son nom lindique, une telle mthode daccs va permettre de lire ou crire dans un chier selon une approche squentielle. Chaque criture dbute lemplacement point par le curseur courant de lecture ou dcriture et si lopration lit ou crit n octets, la position du curseur est dplace (incrmente) de n octets. On obtient donc la smantique suivante : pour une lecture, la premire lecture lit partir du premier octet (curseur en dbut de chier) et chaque lecture suivante commencera aprs le dernier octet lu par lopration prcdente ; pour une criture, deux possibilits existent lors de louverture, ou bien le curseur est positionn en dbut de chier : la premire opration dcriture crit donc des octets partir du dbut du chier. Si le chier existait dj, son contenu va tre modi au fur et mesure des critures ; ou bien le curseur est positionn en n de chier : la premire opration dcriture crit donc des octets qui viennent se concatner la squence doctets qui existait. Bien videmment, cette deuxime possibilit suppose que le chier existait dj et avait un contenu non vide. Exemple de primitives de gestion du curseur sous Unix int read (ncanal, @m, n) write 33

Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

Les paramtres prcisent : le numro de canal identiant la connexion dynamique tablie entre le processus et le chier lors de lopration douverture ; ladresse de la zone accde en mmoire centrale 1 ; le nombre doctets lire ou crire. La primitive renvoie le nombre eectif doctets lus ou crits.

3.2.3

Mthode daccs directe

Cette mthode daccs autorise la modication de la position courante du curseur. Avant toute opration de lecture ou dcriture, le curseur courant peut tre dplac en un point quelconque de la squence. Celle-ci peut dailleurs dans ce cas comporter des zones de contenu indni (trous) dans la mesure o, par exemple, un programme peut crire systmatiquement n octets et dplacer le curseur courant de 2n octets. Le contenu de la squence sera une sorte de pointills : n octets de contenu, n octets indnis, n octets de contenu, etc. Dun point de vue pratique, pour une telle mthode daccs, soit on dispose dune primitive spcique ddie la gestion du curseur, soit un paramtre supplmentaire peut tre introduit dans la primitive de lecture ou dcriture pour prciser la position choisie de dbut de lecture ou dcriture. Exemple de primitives de lecture et dcriture sous Unix int lseek(n de canal, pos, origine) Les paramtres prcisent : le numro de canal identiant la connexion dynamique tablie entre le processus et le chier lors de lopration douverture ; la position nale du curseur interprte diremment selon la valeur du 3-ime paramtre ; lorigine utilise pour xer la position nale du curseur : soit le dbut du chier, soit la position courante du curseur, soit la n du chier.

3.2.4

Autres mthodes daccs

Dautres mthodes daccs ont t proposes. Elle consiste voir un chier comme compos non plus dune suite doctets, mais dune suite dentits de plus grosse granularit. Deux entits, deux niveaux dabstraction de donnes ont en particulier t proposs : lenregistrement et la partition. Nous dcrivons deux exemples. La mthode daccs squentielle indexe Dans cette mthode, un chier est vu comme uns suite denregistrements reprables, de faon associative, par une cl contenue dans lenregistrement. chier = squence denregistrements Un enregistrement est une structure de donne quelconque dote dun champ cl. struct enregistrement { type_cl cl ; ... } En lecture, il est ainsi possible de prciser lenregistrement dsir en spciant sa cl. An dacclrer la recherche dun enregistrement partir de la donne de sa cl, de nombreuses implantations ont t proposes, notamment en introduisant des tables dindex (de cls).
1. Attention : la zone mmoire est crite lors dun read et lue lors dun write.

Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

34

La mthode daccs partitionne Dans cette mthode, un chier est vu comme uns suite de partitions : en fait, le contenu dune partition est en gnral issu dun chier. On pourrait donc aussi voir un chier partitionn comme un chier de chiers. Ce genre de chiers est surtout utilis pour crer des archives de chiers ou des bibliothques (de binaires rditables par exemple). chier = squence de partitions Une partition est donc un sous-chier . Toute partition est identiable par le nom du chier origine. Les oprations daccs permettent dajouter une partition (un chier), dextraire/recopier une partition dans un chier en fournissant son nom, de lister le nom des partitions, etc. Pour faciliter ces oprations, un chier partitionn, encore appel archive, comporte une table rpertoriant les direntes partitions sous la forme dentres (nom de partition, index de dbut). Ainsi, la lecture dune partition donne dbute par la recherche du nom de la partition dans la table rpertoire pour trouver le dbut de la partition recherche dans le chier archive. Exemple de chiers partitionns Le systme Unix implante la notion de chiers partitionns sous la forme darchives. Une commande de base tar permet de grer des chiers archives. Par exemple, pour archiver dans un chier archive source.tar, les sources de programmes Java contenus dans un rpertoire projet, on excute une commande : tar cvf source.tar projet/*.java avec loption c pour create, v pour verbose et f pour le.

3.3

Organisation de lespace logique des chiers

La gure 3.4 illustre une organisation classique de lespace logique de chiers : la structure darbre. Les noeuds internes de larbre sont appels rpertoires et les feuilles de larbre sont les chiers de donnes 2
Espace logique de fichiers Espace physique de ressources Modem ADSL

/
Disques

mach

mach.sym

bin

local
cl USB

Scanner

sh

cat

Imprimante

Figure 3.4 Projection de lespace logique sur lespace physique


2. Ces feuilles peuvent aussi dsigner des ressources physiques ainsi intgres dans larbre de chiers.

Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

35

3.3.1

La dsignation des chiers

Cette structuration de lespace des chiers en arbre permet de dsigner les chiers en utilisant la notion de chemin daccs. Les rpertoires et les chiers reoivent des noms symboliques (chanes de caractres) et la dsignation dun chier peut ainsi tre dnie sous la forme dun chemin absolu partir de la racine ou dun chemin relatif partir un nud quelconque de larbre, ce nud tant pris comme racine dun sous-arbre de chiers. Par exemple, dans la gure 3.4, le chemin daccs /usr/bin/ssh dsigne sans ambigut un chier excutable et le chemin relatif bin/ssh peut dsigner le mme chier partir du rpertoire courant /usr.

3.3.2

La protection des chiers

La protection des chiers est une fonction fondamentale des systmes de chiers. Il sagit dassurer que le contenu des chiers et lexistence mme de ces chiers nest pas remise en cause par nimporte quel usager ( nimporte quel programme excut par un usager). En eet, dans une arborescence de chiers, les chiers ont pu tre crs par dirents usagers. Un usager utilisant un systme dans le cadre dune session aprs une phase didentication (login) possde normalement laccs un rpertoire de base (accessible dans une variable denvironnement $HOME par exemple) partir duquel il crera des sous-rpertoires et chiers, autrement dit un sous-arbre de chiers dont le crateur est un mme usager. Protger des chiers ncessite donc dassurer une politique de scurit daccs ces chiers. Par exemple, les chiers crs par un usager ne doivent pas pouvoir tre dtruits ou modis par nimporte quel autre usager. A la base de ce problme, deux entits entrent en jeu : dune part, les usagers du systme de chiers ; dautre part, les objets du systme de chiers, cest--dire les rpertoires et les chiers proprement-dits. Ceux-ci sont accessibles via un ensemble doprations qui dnissent de faon classique leur type. Le problme rsoudre est donc, pour toute opration op (comment ) sur un objet obj (quoi ) par un usager (qui ), autoriser ou non lopration. Le comment est dni par une liste doprations correspondant au type dobjet (chier ou rpertoire ici), le quoi par un nom dobjet et le qui par la connaissance du nom dusager associ au processus tentant excuter lopration. Pour rpondre cette question, il faut donc, pour tout usager et tout objet, xer et/ou connatre les oprations autorises, que lon qualient habituellement de droit daccs : on a le droit ou non de lire, dcrire dans un chier, le droit ou non de traverser un rpertoire, dy crer/dtruire un chier, etc. Ceci peut tre schmatis sous la forme dune matrice (usager, f ichier) dont les lments sont les droits daccs comme lillustre le schma suivant. ... u1 ... ui ... fk di,k ...

Il existe deux implantations possibles partir de ce modle gnral. Lune adopte une approche oriente ligne, lautre une approche oriente colonne. Lapproche par ligne consiste associer, tout usager, un ensemble de droits daccs aux objets quil pourra accder. On parle alors de capacits. Un chier ne sera accessible un processus sexcutant pour le compte dun usager qu condition de disposer dune capacit associe cette objet. La politique de distribution des capacits constitue alors le point critique pour assurer une protection able des objets. Par
Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

36

exemple, un processus ne devra pas pouvoir se forger lui-mme des capacits. Seul le noyau dcidera de fournir au processus une capacit sur un objet. Lapproche par colonne consiste associer, tout objet, lensemble des usagers qui peuvent y accder. Cette approche est simplie en structurant les usagers en groupes. On distingue alors gnralement 3 classes dusagers : 1. la classe du propritaire ayant cr lobjet, ici le chier ; 2. la classe des usagers appartenant au mme groupe que le propritaire ; 3. la classe runissant tous les autres usagers. Autrement dit, tous les usagers qui nappartiennent pas au groupe du propritaire. Il sut donc dans ce cas de distinguer 3 droits daccs : ceux du propritaire, ceux attribus au groupe du propritaire et enn, ceux attribus aux autres usagers. Si lon distingue 3 types daccs pour un chier : lire, crire, excuter, il sut donc de 3 fois 3 bits pour dcrire les droits daccs de tous les usagers un chier donn. Mise en uvre du contrle daccs On envisage le cas dune approche oriente colonne. Lorsquun processus tente de connecter un canal un chier via la primitive open, le noyau va dcider daccepter louverture du chier partir des paramtres suivants : 1. pour quel usager roule (sexcute) le processus appelant ? 2. quel type daccs est demand ? 3. quels sont les droits daccs ce chier ? Ceux-ci sont accessibles dans le descripteur de chier. Le contrle consiste alors vrier, partir des droits daccs spcis, que lusager est autoris accder au chier avec le type daccs quil demande. Pour cela, il est ncessaire de savoir quel est la classe de lusager tentant un accs au chier. Or, celle-ci dpend de lidentication de lusager qui a cr le chier, qui est donc, de fait, le propritaire du chier. Cest pourquoi, lidentit du propritaire du chier est mmorise dans le descripteur de chier. Cette stratgie de contrle daccs prsente cependant une insusance importante pour une classe relativement frquente dapplications, celles mettant en jeu des donnes rmanentes partages par dirents usagers clients, ce quon appelle classiquement une base de donnes. Expos du problme On considre des applications grant des donnes concernant des stocks, des commandes, des rservations, etc. Autrement dit, ce sont des applications qui grent une base de donnes partage. Le dveloppement de telles applications ncessitent dune part de dnir un ensemble dinformations structures qui seront conserves dans des chiers ; dautre part, de dvelopper un ensemble de programmes applicatifs pour manipuler ces donnes et assurer leur mise--jour cohrente. Un tel dveloppement va conduire un ensemble de chiers contenant des donnes D = {f1 , . . . , fn } et un ensemble de chiers contenant des programmes excutables de type transactionnel 3 T = {t1 , . . . , tm }. La gure 3.5 illustre les composants du problme. Analyse du problme On peut supposer que, lors du dveloppement de lapplication, les programmeurs appartiennent au mme groupe dusagers. La protection daccs appliquer est donc simple :
3. On appelle transaction, un traitement prsentant des garanties datomicit et de persistance des informations accdes vis--vis des fautes ventuelles pouvant survenir durant son excution.

Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

37

Dveloppeurs

Fichiers programmes T t1 ti tn x

Fichiers de donnes D

f1 fp f2 fj

Clients

Client malveillant

Figure 3.5 Problme de protection des donnes dune application autoriser laccs aux chiers de donnes par tout membre du groupe de dveloppeur et interdire tout accs aux autres usagers ; autoriser laccs en excution aux chiers de programmes par tout membre du groupe de dveloppeur et interdire tout accs aux autres usagers. Lorsquun dveloppeur lance lexcution dun programme, le processus a pour usager, ce dveloppeur qui, appartenant au groupe des dveloppeurs, peut donc accder aux chiers de donnes. Nanmoins, une fois mis au point, les programmes dvelopps doivent pouvoir tre excuts par des usagers clients de lapplication quel que soit leur identit. Il est, en eet, peut intressant de rserver lusage de lapplication nale aux seuls dveloppeurs de celle-ci ! Pour cela, on va donc modier les droits daccs aux chiers programmes de lensemble T en autorisant leur excution par tout usager. Mais cette modication ne rsout pas compltement le problme : en eet, si un usager nappartenant pas au groupe des dveloppeurs tente dexcuter un des programmes tj , lorsque le processus correspondant tentera daccder un chier de donnes, lopration douverture chouera : le processus appelant ne travaille pas pour un usager du groupe des dveloppeurs et donc tout accs au chier de donnes lui est interdit. On pourrait alors envisager de donner le droit daccs aux chiers de donnes de lensemble D pour tous les usagers. Le programme excut pourrait donc accder cette fois-ci aux chiers de donnes dont il a besoin. Mais, dans ce cas, non seulement les programmes de lensemble T peuvent accder aux chiers de donnes D, mais nimporte quel programme crit par un usager quelconque le peut aussi. Autrement dit, on ne peut garantir que les donnes ne seront accdes que via les programmes valids et crits par les dveloppeurs. Une solution Le problme rsoudre est de garantir que seuls les programmes valids pourront excuter des accs aux chiers de donnes mme lorsquils sont excuts par des usagers qui nappartiennent pas au groupe des dveloppeurs. La stratgie adopte consiste provoquer un changement dusager du processus excutant tout programme de lensemble T . Le processus prend temporairement lidentit du dveloppeur propritaire du chier programme quil excute. Par consquent, quelle que soit lidentit initiale de lusager ayant cr le processus, celui-ci commutera dusager courant lors dune excution du chier applicatif. Cette commutation dusager ne sera eectue que si un bit indicateur spcique a t positionn dans le descripteur du chier programme. A titre dexemple, sous Unix, il existe en fait deux bits indicateurs : lun pour dclencher la commutation dusager et lautre pour dclencher la commutation de groupe dusagers. Le processus peut ainsi indpenSystmes dExploitation Dpartement Informatique et Mathmatiques appliques

38

damment commuter dusager et/ou de groupe avant dexcuter un programme. Grce ce mcanisme, il est possible de conserver linterdiction daccs aux chiers de donnes D par les usagers clients via des programmes quelconques tout en assurant que ces mmes clients pourront utiliser les programmes applicatifs valids qui constitueront bien pour eux les seules oprations possibles utilisant les donnes applicatives contenues dans les chiers de D.

3.4

Organisation de lespace physique des ressources

On aborde ici le problme de la gestion des ressources physiques qui pourront tre utilises comme support de mmorisation des donnes des chiers. Un principe de conception essentiel consiste banaliser le plus possible les ressources physiques en masquant leurs caractristiques en terme de capacit, de performance daccs, de type daccs, etc.

3.4.1

La dsignation des ressources matrielles ou priphriques

Une premire ide et tape consiste intgrer les ressources physiques dans lespace logique mme des chiers. Cette approche apporte deux avantages : dune part, les ressources matrielles peuvent tre dsignes selon les mmes rgles que les chiers cest--dire dans le mme espace de noms et, dautre part, laccs une ressource pourra se faire en utilisant les mthodes daccs des chiers condition, toutefois, den avoir le droit : en eet, un usager ne doit pas avoir la possibilit dcrire un volume disque squentiellement, secteur par secteur. Exemple Unix Les ressources matrielles ou priphriques sont localises dans le rpertoire /dev. Les ressources sont identies par un nom de base prcisant leur nature et xant le type de leur pilote, suivi dun numro. Par exemple, tty01 dsigne un terminal usager connect lentre standard (stdin) et la sortie standard (stdout), cest--dire la plupart du temps le clavier et une fentre. Les units de disque peuvent apparatre sous des noms divers associs souvent leur interface de connexion, scsi par exemple. Remarque La ressource mmoire centrale elle-mme est intgre dans lespace de noms des chiers : mem dsigne la mmoire usager, kmem celle du noyau.

3.4.2

La connexion des priphriques

Il existe une trs grande diversit de priphriques. Il est possible de les caractriser (mais aussi distinguer) par leurs proprits : capacit, vitesse de transfert, support nal de linformation, sens des changes, mode de transfert (par bloc ou par octets). On peut considrer quil existe 2 classes de priphriques : les priphriques qui ne constituent que des sources pour capter des donnes (clavier, scanner, carte rseau, etc) ou des puits pour sauvegarder, diuser des donnes (imprimante, table graphique, carte rseau, etc). les priphriques qui sont capables de mmoriser des informations pour quelles puissent tre accder ultrieurement, appels historiquement mmoire de masse : les disques, les lecteurs/graveurs de CDs ou DVDs, les cls USB, les drouleurs de bandes magntiques, etc. Ce type de priphrique constitue le support privilgi des systmes de chiers. On peut distinguer de plus, les priphriques qui acceptent le chargement dynamique des supports de mmorisation qui sont amovibles (par exemple, un lecteur/graveur de DVDs) de ceux dots dun support
Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

39

de mmorisation xe : disques de grande capacit. Par ailleurs, lunit priphrique elle-mme peut tre connecte de faon permanente ou temporaire (pour une cl USB, un appareil photo numrique, camra numrique par exemple, la connexion est la plupart du temps dynamique pour une priode courte). Historiquement, la connexion des priphriques tait trs statique. Lajout/retrait dune unit ncessitait larrt pralable du systme, ventuellement sa reconguration (ajout ventuel du pilote correspondant la nouvelle unit) et un redmarrage. Aujourdhui, avec les units amovibles de type cl USB, la connexion dune nouvelle unit est une opration simple ne ncessitant ni arrt, ni reconguration. Seule la connexion dune unit dun type nouveau dont le pilote nest pas prsent dans la conguration courante ncessite une installation et un redmarrage (en gnral) du systme. La programmation des dirents types de priphriques passe par des interfaces standardises caractrises, en particulier, par leur vitesse de transfert, le protocole dchange synchrone ou asynchrone, leur type srie ou parallle. Pour les connexions dunits de disques, on utilise surtout les interface parallles SCSI (avec ses nombreuses variantes Ultra-5 640 Mo/S, Ultra-4 320 Mo/s, Ultra-3 160 Mo/s, . . .) ou FireWire (norme IEEE1394 de 50 100Mo/s). Linterface USB de 12 et 60Mo/s est devenu trs populaire pour la connexion de nombreux types de priphriques (clavier, appareils photos numriques, cl du mme nom, . . .). Le protocole de transfert SCSI parallle gre trs bien les priphriques multiples : plusieurs disques connects en srie. Le point fort du Firewire est son caractre isochrone bien adapt aux changes de ux vido 4 . Pour quun priphrique soit utilisable, il faut quil puisse tre connect via une des interfaces disponibles de larchitecture matrielle et que le logiciel de programmation des changes, appel pilote ou driver en anglais, soit disponible et install dans le noyau. Un pilote implante les oprations dchange et de contrle du priphrique. Il se dcompose en deux parties : les oprations appeles via les programmes usagers : lorsquun programme appelle la primitive read, celle-ci va nalement sous-traiter lopration eective au pilote qui contient la routine de lecture adapte au priphrique adress ; les routines de traitement dinterruption de n dentres/sorties : lchange mmoire priphrique se faisant en parallle avec lexcution des processus sur lunit centrale (les units centrales), la n dun change doit tre signale par le contrleur du priphrique. Pour ce faire, on utilise les interruptions. Lorsquun change se termine, le contrleur met une interruption vers lunit centrale. Le pilote doit donc contenir les routines de traitement dinterruption correspondantes. Gnralement, un pilote peut grer un type de priphriques. Autrement dit, si plusieurs priphriques de mme type sont connects, un seul pilote existe. Une adresse passe en paramtre des oprations permet didentier lunit concerne.

3.4.3

La notion de volume

La notion de volume est introduite pour masquer la grande diversit des supports utilisables comme mmoires de masse des systmes de chiers. Un volume est une abstraction de la notion de disque : il peut tre vu comme un tableau de blocs ou fragments (paquets de blocs) de taille xe. volume = blocs[capacit] ou fragments[capacit] La reprsentation dun volume pourra tre une ressource donne : disque, CD, DVD, cl USB, ou seulement une partition dune unit dans le cas des disques de grandes capacit. Lunit physique est dcoupe en plusieurs partitions, zones, supports de dirents volumes. Le partitionnement dun disque
4. Le mode de transfert isochrone permet de garantir des temps de transmission constants. Il fonctionne par rservation dunits despace-temps de dimension donnes et cycliques. Il ny a donc plus besoin daccuss de rception, lchange utilisant une ressource espace-temps rserv dont le dbit et la bande passante sont xes et garantis.

Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

40

en plusieurs volumes est une opration de conguration qui doit tre ralise pralablement lusage de lespace disque. La proprit fondamentale dun volume est de pouvoir tre le support dun systme de chiers : autrement dit, une sous-arborescence de chiers pourra tre dploye sur un volume. Pour ce faire, une opration dinitialisation du systme de chiers sur le volume est ncessaire. Cette opration dnit le nom du systme de chiers, les restrictions daccs, lespace libre disponible, la table des descripteurs de chiers, des dates (de cration, de dernire modication). A titre dexemple, la commande mkfs <nom de volume>, sous Unix, permet dinitialiser un systme de chiers sur un volume.

3.5

La projection de lespace des chiers sur lespace des ressources

Nous nous intressons ici limplantation dun sous-arbre de chiers sur un volume. On parle souvent dans ce cas dun (sous-)systme de chiers ayant pour support lespace disque oert par le volume. Il sagit donc de reprsenter lensemble des chiers de larbre y compris les rpertoires.

3.5.1

Principes gnraux de conception

Stuart E. Madnick a propos en 1970 une structuration en couches pour limplantation des systmes de chiers[4]. Le tableau ci-dessous prsente cette structuration : Abstraction Rpertoires Fichiers Blocs Niveau 6 5 4 3 2 1 Fonction Dsignation (chemins via les rpertoires) Localisation des descripteurs Contrle daccs (listes ou capacits) Accs au contenu (lire, crire) Allocation et caches Gestion des changes

3.5.2

Le niveau rpertoire : implantation de larborescence de chiers

Limplantation de la structure darbre repose sur une ide simple : les nuds, cest--dire les rpertoires, sont reprsents par des chiers. Autrement dit, nuds ou feuilles, tout est chier. Pour obtenir la structure darbre, le contenu dun rpertoire est donc tout simplement un tableau de couples (nom, i) dans lequel le nom est une chane de caractres identiant le chier et lindice repre le descripteur de chier associ. Cette approche implique que lespace des chiers proprement dit est reprsent sous la forme dun simple tableau (ou table) de descripteurs (appels i-node pour internal node sous Unix). Lorsquun chemin daccs est fourni en paramtre de la primitive open, il faut donc ventuellement accder plusieurs rpertoires, donc chiers jusqu obtenir le numro de descripteur nal du chier cible.

3.5.3

Le niveau chier : implantation des chiers

Daprs ce qui prcde, un volume nest donc que le support de chiers. Il contient donc seulement une table de descripteurs de chiers et il sut de connatre le numro de ce descripteur pour pouvoir accder au chier. Exemple de descripteur sous Unix : le i-node Lorsquun chier est cr, il faut donc rserver un descripteur libre. Au fur et mesure que des donnes vont tre crites dans le chier, il faudra allouer de lespace disque pour recevoir ces donnes. La solution retenue est une allocation dynamique par blocs ou fragments de taille multiple dun secteur puisque la taille dun chier nest pas initialement connue.

Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

41

Ceci pose naturellement deux problmes : les blocs tant allous dynamiquement, ils ne sont pas contigus sur le disque. Par consquent, il faut grer une carte donnant pour chaque numro logique de bloc de chier, le bloc physique lui correspondant. La taille dun chier ntant pas connue, la taille dune carte ne lest pas non plus. Il est ncessaire de connatre les blocs libres. Il faut donc une structure de donnes permettant de connatre les numros de blocs libres.

Selon les systmes de chiers, les solutions ne sont pas tout fait les mmes. A titre dexemple, nous prsentons les solutions Windows et Unix. Limplantation Windows Lide de base consiste utiliser un tableau unique pour toutes les cartes, ce tableau ayant un nombre dentres gal au nombre de blocs disque utilisables. Pour des raisons de robustesse, ce tableau est dupliqu. Ce tableau sert implanter un chanage de type liste entre les blocs logiques successifs dun chier. En eet, le nombre dentres tant gal au nombre de blocs physiques, lindice dune entre peut tre utilis comme numro de bloc physique et, dans une entre occupe i du tableau (associ au bloc i), on trouve la localisation du bloc logique suivant de i. En connaissant le numro du premier bloc physique du chier, il est donc possible de retrouver tous ses blocs. La gure 3.7 illustre cette reprsentation des cartes. Cette implantation prsente lavantage de mixer la fois les cartes des chiers et la carte des blocs libres : en eet, tout bloc libre peut tre repr dans le tableau par une entre ayant une valeur codant ltat libre. Elle a le dsavantage dtre en fait une structure de liste et donc dtre peu performante vis--vis des mthodes daccs direct : il faut parcourir la liste jusquau bloc demand. Limplantation Unix Lide de base est de placer une carte de taille xe dans chaque descripteur de chier. Une carte comporte 13 entres : les 10 premires peuvent pointer les 10 premiers blocs du chier sils existent. Typiquement, tous les blocs dun petit chier (une dizaine de Ko) sont donc directement accessibles. Ensuite, la 11-ime entre pointe un bloc qui contiendra un nombre xe de pointeurs vers les blocs suivants du chier : par exemple, si les blocs ont une taille de 4K octets, on pourra placer dans un tel bloc, les pointeurs vers les K blocs suivants du chier. La 12-me entre adopte le mme schma mais avec une double indirection. Finalement, lusage du 13-ime conduit 3 indirections successives. La gure 3.8 illustre cette reprsentation des cartes. Bien que cette approche permette de reprsenter des chiers de taille importante, une taille maximale existe. Les concepteurs dUnix avaient adopter cette approche compte-tenu du fait que le systme Unix tait pour eux un support au dveloppement de programmes. Cest pourquoi, 90 % de leur chiers taient

Carte 0 1 2 3 4
Figure 3.6 Localisation du contenu dun chier : notion de carte
Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

42

i k

k j

0 1 2

i k j

i j k

Carte reprsente

Figure 3.7 Localisation du contenu dun chier : approche Windows

Carte 13 entres 0 1 2 i
p i j r k q

9 10 j 11 k 12

une indirection p ...


bloc de pointeurs

deux indirections q ...


bloc de pointeurs de pointeurs

...
bloc de pointeurs

3 indirections

( bloc de pointeurs de pointeurs de pointeurs )


Figure 3.8 Localisation du contenu dun chier : approche Unix

Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

43

Carte des blocs libres Fond


Bloc p

Blocs libres utiliss comme blocs de pointeurs

Bloc i

0 1 2

i j k

Fentre "sommet" visible

p i j k

Figure 3.9 Carte (pile) des blocs libres : approche Unix de petite taille et nimpliquaient que rarement lusage des indirections. Par contre, aujourdhui, lusage de chiers contenant de la vido par exemple conduit souvent de trs importants volumes de donnes. Par consquent, cette approche nest plus adapte.

3.5.4

Le niveau bloc : la gestion de lallocation/libration despace aux chiers

Lallocation dynamique des blocs impose, nous avons vu, de connatre la cartographie des blocs libres sur un volume. Le systme Windows, avec une table de taille gale au nombre de blocs combine les cartes de chaque chier ainsi que celle des blocs libres. En eet, lorsquun bloc i est libre, lentre correspondante contient une balise spcique indiquant que le bloc est libre. Le systme Unix ayant opt pour des cartes implantes dans chaque descripteur de chier, doit donc par ailleurs grer une carte des blocs libres. Cette carte est localise dans le descripteur du volume appel super-bloc . La structure de donne utilise est une pile dont la reprsentation se rpartit dynamiquement dans les blocs libres eux-mmes au fur et mesure des allocations/librations de blocs. Le descripteur de volume contient en fait une fentre sommet visible de la pile. La taille de cette fentre est exactement gale au nombre de numros de blocs que lon peut mmoriser dans un bloc. En eet, des blocs libres interviennent dans la reprsentation de la pile pour contenir des numros de blocs libres. Ceux-ci sont chans dans une liste. La gure 3.9 illustre cette reprsentation clate de la pile des blocs libres. Seule une fentre de taille xe localise dans le super bloc contient une partie sommet visible de la pile. Le premier lment (base) de cette fentre contient un numro de bloc libre qui, lui-mme, ne contient que des numros de blocs libres. Lorsque la fentre ne contient plus que ce dernier numro de bloc i et quune demande dallocation dun bloc arrive, la fentre est re-remplie avec le contenu du bloc i et ce bloc i est allou pour satisfaire la requte. Ltat de la fentre est alors a nouveau plein et permettra de satisfaire dautres requtes futures dallocation. Si, par contre, lors dune libration dun bloc j , la fentre est trouve pleine, le bloc libr j est rempli avec le
Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

44

contenu de la fentre (pleine) et la fentre ne contient plus alors, qu sa base, le numro du bloc libr j . A partir de cet tat, dautres blocs librs peuvent donc tre nouveau empils dans la fentre.

3.5.5

La destruction des chiers

Lusage dun chier obit une sorte de protocole standard constitu dune squence dappels de primitives. Fonctionnalit Connexion entre le processus et la ressource chier Accs en lecture ou criture via la connexion ouverte Dconnexion du chier (fermeture de la liaison) Exemple de primitives sous Unix int c = open("nom-chier", O_RDONLY) int nblus = read(c,zone, n) int nbecr = write(c,zone, n) close(c)

Aucune opration de destruction napparat. Au niveau du langage de commande, la destruction dun chier est souvent assimile la commande rm ou delete. En fait, une telle commande a pour fonction premire dextraire le nom du cher fourni en paramtre du rpertoire o il se trouve. La destruction du chier sera automatiquement assure par le noyau du systme lorsque deux conditions seront satisfates pour un chier donn F : Aucune connexion de processus nexiste sur ce chier F . Le chier est devenu anonyme : autrement dit, aucun rpertoire ne contient dentre pointant le descripteur du chier F ; Si ces deux conditions sont satisfaites, le chier nest plus utilis et plus utilisable puisquanonyme. Par consquent, le noyau peut rcuprer (librer) les lments intervenant dans la reprsentation du chier, en loccurrence, son descripteur et les blocs contenant les donnes du chier. Cette approche consistant automatiser une opration en conant cette opration au noyau plutt qu lusager est un principe fondamental pour la gestion des objets partags rmanents. Rappelons que le mme principe est adopt pour la destruction des pipes par exemple.

3.5.6

La gestion des changes

Loptimisation de la gestion des changes mmoire centrale priphriques est un point crucial dun systme de gestion de chiers. En eet, de tels changes (classiquement appels entres/sorties) peuvent se drouler en parallle avec les processus sexcutant sur le ou les processeurs. Il sagit donc de maximiser le paralllisme possible en essayant doptimiser lusage des canaux dentres/sorties. Cette optimisation consiste, en entre, prvoir les donnes qui vont tre lues par les processus : de cette faon, lorsque le processus met une demande de lecture, lopration peut tre trs rapide puisque rduite une recopie en mmoire centrale dune zone source une zone destination. Cette approche est ralisable dans tous les cas daccs squentiel linformation. En sortie, lorsquun processus met une requte dcriture, celle-ci se traduit par lcriture des donnes dans un tampon (des tampons) mmoire(s) du noyau. Ainsi, le noyau pourra optimiser lexcution de ces requtes dcriture, notamment en les ordonnanant de manire la plus ecace en terme de temps dexcution. Dans les deux cas, le noyau utilise un espace mmoire compos de blocs de taille adapte aux caractristiques physiques des disques. Cet espace, appel cache, est partag entre les processus demandeurs et les processeurs dentres/sorties qui excutent les changes. Ce type de gestion des changes nexclut pas lusage de primitives excutant les accs de manire directe sans passer par des caches.
Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

45

3.6

Conclusion

Le systme de gestion des chiers reprsente un module trs volumineux et complexe dun systme dexploitation. Historiquement, partie intgrante du noyau dun systme dexploitation, les concepteurs ont russi les considrer comme de simples services. Cette technologie des noyaux a conduit au dveloppement de micro-noyaux (encore appels kernels ou nucleus) ne contenant pas de systme de gestion de chiers proprement parler. Un tel noyau ne contient plus que la gestion des processus, de la mmoire virtuelle et de la communication entre processus. Un service de chiers est implant par un processus ddi auquel sadresse, par requte, tous les processus utilisant des chiers. Un avantage important dune telle approche est quelle ore la possibilit de faire cohabiter plusieurs systmes de chiers de faon trs simple : il sut dactiver plusieurs processus serveurs ddis aux chiers. Citons les systmes Chorus ou Mach comme exemples de tels micro-noyaux 5 . Enn, les systmes de chiers sont en troite relation avec les systmes de mmoires virtuelles : en eet, le contenu dune mmoire virtuelle est dni partir dune image excutable dun programme contenue dans un chier. Au cours de lexcution dun processus, le contenu des pages virtuelles sera reprsent en mmoire relle mais aussi en mmoire secondaire dans les systmes de pagination la demande. Dans ce cas, une zone de sauvegarde, appele zone de swap, est alors souvent implante sur un volume ddi cet usage. Les mcanismes de mmoire virtuelle peuvent mme tre dtourns pour lire/crire un chier : en eet, puisque le systme de mmoire virtuelle implante comme primitive de base le couplage du contenu dun chier dans une mmoire virtuelle, il sut dexploiter cette fonctionnalit pour accder un chier : le chier, une fois coupl en mmoire virtuelle, toute criture ou lecture dans la zone dadresse correspondante quivaut crire/lire dans le chier. Le systme de mmoire virtuelle se charge de faon transparente dexcuter les changes ncessaires entre la mmoire relle et le chier sans aucune instruction de la part du programme usager.

5. Le terme micro-noyau est tout relatif : le noyau en question reste volumineux et complexe.

Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

46

Chapitre 4

Les mmoires virtuelles


4.1 Mmoires virtuelles

Lutilisation optimale de la mmoire centrale dun ordinateur a fait lobjet dtudes approfondies ds lorigine de linformatique. En eet, la taille de la mmoire centrale a constitu pendant longtemps une ressource rare . Si aujourdhui, le paysage est un peu chang, les technologies dveloppes restent nanmoins lordre du jour pour dautres bonnes raisons.

4.1.1

Le problme du partage mmoire

Dans tout systme mme monoprogramm, la mmoire centrale doit tre partage entre plusieurs programmes (au moins le noyau et un programme utilisateur). Le rsistance du noyau aux fautes du programme usager passe par une protection ecace de la zone mmoire contenant le noyau. Il faut donc disposer de mcanismes de protection mmoire pour protger les programmes les uns des autres. De faon plus gnrale, la multi-programmation implique le chargement en mmoire de plusieurs programmes. Le placement en mmoire centrale de ces programmes pose plusieurs problmes : la protection rciproque de ces programmes les uns par rapport aux autres doit tre assure. Lorsquun processus excute lun des programmes, les seules adresses acceptables doivent tre celles connes la zone mmoire explicitement alloue au programme et contenant les direntes sections du programme : section(s) de code, section(s) de donnes statiques, section pile-tas. Il faut donc disposer dun mcanisme de protection mmoire permettant au noyau de xer une zone mmoire rfrenable avant toute activation dun processus ; ladresse de chargement nest plus xe lors de ldition des liens. Le binaire excutable reprsentant le programme charger en mmoire devra pouvoir tre excutable quelle que soit ladresse de chargement nalement trouve par le noyau. Deux solutions sont alors possibles : soit ce binaire excutable ne contient pas dinstructions utilisant un mode dadressage absolu et le code obtenu est donc intrinsquement translatable et chargeable nimporte o en mmoire, soit certaines instructions utilisent un mode dadressage absolu et il faudra donc, lors du chargement, modier ces champs adresses pour les rendre cohrents par rapport ladresse de chargement ; la taille de lespace dexcution alloue au programme doit tre connue ds le chargement du programme. Il faut en eet trouver une zone mmoire de taille susante pour y charger le programme sous sa forme binaire. Les processus pouvant se terminer nimporte quand et donc dans nimporte quel ordre, des zones libres peuvent apparatre entre deux zones occupes. Le noyau devra grer une cartographie de sa mmoire centrale en maintenant une liste des zones de mmoire libres. Chaque zone devra tre repre par son adresse de dbut et sa taille. Une stratgie de fusion des zones libres contigus devra tre mise en uvre pour viter lmiettement de lespace en zones de plus en plus petites. Cependant une technique de type ramasse-miettes ne peut tre envisage, celle-ci posant le problme de la rimplantation des programmes une adresse de chargement dirente durant leur excution. 47

MV1 Mmoire relle

P1

P2

MV2

Figure 4.1 Reprsentation de mmoires virtuelles En rsum, le chargement de plusieurs programmes dans une mme mmoire pose de nombreux problmes. Cest pourquoi, les concepteurs de systme dexploitation ont eu lide dune abstraction permettant de masquer ce partage, en loccurrence, la notion de mmoire virtuelle.

4.1.2

Mmoire virtuelle

Le mcanisme de mmoire virtuelle a pour objectif de permettre une excution des programmes dans un contexte virtuellement monoprogramm. Tout processus excutera un seul programme charg dans une mmoire prive au processus. Cette mmoire dite virtuelle devra nalement tre implante physiquement grce aux ressources mmoires centrale et secondaire (disques). Cependant, le problme du partage est masqu et cest le noyau de gestion de mmoire virtuelle qui prendra en charge la reprsentation des direntes mmoires virtuelles laide des ressources mmoires disponibles, tant mmoire centrale que mmoire secondaire.

4.1.3

Principe de base

Lide fondamentale est de dissocier un espace virtuel fournissant essentiellement un espace adressable de la reprsentation eective de cet espace en mmoire centrale. La gure (4.1) illustre lassociation dune mmoire virtuelle chaque processus, ces mmoires tant alors reprsentes par des blocs de mmoire relle. Le mcanisme de mmoire virtuelle simplie le problme du chargement dun programme en mmoire puisque tout programme binaire excutable peut tre engendr en tenant compte de son emplacement en mmoire virtuelle : en eet, dans un systme mmoire virtuelle, un seul programme est prsent dans la mmoire et donc, on peut dcider de prvoir une implantation standard dans cette mmoire. Les programmes peuvent faire des rfrences en adressage absolu sans poser de dicult au moment du chargement. Lorsquun processus est actif, celui-ci engendre des rfrences dans la mmoire virtuelle qui lui est aecte et dans laquelle se trouve le programme quil excute. Ces adresses virtuelles doivent nalement permettre daccder un mot mmoire rel et donc tre converties en adresses relles. Pour ce faire. il faut donc avoir dni une technique de projection dun espace virtuel dadressage sur lespace mmoire rel. Deux techniques de projection ont t proposes, la pagination et la segmentation. Le mariage possible des deux techniques apporte une solution nale bnciant des avantages des deux techniques de base. Le mcanisme de conversion dadresse, mis en jeu lors de toute rfrence mmoire, doit tre trs performant. Cest pourquoi des circuits ddis appels U GM , units de gestion mmoire (M M U , Memory
Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

48

Adresse virtuelle Table des pages Adresse relle

pv

pr

pr

Figure 4.2 Conversion dadresse en pagination Management Unit), ont t dvelopps.

4.1.4

La pagination

La pagination repose sur les rgles suivantes : Lespace dadressage virtuel est dcoup en blocs de taille xe appels pages ; Lespace dadressage rel est aussi dcoup en pages de mme taille ; La taille dun page est une puissance de 2 et slve en gnral quelques K-octets (4, 8 ou 16 par exemple). Conversion dadresse Toute adresse virtuelle est dcomposable en deux champs : un numro de page et un dplacement dans cette page. La conversion dune telle adresse en adresse relle reposera sur une table des pages qui mmorise pour tout numro de page virtuelle valide, le numro de page relle correspondant. Le schma (4.2) dcrit ce calcul. Avantages et inconvnients Les avantages de la pagination tiennent essentiellement aux deux proprits suivantes : les pages tant de taille xe en mmoire relle, lallocation de lespace mmoire rel est simple. Il sut de trouver un nombre susant de pages libres pour la taille de mmoire virtuelle demande (nous verrons que lon peut faire mieux avec lapproche dallocation dynamique) ; la conversion dadresse est simple. Par contre, le principal inconvnient est le dcoupage arbitraire en tranches du programme pagin. En eet, une page peut trs bien ne contenir que quelques mots utiles occups par la n dune section de code par exemple. Il y a donc perte despace dans de tels cas. Plus fondamentalement, la structure du programme en section(s) de code, de donnes, de pile,. . .nest pas connue de la pagination. Or, on peut exploiter cette structuration du programme pour dcouper le programme en zones ayant un contenu bien spcique. Cest ce que permet lapproche suivante, en loccurrence, la segmentation.

4.1.5

La segmentation

La segmentation repose sur les rgles suivantes : Lespace dadressage virtuel est dcoup en blocs de taille xe appels segments ; Lespace dadressage rel nest pas structur et reste un espace de mots ; La taille dun segment est une puissance de 2 et slve en gnral quelques centaines de K-octets (64, 128,256 par exemple). On remarquera que les segments sont de taille xe dans lespace virtuel. Cest leur projection en mmoire relle qui va tre de taille variable pour sadapter au contenu exact du segment.
Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

49

Adresse virtuelle Table des segments

sv

@base

+
Adresse relle

Figure 4.3 Conversion dadresse en segmentation Conversion dadresse Toute adresse virtuelle est dcomposable en deux champs : un numro de segment et un dplacement dans ce segment. La conversion dune telle adresse en adresse relle reposera sur une table des segments qui mmorise pour tout numro de segment virtuel valide, ladresse de dbut et la longueur eective du segment allou en mmoire relle. Le schma (4.3) dcrit le calcul de ladresse relle. Avantages et inconvnients Le principal avantage de la segmentation est de permettre un dcoupage du programme en segments correspondant logiquement au dcoupage en sections du programme. Ceci optimise lallocation mmoire puisque lespace allou est exactement lespace ncessaire utilis. Par contre, lallocation de la mmoire relle est plus dlicate puisquil faut allouer des blocs de taille variable. Cest pourquoi, on a souvent recours une technique mixte exploitant les deux techniques la fois.

4.1.6

La technique mixte segmentation-pagination

La segmentation repose sur les rgles suivantes : Lespace dadressage virtuel est dcoup en blocs de taille xe appels segments ; Les segments sont dcoups en pages ; Lespace dadressage rel est dcoup en pages ; La mmoire relle retrouve une structure de pages qui facilitera lallocation. On conserve cependant la possibilit de coupler le programme en mmoire virtuelle selon un dcoupage obissant la structure logique du programme (segment(s) de code, segment pile, segment tas, segment de donnes statique,. . .). On combine donc les avantages des deux techniques au prix dune conversion dadresse un peu plus complexe et de tables un peu plus nombreuses (tables de pages associes chaque segment). Conversion dadresse Toute adresse virtuelle est dcomposable en trois champs : un numro de segment, un numro de page et un dplacement dans cette page. La conversion dune telle adresse en adresse relle reposera sur les table des segments qui mmorise pour tout numro de segment virtuel valide, ladresse de dbut et la longueur eective du segment allou en mmoire relle. Le schma (4.4) dcrit le calcul de ladresse relle. Avantages et inconvnients Le mcanisme de segmentation-pagination est videmment plus couteux que la simple pagination au point de vue conversion dadresse et espace mmoire (tables de pages pour chaque segment), mais il permet de concilier le respect de la structure logique du programme et lallocation simple de la mmoire relle. Cest une technique largement utilise notamment sur les architectures de grande puissance (mainframes).
Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

50

Adresse virtuelle

sv

pv

Table des segments

... @b ...
pr

... pr ...
d

Table des pages du segment n sv

Adresse relle

Figure 4.4 Conversion dadresse en segmentation-pagination

4.1.7

Le couplage des programmes

Lopration de couplage consiste xer linstallation du programme excutable dans la mmoire virtuelle. Il sagit en fait daecter un contenu chaque segment ou page. La version binaire objet excutable dun programme est dcrite dans un format souvent spcique au systme dexploitation utilis. Nanmoins, cette description est toujours structure en direntes sections contenant : une ou plusieurs sections de code, une ou plusieurs sections de donnes statiques, une section tas-pile. Pour un systme de segmentation, chaque section correspondra un segment. Pour un systme de pagination, chaque section sera videmment dcoupe en pages. La segmentation dun programme ore la possibilit de partage de code. En eet, une section de code dun programme doit tre protge contre lcriture de faon viter la destruction du code en cours dexcution. Un segment de code est donc une zone ayant un contenu constant quel que soit le processus qui lutilise (lexcute). Le mcanisme de segmentation permet dviter de charger plusieurs fois le mme code si plusieurs processus excutent le mme programme. titre dexemple, la gure (4.5) illustre le partage du code dun compilateur C par deux processus excutant chacun une compilation. Les segments de code prsents dans chaque mmoire virtuelle sont associs au mme segment en mmoire relle. Par contre, et bien videmment, les segments de donnes et en particulier le segment pile de chaque processus est associ un segment rel distinct.

4.1.8

Les stratgies dallocation de pages

Le mcanisme de mmoire virtuelle peut tre utilis pour assurer seulement une bonne protection des programmes (des processus) entre eux. Dans ce cas, loptimisation de lallocation de la mmoire relle ntant pas recherche, le programme excutable coupl en mmoire virtuelle est charg eectivement en mmoire relle avant de commencer lexcution du processus. Autrement dit, lespace mmoire relle ncessaire pour reprsenter toutes les pages (ou tous les segments) occup(e)s par le programme sont alloues pralablement lactivation du processus et restent xes durant toute lexcution. Cependant, une optimisation supplmentaire peut tre ralise en adoptant une stratgie de pages la demande. Dans cette stratgie, la liaison entre une page virtuelle et une page relle pourra tre remise en cause tout au long de lexcution du programme. Loptimisation ralise consiste retarder jusquau dernier moment, celui de la premire rfrence la page virtuelle (delay binding time) la liaison dune page relle la page virtuelle rfrence. Cest en eet cet instant seulement quil devient indispensable davoir une reprsentation de la page virtuelle sous forme dune page relle en mmoire centrale. Lunit de gestion mmoire dtectera automatiquement labsence de liaison et provoquera une exception. Contrairement au cas habittuel, cette exception ne provoquera pas larrt du processus fautif, mais au contraire sera interprte comme une demande de page. Cette exception est appele dfaut de page. La routine de traitement des dfauts de page est un lment essentiel dans un tel systme.
Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

51

Compilation C

Processus 1

Mmoire relle                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

                         

                         


Segment pile

Segment code

Segment pile

Segment code

Compilation C

Processus 2

MV1

MV2

Figure 4.5 Partage de code

Si une page virtuelle prsente en mmoire centrale nest pas rfrence, elle est inutile. On peut donc envisager de casser cette liaison pour librer la page relle au prot dune autre page virtuelle absente mais rfrence. Cette approche consiste donc faire du remplacement de pages . Cependant, une page ne peut tre libre sans tenir compte de son contenu. Cette page contient ltat courant dun programme et doit donc tre sauvegarde si son contenu doit tre remplac au prot dun autre programme. Il faut disposer dun espace disque adquat pour conserver une copie du contenu des pages virtuelles qui ne sont plus (ou pas) prsentes en mmoire centrale. Cette espace disque, appel zone (espace) de swap, constitue une sorte dextension de la mmoire disponible pour reprsenter les mmoires virtuelles. Deux problmes importants doivent tre matriss dans une telle approche. Le premier tient lexistence ventuelle de plusieurs copies dune mme page virtuelle un instant donn. En eet, une page virtuelle peut dsormais avoir un contenu dans une page de mmoire centrale et aussi une copie sur disque en zone de swap. Il faudra donc grer correctement la cohrence de ces deux copies. Le second concerne le contrle de lecacit du mcanisme de remplacement de page. En eet, un remplacement de page peut induire jusqu deux changes mmoire-disque. De tels changes ont un cot. Il faut donc sassurer que ce mcanisme nabsorbe pas trop de ressources du systme global.

Stratgie de remplacement de pages Dans un systme adoptant le principe de chargement de page la demande, une routine de traitement des dfauts de page met en uvre le remplacement de pages. Active sur loccurrence dune exception page absente , la routine de traitement du dfaut de page droule lalgorithme suivant :
Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

52

TraiterDfaut() { mv = MV.Identier() ; if (mv.DfautValide()) { p = MemRelle.Allouer() ; if (p.crite()) p.Vider() ; p.Charger(mv) ; } }

/* trouver la mmoire virtuelle en cause */ /* allocation dune page relle */ /* Vidage de la page choisie */ /* Chargement de la page avec son nouveau contenu */

La routine vrie dabord si le dfaut de page est valide. En eet, la rfrence ayant provoque le dfaut de page peut tre vraiement errone si elle rfrence une page interdite, non couple par exemple. Sil sagit bien dun dfaut de page valide, une page rlle doit tre trouve. Si la page obtenue appartenait une autre mmoire virtuelle et vait t crite, alors, il faut vider son contenu en zone de swap. Puis, le nouveau contenu de la page peut tre charg et la table des pages associe la mmoire virtuelle mv est modie pour rendre prsente la page virtuelle qui possde dsormais une reprsentation en mmoire centrale. La procdure Allouer nest jamais bloquante et fournit toujours une page relle, celle-ci ayant peut-tre due tre prempte un autre processus. Cette stratgie de premption est adopte car un tel systme appartient au modle gnrique prsentant un risque dinterblocage. En eet, les processus via les dfauts de pages demandent des ressources critiques de type page dynamiquement. Sils gardent les pages quils possdent lorsquils se bloquent en attente de pages, les conditions ncessaires un interblocage sont vrifes. Par consquent, la solution retenue est de prempter des pages aux processus lorsque cela devient ncessaire. Une question importante est alors de choisir la page prempter. Ce choix doit minimiser le risque de dfaut de page futur. Pour ce faire, la meilleure page serait donc la page qui serait rfrence dans le futur le plus lointain. Or, on ne connat pas lavenir. . . La seule possibilit est donc dextrapoler le futur en regardant le pass. Plusieurs propositions ont t longuement tudies. Nous retiendrons : Compter sur le hasard : Cette solution nest pas la meilleure mais elle nest pas catastrophique ; Choisir la page relle qui contient la page virtuelle prsente qui est charge depuis le plus longtemps. Cest une stratgie F IF O vis--vis de linstant de chargement en mmoire relle des pages virtuelles. Cette solution nest pas forcment adquate car les pages les plus anciennes peuvent correspondre aux pages les plus rfrences ; Choisir la page non rfrence depuis le plus longtemps par rapport linstant prsent. Cest la page la plus oublie. Ce choix est souvent juste mais le problme est cependant de savoir trouver cette page. Cette stratgie, appele LRU pour Least-Recently-Used, est en eet dicile mettre en uvre car il faudrait dater toutes les rfrences. Cependant une bonne approximation peut tre implante un cot raisonnable. Nous en donnons le principe dans ce qui suit. Stratgie N U R (N ot-Recently-U sed) Lide est de considrer seulement un pass proche du systme. Plus exactement, il sagit dobserver les vnements rfrence et criture de pour chaque page relle. Pour cela, deux bit indicateurs sont grs par lU GM dans chaque descripteur de table de page. Pour viter que toutes les pages soient nalement dans ltat rfrence et y restent, ds que cet tat est atteint, lU GM remet ces indicateurs de rfrence zro 1 . Ainsi, les indicateurs de rfrence donne une vision des rfrences rcentes, do le nom donn cette stratgie. Les pages relles se rpartissent en 4 catgories. Le choix dune page se fera dans le premier ensemble non vide trouv : 1. lensemble des pages non rfrences et non crites ; 2. lensemble des pages non rfrences et crites ;
1. Bien sr, les indicateurs dcriture ne peuvent tre remis zro que lorsque la page aura t sauvegarde en zone de swap.

Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

53

Probabilit de dfaut de page 1

n0

Nombre de processus

Figure 4.6 Phnomne dcroulement 3. lensemble des pages rfrences et non crites ; 4. lensemble des pages rfrences et crites. On remarquera que les deux premiers tats sont possibles compte tenu de la gestion de lindicateur de rfrence. Enn, la priorit est donne au fait que la page soit rfrence ou non. En eet, une page non rfrence mais crite sera choisie en priorit sur une page rfrence mais non crite. Contrle de lcroulement (thrashing) Quelle que soit la technique de remplacement de page envisage, un problme dcroulement du systme se pose. En eet, plus le nombre de mmoires virtuelles augmente , plus le nombre de pages prsentes par mmoire va diminuer. Si le nombre de pages prsentes en mmoire centrale pour chaque mmoire virtuelle devient trop petit, beaucoup de dfauts de page vont survenir et par consquent, beaucoup de remplacements de page. On comprends quau del dun certain seuil, les ressources du systme global vont tre presque exclusivement consacres grer le remplacement de pages. Les performances du systme global vont alors seondrer. Ce phnomne dcroulement (thrashing) doit donc tre contrl et vit si possible. Les concepteurs de systmes de mmoire virtuelle avec pages la demande ont donc t confront ce problme. La gure (4.6) illustre le phnomne. Ce problme nest cependant pas simple. En eet, le taux de dfauts de page engendr par lexcution dun processus est li aux schmas de rfrences mmoires quil provoque. titre dexemple, un processus excutant une boucle sur quelques instructions rfrenant peu de donnes peut trs bien ne pas provoquer de dfaut de page durant toute lexcution de cette boucle condition de lui accorder deux pages prsentes en mmoire : celle contenant les instructions de la boucle et celle contenant les donnes. Par contre, si le processus excute un boucle mettant en jeu une matrice de grande taille provoquant des rfrences sur de nombreuses pages virtuelles direntes, le nombre de dfauts de page va tre important si les pages contenant la matrice ne sont pas maintenues prsentes. Notion despace dexcution (working set) On constate donc quil faudrait connatre par avance les besoins en espace mmoire du processus pour garantir un taux de dfauts de page raisonnable. tout instant, il existe ainsi un ensemble de pages prsentes qui caractrise et garantit une excution du processus avec un taux raisonnable de dfaut de pages. Cet ensemble est appel espace dexcution (working set). La taille de cet espace xe en quelque sorte lespace vital ncessaire au processus pour sexcuter correctement. Il faut pouvoir cependant valuer cette taille qui volue dynamiquement. Pour ce faire, on ne peut une nouvelle fois quextrapoler un comportement futur partir dun comportement pass. La stratgie adopte consiste valuer priodiquement le nombre de dfauts de page qui ont t provoqus par un processus. Si ce taux augmente, le nombre de pages prsentes pour ce processus, autrement dit la taille de son espace dexcution doit tre augment. Si ce taux diminue, le nombre de pages prsentes pourra tre rduit.
Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

54

Pour viter le phnomne dcroulement, il sut dassurer linvariant suivant :


p=n

t
p=1

W S (p, t) M

o W S (p, t) reprsente la taille de lespace dexcution du processus p linstant t et M la taille en pages de la mmoire relle disponible initialement. En ralit, il nest videmment pas possible de connatre la taille de lespace dexcution chaque instant et cest une approximation qui est priodiquement calcule. En particulier, cet invariant servira contrler lintroduction dun nouveau processus impliquant la cration dune nouvelle mmoire virtuelle.

4.1.9

Conclusion

Mme si lespace mmoire centrale est aujourdhui une ressource moins critique quil y a quelques annes, les mmoires virtuelles constituent la fois une abstraction et un mcanisme fondamental dans la gestion de la mmoire. En particulier, leur rle de protection des traitements des dirents usagers et du noyau est indispensable pour obtenir un systme able et sr. Enn, on trouvera dans [6] et [8], une description dtaille des notions prcdentes. Pour les amateurs, un livre complet est ddi la description de la gestion des mmoires virtuelles dans le systme Linux sous le titre : Understanding the Linux Virtual Memory Manager [3].

Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

55

Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

56

Chapitre 5

Conclusion
Les principes de conception des systmes dexploitation sont maintenant bien tablis. Les concepts de processus pour lexcution des programmes et de chiers pour la gestion des donnes rmanentes sont les briques de base stables des noyaux de systme. Cependant, le dveloppement dun fort paralllisme dans les architectures des processeurs conduit aujourdhui introduire la notion de processus lger ou activit ou thread. Un processus apparat alors plutt comme une unit dallocation de ressources (processeur, mmoire, programme, chiers, etc), une sorte de machine virtuelle qui permet lexcution de plusieurs activits squentielles au sein dun mme processus. Autrement dit, un processus peut comporter plusieurs points de contrle actifs, plusieurs activits en parallle, celles-ci partageant le mme programme et le mme espace mmoire. Lavantage est bien entendu ce partage de ressources qui permet notamment une optimisation des communications entre activits par lusage de leur mmoire commune. Cest aussi un inconvnient dans la mesure o les activits sont moins bien protges les unes des autres que dans le cadre de processus distincts. Les noyaux doivent donc aujourdhui grer deux niveaux dallocation de ressources : lallocation des ressources aux processus dits lourds et lallocation des ressources aux activits appeles aussi processus lgers . En particulier, lordonnancement des activits doit tre bien matrise de faon rpartir quitablement le temps processeur oert par les processeurs des architectures multi-curs entre les direntes activits selon quelles appartiennent au mme processus ou des processus dirents. La synchronisation des processus lourds ou lgers a pour objectif de rgler les conits daccs aux ressources critiques quils sont amens partager bien malgr eux ou de coordonner la coopration ou communication entre eux selon des protocoles bien dnis assurant une cohrence des traitements. La ralisation de cette synchronisation sappuie sur un ensemble de mcanismes : verrous, smaphores, moniteurs, rendezvous, transactions, etc. Une tude des dirents problmes gnriques de synchronisation constitue une tche dicile et complexe dun point de vue algorithmique (parallle). Les ordinateurs ayant de plus en plus de processeurs, de nouvelles tudes sont ncessaires pour amliorer les techniques de programmation parallle fondes sur ces mcanismes, ceci incluant la dcouverte de nouveaux mcanismes mieux adapts. Les systmes de chiers connaissent aussi des volutions en ce qui concerne leur implantation compte tenu de la croissance des capacits oertes par les units de mmoire de masse (de la cl USB au disque de plusieurs Tera-octets). Le nombre de chiers prsents sur un disque est en eet de plus en plus norme et ncessite des algorithmes trs spciques pour optimiser la localisation des descripteurs de chiers. Par ailleurs, les chiers deviennent eux-mme de plus en plus gros avec notamment les chiers contenant des images et surtout de la vido. L encore, une implantation spcique de ces chiers sur lespace disque disponible peut optimiser laccs aux donnes et amliorer les performances du systme . Le paralllisme interne des architectures et la connexion de centaines, voire de milliers dordinateurs via un rseau haut dbit fait apparatre aussi un autre besoin : des systmes dexploitation capables de rpartir entre usagers non pas les ressources dune architecture centralise, mais celles dune architecture rpartie compose de ces milliers de machines constituant une grille de calcul ou cluster . Des systmes dexploitation de grilles de calcul sont en cours de dveloppement. Citons par exemple XtreemOS dvelopp 57

partir de Linux[2]. Enn, une tendance actuelle est le dveloppement de systmes informatiques embarqus. De nombreux objets contiennent maintenant des architectures informatiques complexes ayant besoin dun noyau de systme dexploitation pour fournir le support dexcution aux applications qui pourront tre disponibles sur ces objets : on pense naturellement aux tlphones (I-phone, Blackberrys, etc) ou aux diverses tablettes (I-pad par exemple), baladeur (i-Pod) et consoles de jeux. Ce phnomne ne se limite pas aux objets de type grand public mais prend aussi de lampleur dans tous les domaines : robotique, instrumentation, etc. Consquence de cette volution : le nombre de noyaux de systme dexploitation ne cesse daugmenter. Des propositions de standardisation viendront srement, mais on en est encore la priode farwest . Citons Android de Google, iOS 4 dApple pour ses tlphones et tablettes, Windows 7 Mobile de Microsoft. Tous ces noyaux de systme intgrent la gestion du paralllisme et un ordonnancement dit Temps rel des applications. Ils sont surtout trs bien adapts pour grer des interfaces usagers sophistiques : images 2D ou 3D, icones, fentrage, menus, etc. En conclusion, il y a donc un bel avenir pour les systmes dexploitation. . .

Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

58

Appendices

59

Annexe A

Exercices
Les questions suivantes ont t poses en examen et rassembles au ls du temps. Elles peuvent permettre de faire le point sur la comprhension des principes, concepts et mcanismes prsents.

A.1

Des questions dordre gnral

1. Quelle fonction de base est assure par un interprteur de commandes ? Comment le jeu de commandes est-il extensible par un usager quelconque ? 2. Quappelle-t-on un script ? 3. Le dialogue dun usager avec le systme via un interprteur de commandes est-il implant par un processus ? Justier votre rponse. 4. Dun point de vue scurit, quel risque existe-il pour un usager A dexcuter un programme dvelopp par un autre usager B ayant des droits distincts de A ? 5. Pourquoi, les primitives du noyau dun systme dexploitation ne sont pas rentrantes ? 6. Quelle est la dirence entre une primitive et une commande ? 7. Quelle est la dirence smantique entre une interruption et un droutement ? 8. A quoi servent les droutements programms (instruction TRAP) ? 9. Dans un systme dexploitation, quels sont les deux concepts utiliss pour la gestion dune part, des traitements (excution des programmes) et dautre part, des donnes ? 10. quoi sert la phase de connexion (login) des usagers ? 11. Tout systme dexploitation possde un langage de commande. Par exemple, le systme Unix propose le langage shell (et ses nombreuses variantes). Un tel langage est-il interprt ou compil ? Justiez votre rponse. 12. Un systme dexploitation doit rsister aux erreurs des programmes usagers quil excute. Par exemple, un programme contient une instruction qui tente dcrire dans le mot mmoire dadresse 0. Que se passe-t-il ? Quel mcanisme matriel est mis en uvre ? 13. Un systme dexploitation doit rsister aux erreurs des programmes usagers quil excute. Citez deux exemples derreur possible et le(s) mcanisme(s) matriel(s) qui permette(nt) de garantir une rcupration de telles erreurs et leur contrle par le noyau du systme. 14. Dans un systme dexploitation, quappelle-t-on superviseur ? 15. Un programme binaire excutable peut-il tre excut sans modication par des processeurs matriels dirents, par exemple un processeur IBM Power PC et un Intel Pentium ? Justiez votre rponse. 16. Un programme binaire excutable peut-il tre excut sans modication sous des systmes dexploitation dirents, par exemple Windows et Linux ? Justiez votre rponse. 61

17. Un systme dexploitation doit rsister aux erreurs des programmes usagers quil excute. Prcisez pour les erreurs suivantes sil sagit dun droutement ou dune interruption et indiquez, dans chaque cas, la raction du noyau : excution dune instruction TRAP ; n dun change disque via un contrleur SCSI ; excution dune instruction privilgie en mode programme ; n de quantum. 18. Quelles sont les ressources qui doivent tre virtualises pour que plusieurs instances de systmes dexploitation puissent sexcuter de faon sre ? 19. Quel risque potentiel existe-il lorsquon excute un programme que lon na pas dvelopp ? 20. Pourquoi les langages de scripts sont-ils qualis de langage de programmation gros grain ( in the large ). Justier votre rponse par un exemple en shell. 21. Pourquoi, les primitives du noyau dun systme dexploitation ne sont pas rentrantes ? 22. Expliquer pourquoi il peut tre intressant de lancer deux instances dun mme systme dexploitation en utilisant la virtualisation.

A.2

propos des processus

1. Dans un noyau de gestion des processus excutables (ordonnanceur), les processus prts possdent une priorit xe attribue lors de leur cration. Le processus prt qui devient actif lors de la libration du (dun) processeur est donc toujours le plus prioritaire. Prciser sous quelles conditions, un processus peu prioritaire peut ne jamais devenir actif. Proposer un algorithme dordonnancement pour viter cette anomalie tout en gardant la notion de priorit. 2. Un processus est interrompu par le superviseur au bout dun quantum de temps x mme lorsquil peut continuer sexcuter. Proposer une stratgie adaptative de la dure dun quantum de faon minimiser le nombre dinterruptions sur n de quantum. Attention, cette stratgie ne doit pas amener une dure de quantum trop grande : une valeur maximale devra tre xe. Pourquoi ? 3. Comment peut-on comptabiliser le temps processeur utilis par un processus particulier ? Expliquer les mcanismes mis en jeu. 4. Des processus de deux usagers distincts ne partagent pas a priori un espace mmoire usager commun. Expliquez pourquoi ? Le peuvent-ils sils roulent pour le (sexcute pour le compte du) mme usager ? Justier votre rponse. 5. Combien de processus au maximum peuvent tre actifs sur un biprocesseur ? 6. Les processus excutables sont soit actifs, soit prts. Quelle dirence essentielle existe-t-il entre ces deux tats : actif et prt ? 7. Donner 3 exemples de situations conduisant un processus ltat bloqu. 8. Pourquoi un processus est interrompu par le superviseur au bout dun quantum de temps x mme lorsquil pourrait continuer sexcuter ? 9. Quelle est lutilit de connatre pour quel usager un processus sexcute ? Donner au moins deux raisons. 10. Quelle proprit (de sret) doit assurer un bon algorithme dordonnancement long terme des processus ? 11. Un processus consomme des ressources pour sexcuter. Citez 2 types de ressources qui lui sont indispensables. 12. Sur un systme biprocesseur, est-il concevable quun processus donn puisse sexcuter sur lun puis lautre des deux processeurs alternativement ? Justiez votre rponse en expliquant le mcanisme de commutation de processus.
Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

62

13. Sur un quadriprocesseur, combien de processus au maximum peuvent tre simultanment dans ltat actif ? 14. Sur une architecture monoprocesseur, deux compilations sont lances en parallle. Expliquez pourquoi lexcution parallle de ces deux compilations durera moins longtemps que leur excution squentielle bien quil nexiste quun seul processeur central. 15. Sur une architecture monoprocesseur, par quel mcanisme assure-t-on quun processus ne monopolise pas trop longtemps le processeur ? 16. Un mme processus peut-il excuter plusieurs programmes (binaires excutables) simultanment ? 17. Un ensemble I de processus excute des programmes qui engendrent beaucoup de lectures et dcritures dans des chiers (compilations par exemple) et un autre ensemble C de processus excute des programmes qui engendrent des calculs longs. Lordonnanceur a-t-il intrt donner une plus forte priorit aux processus de lensemble I ou de lensemble C ? Justiez votre rponse. 18. Comment un processus peut-il communiquer avec dautres ? Expliquez en particulier le mcanisme de connexion dynamique de ressources. 19. Expliquer pourquoi il est intressant dexcuter plusieurs processus mme lorsquil nexiste quun seul processeur rel. 20. Le systme Windows ore une primitive CreateProcess pour crer un nouveau processus. En consquence, un processus peut-il changer de programme durant son excution ? En est-il de mme dans le systme Unix ? Justiez votre rponse. 21. Dans un systme multi-processeur, un processus peut-il sexcuter : sur dirents processeurs simultanment ? sur dirents processeurs alternativement (par exemple, pour deux processeurs : P1 , P2 , P1 , P2 , . . .) ? sur dirents processeurs alatoirement (le scheduler choisit dynamiquement) ? ou sur un seul durant toute son excution ? 22. Un processus applicatif est lanc par mgarde en mode superviseur. Quel risque en dcoule pour le systme dexploitation ? 23. Donner et expliquer une stratgie dallocation du processeur aux processus prts assurant la rpartition quitable du temps processeur entre les processus excutables. 24. Avec le systme Windows, un processus peut-il changer de programme ? Justier votre rponse. 25. Pour quelle raison un processus actif risque de ne pas consommer la totalit de son quantum de temps ? 26. Dans un ordonnanceur, le concepteur a choisi de provoquer lallongement de la dure du prochain quantum de temps attribu un processus chaque fois que le processus a consomm compltement son quantum courant. Cette stratgie vous semble-t-elle acceptable ? 27. Citer des ressources logiques que peuvent utiliser plusieurs processus pour partager des donnes ?

A.3
1. 2. 3. 4.

propos des chiers

Quappelle-t-on mthode daccs dans les systmes de gestion de chiers ? Illustrer par des exemples. Un systme de chiers peut-il grer plusieurs volumes ? Justiez votre rponse. Dans un systme de chiers, le nombre de chiers est-il illimit ? Justiez votre rponse. Expliquez ce quest une mthode daccs un chier. Donnez deux exemples dirents de mthode daccs. 5. Par quoi est reprsent un rpertoire dans un systme classique de gestion de chiers ? 6. Donnez deux exemples dincohrence possible sur un volume disque entre la description des blocs libres et des blocs de chiers. 7. Quels mcanismes permettent dassurer quun programme excut par un processus usager ne peut pas crire ou lire un secteur disque ?
Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

63

8. Donner une dirence fondamentale entre le mode de dsignation des chiers dans le systme Windows et dans le systme Unix. 9. Quel contrle lmentaire de cohrence doit-on faire pour vrier quun volume et les chiers quil contient sont dans un tat cohrent ? 10. Un systme dexploitation doit garantir lintgrit du ou des systmes de chiers quil gre. En particulier, il faut empcher quun programme usager quelconque puisse crire des secteurs du (pseudo-)volume support dun systme de chiers. Donner une implantation possible : prciser les mcanismes matriels mis en jeu, la politique de scurit mise en uvre. 11. Deux processus accdent au mme chier : le premier crit dans le chier sans problme. Le second tente de lire le chier, mais une exception se produit et le processus est avort. Expliquez pourquoi. 12. Quelle proprit de la mthode daccs squentielle exploite-on pour optimiser le paralllisme entre les changes disque-mmoire et lexcution des processus ? 13. Pourquoi le parcours dun chemin daccs un chier, par exemple /users/1AI/gr1/dupont/prog.c ncessite-t-il louverture et la lecture de plusieurs chiers ? Prcisez lesquels. 14. Lorsquun processus sexcute, sur quel attribut associ au processus se base-t-on pour vrier les droits daccs de ce processus aux ressources chiers quil cherche accder ? 15. Dans le systme Windows, expliquer comment les blocs libres dun volume disque peuvent tre connus. 16. Sous Unix, il nexiste pas de primitive permettant de dtruire un chier. Expliquer pourquoi et comment le noyau assure nanmoins la destruction des chiers. 17. La notion de liste daccs utilise comme mcanisme de protection des chiers est-elle une approche par ligne ou par colonne en se basant sur la modlisation classique matricielle Usager Fichier Droits ? 18. Comment garantit-on quun processus usager ne peut pas crire des donnes dans un secteur nimporte o et directement sur un volume disque ? 19. On ne peut lire moins dun secteur de quelques Koctets sur un volume disque. Cela est-il un inconvnient lorsquun programme lit squentiellement dans un chier par paquet de quelques octets ? 20. Pourquoi les langages de scripts sont-ils qualis de langage de programmation gros grain ( in the large ). Justier votre rponse par un exemple en shell 21. Sous Unix, il nexiste pas de primitive permettant de dtruire un chier. Expliquer pourquoi et comment le noyau assure nanmoins la destruction des chiers. 22. La notion de liste daccs utilise comme mcanisme de protection des chiers est-elle une approche par ligne ou par colonne en se basant sur la modlisation classique matricielle Usager Fichier Droits ?

Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

64

Annexe B

Encore mieux, exercices corrigs. . .


B.1 Gnralits

1. Dans un systme dexploitation, quels sont les deux concepts utiliss pour la gestion dune part, des traitements (excution des programmes) et dautre part, des donnes ? Rponse La notion de processus pour les traitements et la notion de chier pour les donnes. 2. Un systme dexploitation doit rsister aux erreurs des programmes usagers quil excute. Citez deux exemples derreur possible et le(s) mcanisme(s) matriel(s) qui permette(nt) de garantir une rcupration de telles erreurs et leur contrle par le noyau du systme. Rponse Deux exemples derreurs : un programme boucle : il faut alors pouvoir linterrompre. Le mcanisme matriel est linterruption. une programme adresse un mot mmoire inexistant : le processeur provoque un droutement vers une routine de traitement de cette exception. 3. Sur une architecture monoprocesseur, deux compilations sont lances en parallle. Expliquez pourquoi lexcution parallle de ces deux compilations durera moins longtemps que leur excution squentielle bien quil nexiste quun seul processeur central. Rponse Durant une compilation de nombreuses lectures et critures de chiers ont lieu. Ces changes bloquent logiquement les processus de compilation. Pendant quun processus est bloqu en attente dune n dentre/sortie, lautre processus peut sexcuter (jusqu ce quil se bloque lui-mme ventuellement). Lexcution parallle des 2 processus sera donc plus courte. 4. Un systme dexploitation doit garantir lintgrit du ou des systmes de chiers quil gre. En particulier, il faut empcher quun programme usager quelconque puisse crire des secteurs du (pseudo-)volume support dun systme de chiers. Donner une implantation possible : prciser les mcanismes matriels mis en jeu, la politique de scurit mise en uvre. Rponse Pour quun programme usager ne puisse pas accder directement aux secteurs dun disque, on utilise la notion de mode dexcution et dinstruction privilgie. Un programme usager sexcute en mode usager et, dans ce mode, certaines instructions lui sont interdites. Ces isntructions, dtes privilgies, comprennent donc les instructions permettant de programmer le contrleur du disque. En consquence, seules les primitives du noyau, qui sont excutes en mode privilgi, peuvent lancer des changes au niveau physique. 5. quoi sert la phase de connexion (login) des usagers ? 65

Rponse Cette phase permet didentier lusager de faon dterminer les ressources quil pourra accder, en particulier en ce qui concerne lespace de chiers. 6. Comment un processus peut-il communiquer avec dautres ? Expliquez en particulier le mcanisme de connexion dynamique de ressources. Rponse Un processus communique avec son environnement par des ots de donnes en entre ou en sortie via des portes dchange . Le noyau ore tout processus un ensemble de ots ouverts par dfaut sur des ressources permettant lchange dinformations : chiers, pipes, etc. La connexion ces ressources est dynamique (primitive open, pipe et close).

B.2

Processus

1. Combien de processus au maximum peuvent tre actifs sur un biprocesseur ? Rponse : Deux puisquun processus, dans ltat actif, sexcute sur un processeur. 2. Les processus excutables sont soit actifs, soit prts. Quelle dirence essentielle existe-t-il entre ces deux tats : actif et prt ? Rponse : Les processus excutables sont dans ltat actif ou prt. Dans ltat prt, un processus attend quun processeur lui soit allou pour sexcuter. La transition vers ltat actif est conditionne par cette allocation. En rsum, dans ltat prt, le processus attend la ressource processeur, dans ltat actif, il a obtenu cette ressource et il sexcute. 3. Donner 3 exemples de situations conduisant un processus ltat bloqu. Rponse : Un processus passe de ltat actif ltat bloqu lorsquun condition logique fausse empche la poursuite de son excution, par exemple : Le processus a excut une demande de lecture bloquante du clavier : il faut quune ligne de texte soit eectivement tape pour que lopration puisse tre excute ; Le processus attend la terminaison dun processus ls (Exemple Unix, via une primitive wait. Le processus crit en mode bloquant sur un canal connect un pipe plein.

4. Pourquoi un processus est interrompu par le superviseur au bout dun quantum de temps x mme lorsquil pourrait continuer sexcuter ? Rponse : Un processus est interrompu par le superviseur au bout dun quantum de temps x pour assurer un partage quitable du temps processeur disponible entre les dirents processus. Sil existe des processus interactifs prts, ceux-ci doivent pourvoir tre actifs dans un dlai raisonnable (problme de temps de rponse). Sur un mono-processeur, un seul processus excutant des calculs pourrait par exemple, sil ntait pas interrompu, sexcuter durant plusieurs secondes, voire plusieurs minutes, bloquant ainsi tous les autres processus prts. 5. Quelle est lutilit de connatre pour quel usager un processus sexcute ? Donner au moins deux raisons. Rponse : Lorsquun processus sexcute, il utilise les ressources du systme matriel et logiciel hte. Une premire utilit est donc de pouvoir imputer, comptabiliser les ressources utilises par un rocessus pour le compte dun usager prcis. Mais, la connaissance de lusager permet surtout de limiter et contrler les ressources que celui-ci pourra utiliser. Lune des ressources les plus importantes est le systme de chiers. Les droits daccs aux chiers dpendent de lutilisateur qui tente de les utiliser. Cette notion dusager permet donc avant tout de mettre en uvre une politique de protection des chiers appartenant des usagers distincts.
Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

66

On considre une architecture biprocesseur dote dun bus mmoire et dun bus dentres-sorties. On suppose que lon dispose sur cette architecture dun noyau dexcution pour grer des processus. 6. Prcisez combien de processus au maximum peuvent tre dans ltat actif un instant donn sur une telle architecture ; Rponse Deux processus au plus peuvent tre actifs puisquil ny a que deux processeurs. 7. Un processus dans ltat bloqu possde-t-il la ressource processeur ? Rponse Dans ltat bloqu, un processus attend quune condition logique (ressource disponible, vnement arriv,. . .) soit satisfaite avant de pouvoir continuer son excution. Par consquent, il ne peut pas, dans cet tat, excuter des instructions et il ne possde donc pas la ressource processeur qui lui serait parfaitement inutile. 8. Proposez une stratgie simple dallocation de la ressource processeur de faon assurer que tout processus prt nira par obtenir un processeur ; Rponse La ressource processeur doit tre alloue aux processus prts. Pour viter tout risque de famine, une solution simple consiste placer les processus prts dans une le unique FIFO. Ainsi, le processus prt depuis le plus longtemps sera toujours slectionn ds quun processeur sera libre. On assure ainsi une quit forte entre les processus prts. 9. Par quelle stratgie peut-on viter quun processus monopolise la ressource processeur pendant une dure trop longue ? Quel mcanisme matriel entrera en jeu pour mettre en uvre une telle stratgie ? Rponse La stratgie la plus simple consiste xer une valeur maximale de dure dexcution pour un processus actif. Le processus actif sera interrompu sil dpasse cette dure maximale. Autrement dit, lorsquun processus devient actif, cest en ralit un quantum de temps processeur qui lui a t allou (et non pas la ressource processeur pour une dure indtermine). Le mcanisme matriel est la notion dinterruption. 10. Prcisez grce quel mcanisme un processus peut appeler les primitives du noyau mais ne peut pas se brancher nimporte o dans le code du noyau ? Rponse Lappel dune primitive du noyau dun systme ne peut se faire que par un mcanisme spcique et non pas par une simple instruction de branchement. En eet, la zone mmoire contenant le programme noyau est protge contre de tels branchements directs. Le mcanisme le plus utilis est le droutement programme. Une instruction spcique de format suivant : TRAP n. Elle provoque un droutement lorsquelle est excute. Ladresse du point dentre de la routine de traitement du droutement est alors lue dans une table dimplantation prdnie, loprande spcie n slectionnant le numro de lentre dans la table. Ainsi, les seuls points dentre dans des primitives du noyau sont ceux placs dans cette table. Cette table tant protg contre tout accs par un programme usager, on garantit bien la protection du noyau contre les branchements intempestifs.

B.3

Les chiers

1. Quappelle-t-on mthode daccs ? Donnez deux exemples de mthodes avec leurs principales proprits.
Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

67

Rponse On appelle mthode daccs, lensemble des procdures dnies pour accder un chier. On distingue par exemple : la mthode daccs squentielle, qui autorise lire ou crire un chier par blocs de taille variable mais toujours partir du dernier octet lu ou crit ; la mthode daccs direct, qui autorise lire ou crire dans un chier en xant arbitrairement le point de dbut de lecture ou dcriture. 2. Que contient un chier rpertoire ? Rponse Un chier rpertoire assure la correspondance entre le nom symbolique du chier et sa dsignation interne par le noyau (en loccurrence un numro). On peut donc considrer un rpertoire comme une liste de couples (nom symbolique, numro interne). 3. Lorsquun chier existant est lu squentiellement, comment le noyau peut-il optimiser les lectures ? Rponse Lorsquun chier est lu squentiellement, le noyau peut optimiser les lectures de deux faons : dune part, en lisant le chier par blocs de taille xe dans des tampons mmoire du noyau.. Ainsi, mme si le programme usager lit le chier octet par octet, une lecture en mmoire secondaire naura lieu que lorsque tous les octets lus dans un tampon auront t consomms ; dautre part, le noyau peut anticiper les lectures. Il peut dclencher le chargement dans des tampons de plusieurs blocs conscutifs puisque le programme usager lit le chier squentiellement. Cette anticipation permet doptimiser le paralllisme entre lactivit du programme usager et les changes avec la mmoire secondaire.

4. Une opration de fermeture dun chier (primitive close) peut-elle entraner la destruction de ce chier ? Rponse La fermeture dun chier rompt la liaison entre un processus et un chier. Le chier nest pas dtruit tant quil est accessible par un chemin daccs ou ce qui revient au mme tant quil porte un nom prsent dans un rpertoire. La destruction naura donc lieu que si le chier na plus de nom (ce qui est un vnement indpendant de la rupture de liaison). 5. Un processus ouvre un chier en criture et crit des chanes de 10 octets squentiellement dans ce chier. Le noyau utilise un cache mmoire de 1K octets en criture. Le systme sarrte pour cause de coupure de lalimentation lectrique. Expliquez pourquoi certaines critures risquent dtre perdues. Rponse Les critures prsentes dans le cache mmoire mais non encore recopies en mmoire secondaire seront perdues puisque la mmoire centrale est volatile. 6. Expliquez pourquoi lexcution dune primitive read nentrane pas forcment une lecture physique de secteur(s) disque. Rponse Parce quun chier est lu par bloc et quune primitive read peut trs bien ne demander que la lecture de quelques octets. Le contenu dun bloc complet est donc prsent dans un cache mmoire et prt tre lu. Par ailleurs, en cas de mthode daccs squentiel, le noyau lit par avance dans un espace tampon les premiers blocs du chier lors de son ouverture. Lorsque la primitive read sera appele, les donnes lire seront donc dj en mmoire centrale (mcanisme de cache).

Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

68

7. Plusieurs processus peuvent-ils excuter le mme programme en parallle avec des donnes dentre distinctes ? Justiez votre rponse. Rponse Oui, car chaque processus sexcute dans un espace mmoire qui lui est propre. 8. Quelle dirence existe-t-il entre lexcution en mode bloquant et en mode non bloquant de la primitive read ? Rponse En mode bloquant, la primitive read ne se termine que lorsque lopration de lecture a pu tre excute (bien ou mal). En mode non bloquant, lopration est simplement tente immdiatement. Si aucune donne ne peut tre lue, lopration se termine quand mme.

Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

69

Systmes dExploitation Dpartement Informatique et Mathmatiques appliques

70

Bibliographie
[1] Maurice J. Bach. The design of the UNIX operating system. Prentice Hall International, 1986. [2] Coppola, M. and Jgou, Y. and Matthews, B. and Morin, C. and Prieto, L.P. and Sanchez, O.D. and Yand, E.Y. and Yu, H. Virtual Organization Support within a Grid-wide Operating System. IEEE Internet Computing, 12(2) :2028, March 2008. [3] Mel Gorman. Understanding the Linux Virtual Memory Manager. Bruce Perens Open source series. Pearson Education, Inc., 2004. [4] S. E. Madnick. Design strategies for le systems. Technical Report TR-78, Massachusetts Institute of Technology, Cambridge, MA, USA, October 1970. [5] Gary Nutt. Operating system projects using Windows NT. Addison Wesley Longman, Inc., 1999. [6] J-L. Peterson and A. Silberschatz. Operating System Concepts, pages 131187. Addison-Wesley Publishing Company, 1983. [7] Abraham Silberschatz, Peter Baer Galvin, and Greg Gagne. Operating System Concepts, Seventh Edition. John Wiley and Sons, Inc., 2004. [8] A. Tanenbaum. Systmes dexploitation, 2Edition, pages 201279. Pearson Education France, 2003. [9] Andew S. Tanenbaum. Systmes dexploitation, 3-ime Edition. PEARSON Education, 2003.

71

Index
Fichiers dnition, 33 dsignation, 36 destruction, 45 exemple Unix, 39 implantation, 41 mthodes daccs, 34 protection, 36 rpertoire, 41 Interactions vnementielles, 26 par ots de donnes, 27 redirections, 27 Interprteur de commandes, 15, 18 Langage de script, 15 Liaisons dynamiques, 16 ots de donnes, 27 pages la demande, 51 Mcanismes de base, 9 Mmoires virtuelles allocation de pages, 51 couplage, 51 dnition, 48 croulement, 54 pagination, 49 principes, 48 remplacement de pages, 52 segmentation, 49 segmentation-pagination, 50 Paralllisme, 11, 21 threads, 28, 57 Primitives, 10 Principes de conception, 15 Processus commutation, 22 dnition, 22 environnement, 26 tats, 22 oprations, 23 ordonnancement, 24 72 Programme binaire objet excutable, 12 binaire objet r-ditable, 12 format binaire objet, 14 image binaire, 14 notion de, 12 Systme dexploitation dnition, 6, 7 modes dexcution, 9 noyau, 6 protection mmoire, 9 temps partag, 8 tolrance aux fautes, 9 Virtualisation, 16

You might also like