+ All Categories
Home > Documents > Conception de Systemes d Exploitation Ed2 v1

Conception de Systemes d Exploitation Ed2 v1

Date post: 02-Jun-2018
Category:
Upload: sala7eddine
View: 228 times
Download: 0 times
Share this document with a friend

of 699

Transcript
  • 8/10/2019 Conception de Systemes d Exploitation Ed2 v1

    1/698

    Cedocumentestlaproprite

    xclusivedexeromedxeromed([email protected])-17Janvier200921:31

  • 8/10/2019 Conception de Systemes d Exploitation Ed2 v1

    2/698

    Cedocumentestlaproprit

    exclusivedexeromedxeromed([email protected])-17Janvier200921:31

    Conceptiondesystmes

    dexploitation

    Le casLinux

  • 8/10/2019 Conception de Systemes d Exploitation Ed2 v1

    3/698

    Cedocumentestlaproprit

    exclusivedexeromedxeromed([email protected])-17Janvier200921:31

    CHEZ LE MME DITEUR

    C. BLAESS. Scripts sous Linux. Shell Bash, Sed, Awk, Perl, Tcl, Tk, Python, Ruby...

    N11405, 2004, 784 pages.C. BLAESS. Programmation systme en C sous Linux.Signaux, processus, threads, IPC et sockets. N11054, 2000, 960 pages.

    P. FICHEUX. Linux embarqu.N11024, 2002, 326 pages.

    Ouvrages dadministrationB. BOUTHERIN, B. DELAUNAY. Scuriser un rseau Linux, 2e dition.N11445, 2004, 200 pages.

    E. DREYFUS. BSD, 2e dition (coll. Cahiers de lAdmin).N11463, 2004, 300 pages.

    C. HUNT. Serveurs rseau Linux.N11229, 2003, 650 pages.

    V. STANFIELD & R..W. SMITH Guide de ladministrateur Linux.N11263, 2003, 654 pages.

    A. BERLAT, J.-F. BOUCHAUDY, G. GOUBET. Unix Utilisateur.N11319, 2e dition, 2003, 350 pages.

    A. BERLAT, J.-F. BOUCHAUDY, G. GOUBET. Unix Shell.N11147, 2e dition, 2002, 412 pages.

    J.-F. BOUCHAUDY, G. GOUBET. Unix Administration.N11053, 2e dition, 2002, 580 pages.

    J.-F. BOUCHAUDY, G. GOUBET. Linux Administration.N11505, 4e dition 2004, 936 pages.

  • 8/10/2019 Conception de Systemes d Exploitation Ed2 v1

    4/698

    Cedocumentestlaproprit

    exclusivedexeromedxeromed([email protected])-17Janvier200921:31 Conceptionde systmes

    dexploitationLe casLinux

    Patrick Cegielski

    Deuxime dition

  • 8/10/2019 Conception de Systemes d Exploitation Ed2 v1

    5/698

    Cedocumentestlaproprit

    exclusivedexeromedxeromed([email protected])-17Janvier200921:31

    Le code de la proprit intellectuelle du 1er juillet 1992 interdit en effet expressment laphotocopie usage collectif sans autorisation des ayants droit. Or, cette pratique sestgnralise notamment dans les tablissements denseignement, provoquant une baissebrutale des achats de livres, au point que la possibilit mme pour les auteurs de crer desuvres nouvelles et de les faire diter correctement est aujourdhui menace.En application de la loi du 11 mars 1957, il est interdit de reproduire intgralement ou

    partiellement le prsent ouvrage, sur quelque support que ce soit, sans lautorisation de lditeur oudu Centre Franais dexploitation du droit de copie, 20, rue des Grands Augustins, 75006 Paris. Groupe Eyrolles, 2003, 2004, ISBN : 2-212-11479-6

    DITIONS EYROLLES61, bd Saint-Germain75240 Paris Cedex 05

    www.editions-eyrolles.com

    Avec la contribution de Mathieu Ropert, Sbastien Blondeel et Florence Henry.

    http://www.editions-eyrolles.com/http://www.editions-eyrolles.com/
  • 8/10/2019 Conception de Systemes d Exploitation Ed2 v1

    6/698

    Cedocumentestlapropritexclusivedexeromedxeromed(xeromed@hotm

    ail.com)-17Janvier200921:31

    Pour Irne et Marie

  • 8/10/2019 Conception de Systemes d Exploitation Ed2 v1

    7/698

    Cedocumentestlapropritexclusivedexeromedxeromed(xeromed@hotm

    ail.com)-17Janvier200921:31

    Prface

    Le but de ce livre est de faire comprendre comment on conoit un systme dexploitation enillustrant notre propos sur un cas concret dont nous commentons les sources compltement.Le choix sest port tout naturellement sur le premier noyau Linux, ce que nous justifions au

    chapitre3.En prrequis, nous supposons que le lecteur connat la notion de systme dexploitation en tantquutilisateur, pour des systmes dexploitation tels que MS-DOS, Unix, MacOs ou Windows(95, 98, 2000, NT ou XP), un langage dassemblage pour les microprocesseurs Intel 80x86etquil sache programmer en langage C.

    On peut distinguer cinq niveaux de rapports avec un systme dexploitation :

    leniveau utilisateur: le but principal consiste essentiellement charger les logiciels que lon

    veut utiliser et de manipuler quelque peu les fichiers ; on se sert pour cela de linterprteurde commandes (et de ses commandes telles que copy, rename...);

    le niveau administrateur : cela consiste paramtrer le systme et le tenir jour ; il estindispensable pour les systmes dexploitation capables daccueillir plusieurs utilisateurs;

    leniveau criture de scriptspour automatiser certaines squences rptitives de commandes;

    leniveau programmation systme: cette programmation se fait pour Linux en langage C enutilisant lesappels systme;

    leniveau conception du systme, et plus particulirement du noyau.Nous allons nous intresser ici la conception du systme dexploitation, en illustrant nospropos par Linux, plus particulirement par le tout premier noyau 0.01. Lintrt de choisirLinux est que le code est diffus.

    Ce livre na dautre but que de publier en un seul volume les aspects suivants de la conceptiondun systme dexploitation :

    les concepts gnraux sous-jacents limplmentation dun systme dexploitation, tels quon

    les trouve dans[TAN-87]dont nous nous inspirons fortement ; les concepts dun systme dexploitation de type Unix, en suivant le plus possible la norme

    Posix ;

    de la documentation sur le microprocesseur Intel 80386 ; celle-ci exigeant un ouvrage de lataille de celui-ci, nous en supposons connue au moins une partie, celle qui concerne le modedit rel ;

    la documentation sur les contrleurs de priphriques et leur implmentation sur un compa-tible PC, ncessaire la programmation dun systme dexploitation ;

    une prsentation des choix faits pour limplmentation de Linux 0.01, suivie dextraits defichiers sources, reprables facilement par lindication Linux 0.01 situe en marge, puis para-phrass en franais ; ces paraphrases, commenant presque toujours par autrement dit , ne

  • 8/10/2019 Conception de Systemes d Exploitation Ed2 v1

    8/698

    Cedocumentestlapropritexclusivedexeromedxeromed(xeromed@hotm

    ail.com)-17Janvier200921:31

    iv Prface

    sont pas thoriquement indispensables mais sont souvent apprciables ; comme nous lavonsdj dit, tout le source est comment, mme si pour des raisons logiques il est dispers tout

    au long de louvrage.

    Chemin faisant, nous montrons ainsi une mthode pour tudier les sources dautres systmesdexploitation.

    Lindex fait rfrences aux concepts mais aussi tous les noms apparaissant dans les fichierssource, ce qui permet de se rendre directement au commentaire de la partie qui intresse lelecteur.

    Prface la seconde dition

    Dans cette seconde dition, paraissant dix mois aprs la premire, le corps du texte principalna pas chang, part la correction dune coquille. En revanche, chaque chapitre se conclutdsormais par une section volution du noyau renforce, prenant en compte la version 2.6.0de ce dernier. Nous conseillons de lire le livre sans tenir compte de ces sections puis dy revenirdans un deuxime temps.

    Nous expliquons au chapitre3pourquoi il est prfrable, dans un premier temps, de sattacherau tout premier noyau. Je pense que pour les aficionadosdu tout dernier noyau en date, ces

    dernires sections seront utiles.

    Remerciements

    Je tiens remercier tout particulirement MathieuRopert, tudiant de lI.U.T. de Fontaine-bleau en 20012003, pour sa relecture trs attentive du manuscrit.

  • 8/10/2019 Conception de Systemes d Exploitation Ed2 v1

    9/698

    Cedocumentestlapropritexclusivedexeromedxeromed(xeromed@hotm

    ail.com)-17Janvier200921:31

    Table des matiresPrface . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . iii

    PREMIRE PARTIE :

    PRINCIPES DE CONCEPTION DES SYSTMES

    DEXPLOITATION 1

    Chapitre 1 Structure dun systme dexploitation . . 31 Les trois grandes fonctions. . . . . . . . . . . . . . . . . . . . . . . 3

    1.1 Chargement des programmes . . . . . . . . . . . . . . . 31.2 Le systme dexploitation en tant que

    machine virtuelle . . . . . . . . . . . . . . . . . . . . . . . . . . 41.3 Le systme dexploitation en tant que

    gestionnaire de ressources . . . . . . . . . . . . . . . . . . 42 Caractristiques dun systme dexploitation. . . . . . . 5

    2.1 Systmes multi-tches . . . . . . . . . . . . . . . . . . . . . 52.2 Systmes multi-utilisateurs . . . . . . . . . . . . . . . . . 73 Structure externe dun systme dexploitation. . . . . . 9

    3.1 Noyau et utilitaires . . . . . . . . . . . . . . . . . . . . . . . . 93.2 Le gestionnaire de tches . . . . . . . . . . . . . . . . . . 93.3 Le gestionnaire de mmoire . . . . . . . . . . . . . . . . 93.4 Le gestionnaire de fichiers . . . . . . . . . . . . . . . . . . 93.5 Le gestionnaire de priphriques . . . . . . . . . . . . 103.6 Le chargeur du systme dexploitation . . . . . . . 103.7 Linterprteur de commandes . . . . . . . . . . . . . . . 10

    4 Structure interne dun systme dexploitation. . . . . . 104.1 Les systmes monolithiques . . . . . . . . . . . . . . . . 114.2 Systmes modes noyau et utilisateur . . . . . . 114.3 Systmes couches . . . . . . . . . . . . . . . . . . . . . . . 114.4 Systmes micro-noyau . . . . . . . . . . . . . . . . . . . 124.5 Systmes modules . . . . . . . . . . . . . . . . . . . . . . . 13

    5 Mise en uvre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145.1 Les appels systme . . . . . . . . . . . . . . . . . . . . . . . . 145.2 Les signaux . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . 14

    Chapitre 2 Principe de traitement des entres-

    sorties . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . 151 Principe du matriel dentre-sortie. . . . . . . . . . . . . . . 15

    1.1 Les priphriques dentre-sortie . . . . . . . . . . . . 151.2 Les contrleurs de priphriques . . . . . . . . . . . . 161.3 Transferts synchrones et asynchrones . . . . . . . 171.4 Priphriques partags et ddis . . . . . . . . . . . . 18

    2 Principe des logiciels dentre-sortie . . . . . . . . . . . . . . 182.1 Objectifs des logiciels des entres-sorties . . . . 18

    2.2 Les pilotes de priphriques . . . . . . . . . . . . . . . . 192.3 Logiciel dentre-sortie indpendant du

    matriel . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . 192.4 Logiciels dentre-sortie faisant partie de

    lespace de lutilisateur . . . . . . . . . . . . . . . . . . . . 21

    Chapitre 3 Le systme Linux tudi . . . . . . . . . . . . . . . 231 Le systme Linux tudier. . . . . . . . . . . . . . . . . . . . . . . 231.1 Noyau et distribution . . . . . . . . . . . . . . . . . . . . . . 231.2 Noyau minimal . . . . . . . . . . . . . . . . . . . . . . . . .. . . 231.3 Obtention des sources . . . . . . . . . . . . . . . . . . . . . 241.4 Programmation Linux . . . . . . . . . . . . . . . . . . . . . 241.5 Versions du noyau Linux . . . . . . . . . . . . . . . . . . . 24

    2 Les sources du noyau 0.01. . . . . . . . . . . . . . . . . . . . . . . 252.1 Vue densemble sur larborescence . . . . . . . . . . 252.2 Larborescence dtaille . . . . . . . . . . . . . . . . . . . . 25

    3 Vue densemble sur limplmentation . . . . . . . . . . . . . 323.1 Caractristiques . . . . . . . . . . . . . . . . . . . . . . . .. . . 323.2 tapes de limplmentation . . . . . . . . . . . . . . . . 32

    4 volution du noyau . . . . . . . . . . . . . . . . . . . . . . . . .. . . . 344.1 Cas du noyau 2.4.18 . . . . . . . . . . . . . . . . . . . . . . . 344.2 Aide au parcours du code source . . . . . . . . . . . 354.3 Cas du noyau 2.6.0 . . . . . . . . . . . . . . . . . . . . .. . . 35

    DEUXIME PARTIE :

    UTILISATION DU MICRO-PROCESSEUR

    INTEL 37

    Chapitre 4 Prise en compte de la mmoire Intel . . . 391 La segmentation sous Intel. . . . . . . . . . . . . . . . . . . . . . . 39

    1.1 Notion . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . 391.2 La segmentation en mode protg sur Intel . . 39

    2 La segmentation sous Linux . . . . . . . . . . . . . . . . . . . . . . 452.1 Mode noyau et mode utilisateur . . . . . . . . . . . . 452.2 Segmentation en mode noyau . . . . . . . . . . . . . . 462.3 Accs la mmoire vive . . . . . . . . . . . . . . . . . . . 50

    3 volution du noyau . . . . . . . . . . . . . . . . . . . . . . . . .. . . . 513.1 Prise en compte dautres micro-processeurs . . 513.2 Accs la mmoire vive . . . . . . . . . . . . . . . . . . . 523.3 Utilisation de la segmentation . . . . . . . . . . . . . . 52

    Chapitre 5 Adaptation des entres-sorties et des

    interruptions Intel . . . . . . . . . . . . . . . . . . . . . 551 Accs aux ports dentre-sortie. . . . . . . . . . . . . . . . . . . 55

  • 8/10/2019 Conception de Systemes d Exploitation Ed2 v1

    10/698

    Cedocumentestlapropri

    texclusivedexeromedxeromed(xeromed@hotm

    ail.com)-17Janvier200921:31

    vi Table des matires

    1.1 Accs aux ports dentre-sortie sous 80x86 . . 551.2 Encapsulation des accs aux ports dentre-

    sortie sous Linux . . . . . . . . . . . . . . . . . . . . . . . .. . 552 Les interruptions sous Linux . . . . . . . . . . . . . . . . . . . . . 56

    2.1 Rappels sur les vecteurs dinterruption dIntel 56

    2.2 Adaptations sous Linux . . . . . . . . . . . . . . . . . . . . 603 Initialisation des exceptions. . . . . . . . . . . . . . . . . . . . .. 61

    3.1 Initialisation provisoire . . . . . . . . . . . . . . . . . . . . . 613.2 Initialisation dfinitive . . . . . . . . . . . . . . . . . . . . . 62

    4 Initialisation des interruptions matrielles. . . . . . . . . . 64

    4.1 Un problme de conception . . . . . . . . . . . . . . . . 644.2 Contrleur dinterruptions programmable . . . . 654.3 Programmation des registres de contrle

    dinitialisation du PIC . . . . . . . . . . . . . . . . . . . . . 664.4 Programmation des registres de contrle

    des oprations du PIC . . . . . . . . . . . . . . . . . . . . . 684.5 Reprogrammation du PIC dans le cas de

    Linux . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . 70

    4.6 Gestionnaires des interruptions matrielles . . . 714.7 Manipulation des interruptions matrielles . . . 725 Initialisation de linterruption logicielle. . . . . . . . . . . . 726 volution du noyau . . . . . . . . . . . . . . . . . . . . .. . . . . . . . 73

    6.1 Accs aux ports dentre-sortie . . . . . . . . . . . . . 736.2 Insertion des portes dinterruption . . . . . . . . . . 736.3 Initialisation des exceptions . . . . . . . . . . . . . . . . 746.4 Initialisation des interruptions matrielles . . . . 766.5 Manipulation des interruptions matrielles

    . . . 76

    TROISIME PARTIE :

    LES GRANDES STRUCTURES

    DE DONNES 79

    Chapitre 6 Les structures de donnes concernant

    les processus . . . . . . . . . . . . . . . . . . . . . . . . . . 811 Descripteur de processus. . . . . . . . . . . . . . . . . . . . . . . . . 81

    1.1 Structure du descripteur de processus . . . . . . . 811.2 Aspects structurels . . . . . . . . . . . . . . . . . . . . . . . . 821.3 tat dun processus . . . . . . . . . . . . . . . . . . . . . . . 821.4 Priorit dun processus . . . . . . . . . . . . . . . . . . . . 831.5 Signaux . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . 841.6 Code de statut . . . . . . . . . . . . . . . . . . . . . . . . . .. . 851.7 Espace dadressage . . . . . . . . . . . . . . . . . . . . . . . . 851.8 Identificateurs du processus . . . . . . . . . . . . . . . . 851.9 Hirarchie des processus . . . . . . . . . . . . . . . . . . . 861.10 Propritaire dun processus . . . . . . . . . . . . . . . . . 871.11 Informations temporelles . . . . . . . . . . . . . . . . . . . 881.12 Utilisation du coprocesseur mathmatique . . . 89

    1.13 Informations sur les fichiers utiliss . . . . . . . . . 891.14 Table locale de descripteurs . . . . . . . . . . . . . . . . 90

    1.15 Segment dtat de tche . . . . . . . . . . . . . . . . . . . 902 Tche initiale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 943 Table des processus. . . . . . . . . . . . . . . . . . . . . . . . . . . .. 97

    3.1 Stockage des descripteurs de processus . . . . . . 983.2 Implmentation de la table des processus . . . . 993.3 Reprage dun descripteur de processus . . . . . 993.4 La tche en cours . . . . . . . . . . . . . . . . . . . . . . . .. 99

    4 volution du noyau . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 100

    4.1 Structure du descripteur de processus . . . . . . . 1004.2 Table des processus . . . . . . . . . . . . . . . . . . . . . . . 102

    Chapitre 7 Description du systme de fichiers . . . . . 1031 tude gnrale . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . 103

    1.1 Notion de fichiers . . . . . . . . . . . . . . . . . . . . . . . .. 1031.2 Gestion des fichiers . . . . . . . . . . . . . . . . . . . . . . .. 1041.3 Les fichiers du point de vue utilisateur . . . . . . 1041.4 La conception des systmes de fichiers . . . . . . 106

    2 Caractristiques dun fichier . . . . . . . . . . . . . . . . . . . . . . 1092.1 Types de fichiers . . . . . . . . . . . . . . . . . . . . . . . . .. 1092.2 Droits daccs dun fichier sous Unix . . . . . . . 1102.3 Mode dun fichier sous Unix . . . . . . . . . . . . . . . 111

    3 Notion de tampon de disque dur . . . . . . . . . . . . . . . . . 1114 Structure dun disqueMinix . . . . . . . . . . . . . . . . . . . . . 112

    4.1 Bloc sous Minixet Linux . . . . . . . . . . . . . . . . . 1124.2 Structure gnrale dun disqueMinix . . . . . . . 112

    4.3 Les nuds dinformation sur disque . . . . . . . . . 1134.4 Le super bloc . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 1155 Systme de fichiers Minixcharg en mmoire. . . . . 116

    5.1 Antmmoire . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 1165.2 Les descripteurs de nud dinformation . . . . . 1195.3 Table des super-blocs. . . . . . . . . . . . . . . . . . . . . . 1215.4 Les descripteurs de fichiers . . . . . . . . . . . . . . . . . 122

    6 Fichiers de priphriques. . . . . . . . . . . . . . . . . . . . . . . . . 123

    6.1 Caractristiques . . . . . . . . . . . . . . . . . . . . . . . . . .. 1236.2 Reprage des fichiers de priphriques . . . . . . 1247 volution du noyau . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 124

    7.1 Prise en charge de plusieurs systmes de

    fichiers . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . 1247.2 Cas de Posix . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1257.3 Systme de fichiers virtuel . . . . . . . . . . . . . . . . . 1257.4 Super-bloc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1267.5 Nud dinformation . . . . . . . . . . . . . . . . . . . . . . . 1287.6 Descripteur de fichier . . . . . . . . . . . . . . . . . . . . . . 1297.7 Rpertoire . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . 1307.8 Types de fichiers . . . . . . . . . . . . . . . . . . . . . . . . .. 131

  • 8/10/2019 Conception de Systemes d Exploitation Ed2 v1

    11/698

    Cedocumentestlapropri

    texclusivedexeromedxeromed(xeromed@hotm

    ail.com)-17Janvier200921:31

    Table des matires vii

    7.9 Dclaration dun systme de fichiers . . . . . . . . 1317.10 Descripteur de tampon . . . . . . . . . . . . . . . . . . . . 131

    Chapitre 8 Les terminaux sous Linux . . . . . . . . . . . . . . 1331 Les terminaux. . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . 133

    1.1 Notion de terminal . . . . . . . . . . . . . . . . . . . . . . . . 1331.2 Les terminaux du point de vue matriel . . . . . 1331.3 Le pilote de terminal . . . . . . . . . . . . . . . . . . . . . . 1391.4 Les diffrents terminaux et les normes . . . . . . . 1391.5 Modlisation en voies de communication . . . . 140

    2 Paramtrage des voies de communication. . . . . . . . . 140

    2.1 Principe . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . 1402.2 La structure de paramtrisation . . . . . . . . . . . . 1412.3 Paramtrage des modes dentre . . . . . . . . . . . 1412.4 Paramtrage des modes de sortie . . . . . . . . . . . 1432.5 Le tableau des caractres de contrle . . . . . . . 1452.6 Paramtrage des modes locaux . . . . . . . . . . . . . 1482.7 Paramtrages des modes de contrle . . . . . . . . 150

    3 Implmentation des voies de communication. . . . . . . 151

    3.1 Implmentation dun tampon dentre oude sortie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1513.2 Implmentation des voies de communication . 153

    4 Implmentation du terminal . . . . . . . . . . . . . . . . . . . . . . 1544.1 Dfinition du terminal . . . . . . . . . . . . . . . . . . . . . 1544.2 Les caractres de contrle. . . . . . . . . . . . . . . . . . 1554.3 Caractristiques de la console . . . . . . . . . . . . . . 1554.4 Caractristiques des liaisons srie . . . . . . . . . . . 1564.5 Les tampons du terminal . . . . . . . . . . . . . . . . . . 156

    5 volution du noyau . . . . . . . . . . . . . . . . . . . . . . . . .. . . . 156

    QUATRIME PARTIE :

    ASPECT DYNAMIQUE SANS AFFICHAGE 163

    Chapitre 9 Implmentation des appels systme

    sous Linux . . . . . . . . . . . . . . . . . . . . . . . . .. . . . 1651 Principe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165

    1.1 Dfinition des appels systme . . . . . . . . . . . . . . 1651.2 Notion de code derreur . . . . . . . . . . . . . . . . . . . 1681.3 Insertion et excution des appels systme . . . . 1691.4 Fonction dappel . . . . . . . . . . . . . . . . . . . . . . . . . . 171

    2 Liste des codes derreur . . . . . . . . . . . . . . . . . . . . . . . . . 1723 Liste des appels systme . . . . . . . . . . . . . . . . . . . . . . . . . 1744 volution du noyau . . . . . . . . . . . . . . . . . . . . . . . . .. . . . 178

    Chapitre 10 Mesure du temps sous Linux . . . . . . . . . . . 1891 Les horloges. . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . 189

    1.1 Le matriel de lhorloge . . . . . . . . . . . . . . . . . . . . 1901.2 Le logiciel des horloges . . . . . . . . . . . . . . . . . . . . 191

    2 Horloges matrielles des PC . . . . . . . . . . . . . . . . . . . . . . 194

    2.1 Lhorloge temps rel des PC . . . . . . . . . . . . . . . 1942.2 Minuteur priodique programmable . . . . . . . . . 196

    3 Programmation du minuteur sous Linux. . . . . . . . . . . 1983.1 Initialisation du minuteur . . . . . . . . . . . . . . . . . . 1993.2 Variable de sauvegarde du temps . . . . . . . . . . . 1993.3 Gestionnaire de linterruption dhorloge . . . . . . 1993.4 La comptabilisation du processus en cours . . . 200

    4 Maintien de la date et de lheure sous Linux . . . . . . . 2014.1 Variable structure de conservation du temps 201

    4.2 Initialisation de la variable structure . . . . . . . 202

    5 volution du noyau . . . . . . . . . . . . . . . . . . . . . . . . .. . . . 204Chapitre 11 Le gestionnaire des tches . . . . . . . . . . . . . 209

    1 Commutation de processus. . . . . . . . . . . . . . . . . . . . . . 2091.1 Notion gnrale . . . . . . . . . . . . . . . . . . . . . . . .. . . 2091.2 Gestion du coprocesseur arithmtique . . . . . . . 2091.3 Cas de Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209

    2 Ordonnancement des processus . . . . . . . . . . . . . . . . . . 2102.1 Politique dordonnancement . . . . . . . . . . . . . . . . 211

    2.2 Algorithme dordonnancement . . . . . . . . . . . . . . 2123 Initialisation du gestionnaire des tches. . . . . . . . . . . 2154 volution du noyau . . . . . . . . . . . . . . . . . . . . . . . . .. . . . 215

    Chapitre 12 Les signaux sous Linux . . . . . . . . . . . . . . . . . 2211 Notion gnrale de signal. . . . . . . . . . . . . . . . . . . . .. . . 2212 Liste et signification des signaux . . . . . . . . . . . . . . . . . 2213 Vue densemble de manipulation des signaux. . . . . . 2234 Implmentation des deux appels systme. . . . . . . . . . 224

    4.1 Implmentation de lappel systme denvoidun signal . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . 2244.2 Implmentation de lappel systme de

    droutement . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . 2255 Implmentation du traitement des signaux . . . . . . . . 2256 Fonction de gestion de signal par dfaut . . . . . . . . . . 2277 volution du noyau . . . . . . . . . . . . . . . . . . . . . . . . .. . . . 227

    CINQUIME PARTIE :

    AFFICHAGE 231

    Chapitre 13 Le pilote dcran sous Linux . . . . . . . . . . . . 2331 Affichage brut. . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . 233

    1.1 Rappels sur laffichage texte sur lIBM-PC . . . 2331.2 Implmentation sous Linux . . . . . . . . . . . . . . . . . 234

    2 Notion daffichage structur . . . . . . . . . . . . . . . . . . . . . 2372.1 Principe du logiciel daffichage structur . . . . 2372.2 Cas de Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238

    3 Les suites dchappement ECMA-48. . . . . . . . . . . . . . 2383.1 Syntaxe . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . 2383.2 Smantique . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . 239

  • 8/10/2019 Conception de Systemes d Exploitation Ed2 v1

    12/698

    Cedocumentestlapropri

    texclusivedexeromedxeromed(xeromed@hotm

    ail.com)-17Janvier200921:31

    viii Table des matires

    4 Le pilote dcran sous Linux. . . . . . . . . . . . . . . . . . . . . 2404.1 Prise en compte des caractristiques

    ECMA-48 . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . 2404.2 Fonction dcriture sur la console . . . . . . . . . . . 2414.3 Traitement des cas spciaux . . . . . . . . . . . . . . . 245

    5 volution du noyau . . . . . . . . . . . . . . . . . . . . .. . . . . . . . 2545.1 Affichage graphique et affichage console . . . . 2545.2 Caractristiques de lcran . . . . . . . . . . . . . . . . . 2545.3 Les consoles . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . 259

    Chapitre 14 Laffichage des caractres sous Linux . . . 263

    1 Traitement des caractres. . . . . . . . . . . . . . . . . . . . . . . . 2631.1 Les caractres . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2631.2 Classification primaire des caractres . . . . . . . . 2631.3 Fonctions de classification des caractres . . . . 2641.4 Fonctions de conversion . . . . . . . . . . . . . . . . . . . 265

    2 criture sur une voie de communication . . . . . . . . . . . 2662.1 Description . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . 2662.2 Implmentation . . . . . . . . . . . . . . . . . . . . . . . . .. . 266

    2.3 Attente du vidage du tampon dcriture . . . . . 2672.4 Traitement des processus en attente . . . . . . . . 2683 volution du noyau . . . . . . . . . . . . . . . . . . . . .. . . . . . . . 269

    3.1 Traitement des caractres . . . . . . . . . . . . . . . . . . 2693.2 criture sur une voie de communication . . . . . 269

    Chapitre 15 Laffichage format du noyau . . . . . . . . . . 2731 Nombre variable darguments . . . . . . . . . . . . . . . . . . . . 273

    1.1 Lapport du C standard . . . . . . . . . . . . . . . . . . . . 2731.2 Implmentation de stdarg.hsous Linux

    . . 274

    2 Formatage . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . 2752.1 La fonctionsprintf() . . . . . . . . . . . . . . . . . . 2752.2 Structure des formats . . . . . . . . . . . . . . . . . . . . . 2752.3 Le cas de Linux 0.01 . . . . . . . . . . . . . . . . . . . . . . 2772.4 Implmentation de vsprintf()sous Linux 277

    2.5 Les fonctions auxiliaires . . . . . . . . . . . . . . . . . . . . 2803 La fonctionprintk() . . . . . . . . . . . . . . . . . . . . . . . . . 2834 La fonctionpanic(). . . . . . . . . . . . . . . . . . . . . . . .. . 2845 volution du noyau . . . . . . . . . . . . . . . . . . . . .. . . . . . . . 284

    SIXIME PARTIE :

    ASPECT DYNAMIQUE AVEC AFFICHAGE 289

    Chapitre 16 Gestionnaires des exceptions . . . . . . . . . . . 2911 Traitement des exceptions sous Linux. . . . . . . . . . . . . 2912 Structure gnrale des routines . . . . . . . . . . . . . . . . . . . 292

    2.1 Dfinitions des gestionnaires . . . . . . . . . . . . . . . 2922.2 Structure dun gestionnaire . . . . . . . . . . . . . . . . 2922.3 Les fonctions de traitement du code derreur 293

    2.4 Les fonctions C des gestionnaires par dfaut . 294

    2.5 Les macros auxiliaires . . . . . . . . . . . . . . . . . . . . . 2963 La routine int3() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296

    4 La routine device_not_available() . . . . . . 2974.1 La routine principale . . . . . . . . . . . . . . . . . . . . . . 2974.2 La fonctionmath_state_restore() . . 298

    5 volution du noyau . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 298

    Chapitre 17 Mmoire virtuelle sous Linux . . . . . . . . . . . 3011 tude gnrale . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . 301

    1.1 Mmoire virtuelle . . . . . . . . . . . . . . . . . . . . . . . . . 3011.2 Mise en place de la mmoire virtuelle . . . . . . . 301

    2 Pagination . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . 3022.1 Notion . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . 3022.2 Pagination plusieurs niveaux . . . . . . . . . . . . . . 3022.3 Protection . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . 304

    3 La pagination sous Intel 80386 . . . . . . . . . . . . . . . . . 3043.1 Taille des pages . . . . . . . . . . . . . . . . . . . . . . . . . .. 3043.2 Structure des entres des tables . . . . . . . . . . . . 3053.3 Activation de la pagination. . . . . . . . . . . . . . . . . 3063.4 Structure dune adresse virtuelle . . . . . . . . . . . . 3063.5 Mcanisme de protection matrielle . . . . . . . . . 306

    4 La pagination sous Linux . . . . . . . . . . . . . . . . . . . . . . .. 3064.1 Mise en place des lments . . . . . . . . . . . . . . . . 3064.2 Initialisation de la pagination . . . . . . . . . . . . . . . 3074.3 Zone fixe et zone de mmoire dynamique . . . . 3084.4 Structures de gestion des tables de pages . . . . 3094.5 Obtention dun cadre de page libre . . . . . . . . . 310

    4.6 Libration dun cadre de page . . . . . . . . . . . . . . 3115 Traitement de lexception de dfaut de page . . . . . . . 311

    5.1 Le code principal . . . . . . . . . . . . . . . . . . . . . . . . .. 3125.2 Exception dessai dcriture sur une page en

    lecture seule . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . 3135.3 Exception de page non prsente . . . . . . . . . . . . 314

    6 volution du noyau . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 315

    SEPTIME PARTIE :FICHIERS RGULIERS 325

    Chapitre 18 Le pilote du disque dur . . . . . . . . . . . . . . . . 3271 Gomtrie des disques durs. . . . . . . . . . . . . . . . . . . . . . 327

    1.1 Description gnrale . . . . . . . . . . . . . . . . . . . . . . . 3271.2 Prise en charge par Linux . . . . . . . . . . . . . . . . . . 328

    2 Le contrleur de disque dur IDE . . . . . . . . . . . . . . . . . . 3302.1 Les registres IDE . . . . . . . . . . . . . . . . . . . . . . . . .. 3302.2 Les commandes du contrleur IDE . . . . . . . . . . 334

    3 Prise en charge du contrleur par Linux. . . . . . . . . . . 3413.1 Constantes lies au contrleur . . . . . . . . . . . . . . 341

  • 8/10/2019 Conception de Systemes d Exploitation Ed2 v1

    13/698

    Cedocumentestlapropri

    texclusivedexeromedxeromed(xeromed@hotm

    ail.com)-17Janvier200921:31

    Table des matires ix

    3.2 Routine dinterruption matrielle du disque

    dur . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . 342

    3.3 Passage des commandes . . . . . . . . . . . . . . . . . . . 3443.4 Fonction dattente du contrleur . . . . . . . . . . . 3453.5 Rcupration des erreurs . . . . . . . . . . . . . . . . . . . 345

    4 Partitionnement du disque dur. . . . . . . . . . . . . . . . . . . 3464.1 Un choix dIBM . . . . . . . . . . . . . . . . . . . . . . .. . . . 3464.2 Utilisation par Linux . . . . . . . . . . . . . . . . . . . . . . . 348

    5 Requtes un disque dur. . . . . . . . . . . . . . . . . . . . . . . . 3485.1 Notion de requte . . . . . . . . . . . . . . . . . . . . . . . . . 348

    5.2 Structure des requtes . . . . . . . . . . . . . . . . . . . . . 3485.3 Tableau des listes de requtes . . . . . . . . . . . . . . 3495.4 Initialisation du disque dur . . . . . . . . . . . . . . . . . 3495.5 Requte de lecture ou dcriture . . . . . . . . . . . . 3505.6 Gestion des tampons . . . . . . . . . . . . . . . . . . . . . . 3515.7 Ajout dune requte . . . . . . . . . . . . . . . . . . . . . . . 3535.8 Traitement des requtes . . . . . . . . . . . . . . . . . . . 3555.9 Le gestionnaire dinterruption en cas

    dcriture . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . 3565.10 Rinitialisation du disque dur . . . . . . . . . . . . . . . 3575.11 Le gestionnaire dinterruption en cas de

    lecture . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . 3596 Pilote du disque dur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3597 volution du noyau . . . . . . . . . . . . . . . . . . . . . . . . .. . . . 360

    7.1 Priphriques bloc. . . . . . . . . . . . . . . . . . . . . . . . . 3607.2 Gomtrie dun disque dur . . . . . . . . . . . . . . . . . 3637.3 Initialisation dun disque dur traditionnel . . . . 3637.4 Contrleur de disque dur . . . . . . . . . . . . . . . . . . . 3667.5 Interruption matrielle dun disque dur . . . . . . 3687.6 Passage des commandes . . . . . . . . . . . . . . . . . . . 3697.7 Partitionnement des disques durs . . . . . . . . . . . 3697.8 Requtes un disque dur . . . . . . . . . . . . . . . . . . 370

    Chapitre 19 Gestion de lantmmoire . . . . . . . . . . . . . . 3731 Description des fonctions. . . . . . . . . . . . . . . . . . . . . . . . 373

    1.1 Gestion des listes de tampons . . . . . . . . . . . . . . 3731.2 Fonctions daccs aux tampons . . . . . . . . . . . . . 3741.3 Rcriture des tampons modifis . . . . . . . . . . . 374

    2 Implmentation des fonctions de gestion de listes. . 3742.1 Fonctions de hachage . . . . . . . . . . . . . . . . . . . . . 3742.2 Insertion dans les listes . . . . . . . . . . . . . . . . . . . . 3742.3 Suppression des listes . . . . . . . . . . . . . . . . . . . . . . 3752.4 Recherche dun descripteur de tampon . . . . . . 375

    3 Rcriture sur un disque donn . . . . . . . . . . . . . . . . . . . 3764 Les fonctions de manipulation des tampons . . . . . . . 376

    4.1 Relchement dun tampon . . . . . . . . . . . . . . . . . 3764.2 Dtermination dun descripteur de tampon . . 377

    4.3 Cration dun descripteur de tampon . . . . . . . . 3774.4 Lecture dun tampon . . . . . . . . . . . . . . . . . . . . . . 379

    5 volution du noyau . . . . . . . . . . . . . . . . . . . . . . . . .. . . . 379Chapitre 20 Les priphriques bloc . . . . . . . . . . . . . . . . . 385

    1 Vue densemble . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3852 Accs bas niveau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386

    2.1 Dtermination des priphriques bloc . . . . . . . 3862.2 Table des pilotes de bas niveau . . . . . . . . . . . . . 3872.3 Fonction daccs bas niveau . . . . . . . . . . . . . . 387

    3 Les fonctions de lecture et dcriture de bloc . . . . . . 3883.1 Fonction dcriture . . . . . . . . . . . . . . . . . . . . .. . . 3883.2 Fonction de lecture . . . . . . . . . . . . . . . . . . . . .. . . 389

    4 volution du noyau . . . . . . . . . . . . . . . . . . . . . . . . .. . . . 391

    Chapitre 21 Gestion des nuds dinformation . . . . . . . 3951 Chargement dun super-bloc. . . . . . . . . . . . . . . . . . . . . 3952 Gestion des tables de bits des donnes. . . . . . . . . . . . 395

    2.1 Recherche dun bloc de donnes libre . . . . . . . 395

    2.2 Macros auxiliaires . . . . . . . . . . . . . . . . . . . . . .. . . 3972.3 Libration dun bloc de donnes . . . . . . . . . . . . 3983 Les fonctions internes des nuds dinformation. . . . 399

    3.1 Verrouillage dun descripteur de nud . . . . . . 3993.2 Dverrouillage dun descripteur de nud . . . . 3993.3 Fonction dattente de dverrouillage . . . . . . . . 4003.4 criture dun nud dinformation sur disque . 4003.5 Lecture dun nud dinformation sur disque . 401

    4 Gestion des blocs sur noeud dinformation . . . . . . . . . 4024.1 Dtermination du numro de bloc physique . . 4024.2 Agrgation dun bloc physique . . . . . . . . . . . . . 4024.3 Implmentation de la fonction auxiliaire . . . . . 403

    5 Mise zro dun nud dinformation sur disque. . . 4055.1 Mise zro dun bloc dindirection simple . . . 4055.2 Mise zro dun bloc dindirection double . . . 4065.3 Implmentation . . . . . . . . . . . . . . . . . . . . . . . .. . . 407

    6 Fonctions de service des nuds dinformation . . . . . 4076.1 Synchronisation des nuds dinformation . . . . 4086.2 Recherche dun nouveau descripteur de

    nud dinformation . . . . . . . . . . . . . . . . . . . . . . . 4086.3 Remplissage dune zone de mmoire . . . . . . . . 4096.4 Libration dun nud dinformation en

    table des bits . . . . . . . . . . . . . . . . . . . . . . . . .. . . . 4106.5 Relchement dun nud dinformation . . . . . . 4116.6 Recherche dun nud dinformation libre

    sur disque . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . 4126.7 Chargement dun nud dinformation . . . . . . . 413

    7 volution du noyau . . . . . . . . . . . . . . . . . . . . . . . . .. . . . 414

  • 8/10/2019 Conception de Systemes d Exploitation Ed2 v1

    14/698

    Cedocumentestlapropri

    texclusivedexeromedxeromed(xeromed@hotm

    ail.com)-17Janvier200921:31

    x Table des matires

    Chapitre 22 Gestion interne des fichiers rguliers

    et des rpertoires . . . . . . . . . . . . . . . . . . . . .. 419

    1 Montage dun systme de fichiers . . . . . . . . . . . . . . . . 4191.1 Chargement dun super-bloc . . . . . . . . . . . . . . . 4191.2 Initialisation du systme de fichiers . . . . . . . . . 4211.3 Lecture de la table des partitions . . . . . . . . . . . 422

    2 Gestion des rpertoires. . . . . . . . . . . . . . . . . . . . . . . .. . 4232.1 tude gnrale des rpertoires . . . . . . . . . . . . . . 4232.2 Les fichiers rpertoire sous Linux . . . . . . . . . . . 4272.3 Fonctions internes de gestion des rpertoires . 428

    3 Gestion interne des fichiers rguliers. . . . . . . . . . . . . . 4333.1 Gestion des noms de fichiers . . . . . . . . . . . . . . . 4333.2 Lecture et criture dans un fichier rgulier . . . 438

    4 volution du noyau . . . . . . . . . . . . . . . . . . . . .. . . . . . . . 4404.1 Montage dun systme de fichiers . . . . . . . . . . . 4414.2 Gestion des rpertoires et des fichiers . . . . . . . 444

    HUITIME PARTIE :

    PRIPHRIQUES CARACTRE 449Chapitre 23 Le clavier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451

    1 Principe du logiciel de lecture au clavier. . . . . . . . . . . 4511.1 Modes brut et structur . . . . . . . . . . . . . . . . . . . 4511.2 Tampon de lecture . . . . . . . . . . . . . . . . . . . . . . . . 4511.3 Quelques problmes pour le pilote . . . . . . . . . . 453

    2 Interface du clavier sur lIBM-PC . . . . . . . . . . . . . . . . . 4532.1 Aspect physique . . . . . . . . . . . . . . . . . . . . . . . . . . 453

    2.2 Make-code et break-code . . . . . . . . . . . . . . . . . . 4542.3 Les registres du contrleur de clavier . . . . . . . . 4542.4 Principe de lecture des scan codes . . . . . . . . . . 4572.5 Le port61h . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . 457

    3 Principe du traitement du clavier sous Linux. . . . . . . 4573.1 Le gestionnaire du clavier . . . . . . . . . . . . . . . . . . 4583.2 Initialisation du gestionnaire de clavier . . . . . . 4583.3 Grandes tapes du gestionnaire de clavier . . . 458

    4 Traitement du mode donnes brutes. . . . . . . . . . . . . .

    459

    4.1 Grandes tapes . . . . . . . . . . . . . . . . . . . . . . . . . . . 4594.2 Dtermination de la fonction de traitement . . 4604.3 Cas des touches prfixielles. . . . . . . . . . . . . . . . . 4614.4 Cas dune touche normale . . . . . . . . . . . . . . . . . 4634.5 Les touches de dplacement du curseur . . . . . 4664.6 Les touches de fonction . . . . . . . . . . . . . . . . . . . . 4674.7 La touche moins . . . . . . . . . . . . . . . . . . . . . . . .. . 4684.8 Mise en tampon brut du clavier . . . . . . . . . . . . 468

    5 Traitement du mode structur . . . . . . . . . . . . . . . . . . . 4695.1 Appel . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . 4695.2 Passage du tampon brut au tampon structur 470

    6 volution du noyau . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 472

    Chapitre 24 Les liaisons srie . . . . . . . . . . . . . . . . . . . . . . . 4771 tude gnrale . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . 477

    1.1 Communication srie asynchrone . . . . . . . . . . . 4771.2 Communication srie synchrone . . . . . . . . . . . . 4821.3 Le standard dinterface srie RS-232 . . . . . . . . 484

    2 LUART PC16550D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4842.1 Le brochage . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . 4852.2 Lensemble de registres . . . . . . . . . . . . . . . . . . . . 4852.3 Programmation de lUART . . . . . . . . . . . . . . . . 489

    3 Cas de Linux. . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . 4893.1 Initialisation des liaisons srie . . . . . . . . . . . . . . 4893.2 Gestionnaires dinterruption . . . . . . . . . . . . . . . . 491

    4 volution du noyau . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 495

    Chapitre 25 Les priphriques caractre . . . . . . . . . . . . 5011 Fonctions de lecture/criture . . . . . . . . . . . . . . . . . . . . . 501

    1.1 Fonction daccs de haut niveau . . . . . . . . . . . . 5011.2 Fonctions daccs de bas niveau . . . . . . . . . . . . 501

    1.3 Implmentation de la fonction daccs dehaut niveau . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . 502

    2 Fonctions daccs de bas niveau des terminaux . . . . 5032.1 Cas dun terminal quelconque . . . . . . . . . . . . . . 5032.2 Cas du terminal en cours . . . . . . . . . . . . . . . . . . 503

    3 volution du noyau . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 503

    NEUVIME PARTIE :

    COMMUNICATION PAR TUBES 507

    Chapitre 26 Communication par tubes sous Linux . . . 5091 tude gnrale . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . 509

    1.1 Notion . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . 5091.2 Types de tubes de communication . . . . . . . . . . 510

    2 Gestion interne sous Linux. . . . . . . . . . . . . . . . . . . . . . . 5102.1 Descripteur de nud dinformation dun tube 510

    2.2 Oprations dentre-sortie . . . . . . . . . . . . . . . . . . 511

    3 volution du noyau . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 513

    DIXIME PARTIE :

    LE MODE UTILISATEUR 517

    Chapitre 27 Appels systme du systme de fichiers . 5191 Points de vue utilisateur et programmeur. . . . . . . . . . 519

    1.1 Les fichiers du point de vue utilisateur . . . . . . 5191.2 Les fichiers du point de vue du programmeur 521

    2 Entres-sorties Unixsur fichier . . . . . . . . . . . . . . . . . . 5222.1 Ouverture et fermeture de fichiers . . . . . . . . . . 5222.2 Lecture et criture de donnes . . . . . . . . . . . . . . 525

  • 8/10/2019 Conception de Systemes d Exploitation Ed2 v1

    15/698

    Cedocumentestlapropritexclusivedexeromedxeromed([email protected])-17Janvier200921:31

    Table des matires xi

    2.3 Positionnement dans un fichier . . . . . . . . . . . . . 5282.4 Sauvegarde des donnes modifies . . . . . . . . . . 529

    3 Implmentation Linux des entres-sorties. . . . . . . . . . 5293.1 Appel systme douverture . . . . . . . . . . . . . . . . . 5293.2 Appel systme de cration . . . . . . . . . . . . . . . . . 5333.3 Appel systme de fermeture . . . . . . . . . . . . . . . . 5343.4 Appel systme de lecture des donnes . . . . . . . 5343.5 Appel systme dcriture des donnes . . . . . . . 5373.6 Appel systme de positionnement . . . . . . . . . . . 5383.7 Appel systme de sauvegarde des donnes . . . 539

    4 Liens et fichiers partags . . . . . . . . . . . . . . . . . . . . . . . . 5394.1 tude gnrale . . . . . . . . . . . . . . . . . . . . . . . .. . . . 5394.2 Cration de liens symboliques sous Unix . . . . 5414.3 Implmentation sous Linux . . . . . . . . . . . . . . . . . 542

    5 Manipulations des fichiers . . . . . . . . . . . . . . . . . . . . . . . 5445.1 Les appels systme Unix . . . . . . . . . . . . . . . . . . 5445.2 Implmentation sous Linux . . . . . . . . . . . . . . . . . 546

    6 Gestion des rpertoires. . . . . . . . . . . . . . . . . . . . . . . . . . 5506.1 Les appels systme Unix . . . . . . . . . . . . . . . . . . 5506.2 Implmentation . . . . . . . . . . . . . . . . . . . . . . .. . . . 552

    7 Autres appels systme . . . . . . . . . . . . . . . . . . . . . . . . . . . 5587.1 Duplication de descripteur dentre-sortie . . . . 5587.2 Rcupration des attributs des fichiers . . . . . . 5597.3 Dates associes aux fichiers . . . . . . . . . . . . . . . . 5627.4 Proprits des fichiers ouverts . . . . . . . . . . . . . . 5637.5 Montage et dmontage de systmes de

    fichiers . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . 5658 volution du noyau . . . . . . . . . . . . . . . . . . . . . . . . .. . . . 566

    Chapitre 28 Appels systme concernant les

    processus . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . 5691 Cration des processus . . . . . . . . . . . . . . . . . . . . . . . . . . 569

    1.1 Description des appels systme . . . . . . . . . . . . . 5691.2 Implmentation de fork() . . . . . . . . . . . . . . . 5721.3 Le format dexcutablea.out . . . . . . . . . . . . . 5771.4 Implmentation de execve() . . . . . . . . . . . . 583

    2 Gestion des attributs. . . . . . . . . . . . . . . . . . . . . . . .. . . . 5922.1 Description des appels systme . . . . . . . . . . . . . 5922.2 Implmentation . . . . . . . . . . . . . . . . . . . . . . .. . . . 593

    3 Gestion des groupes et des sessions de processus . . . 5943.1 Description des appels systme . . . . . . . . . . . . . 5943.2 Implmentation . . . . . . . . . . . . . . . . . . . . . . .. . . . 595

    4 Terminaison du processus en cours. . . . . . . . . . . . . . . 5964.1 Description de lappel systme . . . . . . . . . . . . . 5964.2 Implmentation . . . . . . . . . . . . . . . . . . . . . . .. . . . 597

    5 Attente de la fin dun processus fils . . . . . . . . . . . . . . . 6005.1 Les appels systme . . . . . . . . . . . . . . . . . . . . . . . . 600

    5.2 Implmentation . . . . . . . . . . . . . . . . . . . . . . . .. . . 6016 Autres appels systme . . . . . . . . . . . . . . . . . . . . . . . . . . . 603

    6.1 Lappel systme break() . . . . . . . . . . . . . . . . 6036.2 Lappel systme acct() . . . . . . . . . . . . . . . . . . 603

    7 volution du noyau . . . . . . . . . . . . . . . . . . . . . . . . . .. . . 603

    Chapitre 29 Les autres appels systme sous Linux . . . 6091 Appels systme de mesure du temps. . . . . . . . . . . . . . 609

    1.1 Liste . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . 6091.2 Implmentation . . . . . . . . . . . . . . . . . . . . . . . .. . . 610

    2 Appels systme lis lordonnancement . . . . . . . . . . . 611

    2.1 Priorit des processus. . . . . . . . . . . . . . . . . . . . . . 6112.2 Contrle de lexcution dun processus . . . . . . 612

    3 Appels systme concernant les signaux . . . . . . . . . . . . 6123.1 mission dun signal . . . . . . . . . . . . . . . . . . . . . . . 6123.2 Droutement dun signal . . . . . . . . . . . . . . . . . . . 6133.3 Attente dun signal . . . . . . . . . . . . . . . . . . . . .. . . 614

    4 Appels systme concernant les priphriques. . . . . . . 6154.1 Cration dun fichier spcial . . . . . . . . . . . . . . . . 6154.2 Oprations de contrle dun priphrique

    . . . . 616

    5 Appels systme concernant la mmoire. . . . . . . . . . . . 6185.1 Structure de la mmoire utilisateur . . . . . . . . . 6185.2 Changement de la taille du segment des

    donnes . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . 6195.3 Accs une adresse physique . . . . . . . . . . . . . . 620

    6 Tubes de communication. . . . . . . . . . . . . . . . . . . . .. . . 6206.1 Description . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . 6206.2 Implmentation . . . . . . . . . . . . . . . . . . . . . . . .. . . 621

    7 Autres appels systme . . . . . . . . . . . . . . . . . . . . . . . . . . . 6228 volution du noyau . . . . . . . . . . . . . . . . . . . . . . . . . .. . . 623

    Chapitre 30 Fonctions de la bibliothque C . . . . . . . . . 6251 La fonctionprintf() . . . . . . . . . . . . . . . . . . . . . . . . . 625

    1.1 Description . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . 6251.2 Implmentation . . . . . . . . . . . . . . . . . . . . . . . .. . . 625

    2 Fonction concernant les signaux. . . . . . . . . . . . . . . . . . 6262.1 Description . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . 6262.2 Implmentation . . . . . . . . . . . . . . . . . . . . . . . .. . . 626

    3 Fonctions sur les chanes de caractres . . . . . . . . . . . . 6264 volution du noyau . . . . . . . . . . . . . . . . . . . . . . . . . .. . . 631

    ONZIME PARTIE :

    DMARRAGE DU SYSTME 633

    Chapitre 31 Dmarrage du systme Linux . . . . . . . . . . 6351 Source et grandes tapes . . . . . . . . . . . . . . . . . . . . .. . . 635

    1.1 Fichiers sources concerns . . . . . . . . . . . . . . . . . 6351.2 Dbut de lamorage . . . . . . . . . . . . . . . . . . . . . . 635

    2 Le chargeur damorage . . . . . . . . . . . . . . . . . . . . . .. . . 636

  • 8/10/2019 Conception de Systemes d Exploitation Ed2 v1

    16/698

    Cedocumentestlapropritexclusivedexeromedxeromed([email protected])-17Janvier200921:31

    xii Table des matires

    2.1 Les grandes tapes . . . . . . . . . . . . . . . . . . . . . . . . 6362.2 Transfert du code damorage . . . . . . . . . . . . . . 637

    2.3 Configuration de la pile en mode rel . . . . . . . 6372.4 Affichage dun message de chargement . . . . . . 6382.5 Chargement de limage du noyau . . . . . . . . . . . 638

    3 Passage au mode protg . . . . . . . . . . . . . . . . . . . . . . . . 6423.1 Les grandes tapes . . . . . . . . . . . . . . . . . . . . . . . . 6423.2 Sauvegarde de la position du curseur

    graphique . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . 6433.3 Inhibition des interruptions matrielles . . . . . . 6433.4 Transfert du code du systme

    . . . . . . . . . . . . . . 643

    3.5 Chargement de tables provisoires de

    descripteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6443.6 Activation de la broche A20 . . . . . . . . . . . . . . . 6443.7 Reprogrammation du PIC . . . . . . . . . . . . . . . . . . 6453.8 Passage au mode protg . . . . . . . . . . . . . . . . . . 645

    4 La fonctionstartup_32(). . . . . . . . . . . . . . . . . . . 6454.1 Les grandes tapes . . . . . . . . . . . . . . . . . . . . . . . . 6454.2 Initialisation des registres de segmentation . . . 6464.3 Configuration de la pile en mode noyau . . . . . 646

    4.4 Initialisation provisoire de la table des

    interruptions . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . 646

    4.5 Initialisation de la table globale desdescripteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647

    4.6 Valeurs finales des registres de segment de

    donnes et de pile . . . . . . . . . . . . . . . . . . . . . . . .. 6484.7 Vrification de lactivation de la broche A20 649

    4.8 Vrification de la prsence du coprocesseur

    arithmtique . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . 6494.9 Mise en place de la pagination . . . . . . . . . . . . . 6494.10 Passage la fonctionstart_kernel()

    . . 649

    5 La fonctionstart_kernel() . . . . . . . . . . . . . . . . 6505.1 Les grandes tapes . . . . . . . . . . . . . . . . . . . . . . .. 6505.2 Initialisation du terminal . . . . . . . . . . . . . . . . . . . 6515.3 Passage au mode utilisateur . . . . . . . . . . . . . . . . 6525.4 Le processus 1 : init . . . . . . . . . . . . . . . . . . . . . . . 653

    6 volution du noyau . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 654

    Bibliographie . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . 659

    Index . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . 669

  • 8/10/2019 Conception de Systemes d Exploitation Ed2 v1

    17/698

    Cedocumentestlapropritexclusivedexeromedxeromed([email protected])-17Janvier200921:31

    Table des figures1.1 Processus . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . 61.2 Minix. . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . 12

    4.1 Segmentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404.2 Slection. . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . 44

    4.3 Choix dun descripteur . . . . . . . . . . . . . . . . . . . . . . . . . 45

    6.1 Structure du TSS. . . . . . . . . . . . . . . . . . . . . . . . .. . . . 916.2 Sauvegarde de ltat du coprocesseur arithmtique 93

    6.3 Stockage du descripteur et de la pile noyau. . . . . . 98

    7.1 Arborescence de fichiers . . . . . . . . . . . . . . . . . . . . . . . 1067.2 Liste chane et table de bits. . . . . . . . . . . . . . . . . . . 107

    7.3 Systme de fichiersMinix

    . . . . . . . . . . . . . . . . . . . . . 112

    8.1 Un des premiers terminaux. . . . . . . . . . . . . . . . . . . . . 1348.2 Le terminal M40. . . . . . . . . . . . . . . . . . . . . . .. . . . . . . 1358.3 Classification des terminaux. . . . . . . . . . . . . . . . . . . . 1358.4 Terminal RS-232. . . . . . . . . . . . . . . . . . . . . . .. . . . . . . 1368.5 Terminal mapp en mmoire. . . . . . . . . . . . . . . . . . . 1388.6 cran de lIBM-PC . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139

    8.7 Gestion dune voie de communication. . . . . . . . . . . 1408.8 Caractres de contrle dUnix . . . . . . . . . . . . . . . . . 145

    10.1 Horloge programmable. . . . . . . . . . . . . . . . . . . . . . . . . 19010.2 Maintien de lheure courante. . . . . . . . . . . . . . . . . . . 19110.3 Traitement des alarmes. . . . . . . . . . . . . . . . . . . . .. . . 193

    13.1 Caractres ASCII modifis . . . . . . . . . . . . . . . . . . . . . . 235

    17.1 Pagination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30317.2 Table de pages deux niveaux . . . . . . . . . . . . . . . . . 304

    20.1 Priphrique bloc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385

    22.1 CP/M. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42522.2 MS-DOS. . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . 42622.3 Unix. . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . 427

    22.4 Rpertoire. . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . 42823.1 Tampon de caractres. . . . . . . . . . . . . . . . . . . . . .. . . 45223.2 Scan codes. . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . 455

    24.1 Niveaux logiques. . . . . . . . . . . . . . . . . . . . . . . . . .. . . . 47824.2 Port srie simple. . . . . . . . . . . . . . . . . . . . . . . . . .. . . . 47924.3 Rception . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . 48124.4 Synchronisation. . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . 482

    26.1 Tube de communication. . . . . . . . . . . . . . . . . . . . . . . 509

  • 8/10/2019 Conception de Systemes d Exploitation Ed2 v1

    18/698

    Cedocumentestlapropritexclusivedexeromedxeromed([email protected])-17Janvier200921:31

  • 8/10/2019 Conception de Systemes d Exploitation Ed2 v1

    19/698

    Cedocumentestlapropritexclusivedexeromedxeromed([email protected])-17Janvier200921:31

    Premire partie

    Principes de conception des systmesdexploitation

  • 8/10/2019 Conception de Systemes d Exploitation Ed2 v1

    20/698

    Cedocumentestlapropritexclusivedexeromedxeromed([email protected])-17Janvier200921:31

  • 8/10/2019 Conception de Systemes d Exploitation Ed2 v1

    21/698

  • 8/10/2019 Conception de Systemes d Exploitation Ed2 v1

    22/698

    Cedocumentestlapropritexclusivedexeromedxeromed([email protected])-17Janvier200921:31

    4 Premire partie : Principes de conception des systmes dexploitation

    Les micro-ordinateurs furent ensuite, en option, fournis avec un systme dexploitation. Celui-ci, contenu sur disquette ou en mmoire RAM, affichait une invite lcran. On pouvait alors

    remplacer la disquette systme de dmarrage par une disquette contenant le programme d-sir : en crivant le nom du programme sur la ligne de commande et en appuyant sur la toucheRetour, le programme tait charg et excut. la fin de lexcution de ce programme, onpouvait charger un nouveau programme, sans devoir redmarrer le systme. Ceci permet, parexemple, dcrire un texte avec un traitement de texte puis dappeler un autre programmepour limprimer.

    1.2 Le systme dexploitation en tant que machine virtuelle

    La gestion dun systme informatique donn, par exemple lIBM-PC, se faita priori en lan-Notion dAPIgage machine. Ceci est primaire et lourd grer pour la plupart des ordinateurs, en particulieren ce qui concerne les entres-sorties. Bien peu de programmes seraient dvelopps si chaqueprogrammeur devait connatre le fonctionnement, par exemple, de tel ou tel disque dur ettoutes les erreurs qui peuvent apparatre lors de la lecture dun bloc. Il a donc fallu trouverun moyen de librer les programmeurs de la complexit du matriel. Cela consiste enrober lematriel avec une couche de logiciel qui gre lensemble du systme. Il faut prsenter au pro-grammeur uneAPI (pour langlaisApplication Programming interface, interface de program-

    mation dapplication), ce qui correspond une machine virtuelle plus facile comprendreet programmer.

    Considrons par exemple la programmation des entres-sorties des disques durs au moyen duCas dudisque durcontrleur IDE utilis sur lIBM-PC.

    Nous verrons au chapitre 18 que le contrleur IDE possde 8 commandes principales quiconsistent toutes charger entre 1 et 5 octets dans ses registres. Ces commandes permettentde lire et dcrire des donnes, de dplacer le bras du disque, de formater le disque ainsi que

    dinitialiser, de tester, de restaurer et de recalibrer le contrleur et les disques.Les commandes fondamentales sont la lecture et lcriture, chacune demandant sept para-mtres regroups dans six octets. Ces paramtres spcifient les lments tels que ladressedu premier secteur lire ou crire, le nombre de secteurs lire ou crire, ou si lon doitessayer de corriger les erreurs. la fin de lopration, le contrleur retourne 14 champs dtatet derreur regroups dans 7 octets.

    La plupart des programmeurs ne veulent pas se soucier de la programmation des disques durs.Ils veulent une abstraction simple de haut niveau : considrer par exemple que le disque

    contient des fichiers nomms; chaque fichier peut tre ouvert en lecture ou en criture ; ilsera lu ou crit, et finalement ferm. La partie machine virtuelledes systmes dexploitationsoustrait le matriel au regard du programmeur et offre une vue simple et agrable de fichiersnomms qui peuvent tre lus et crits.

    1.3 Le systme dexploitation en tant que gestionnaire de ressources

    Les ordinateurs modernes se composent de processeurs, de mmoires, dhorloges, de disques,

    de moniteurs, dinterfaces rseau, dimprimantes, et dautres priphriques qui peuvent treutiliss par plusieurs utilisateurs en mme temps. Le travail du systme dexploitation consiste

  • 8/10/2019 Conception de Systemes d Exploitation Ed2 v1

    23/698

    Cedocumentestlapropritexclusivedexeromedxeromed([email protected])-17Janvier200921:31

    Chapitre 1. Structure dun systme dexploitation 5

    ordonner et contrler lallocation des processeurs, des mmoires et des priphriques entreles diffrents programmes qui y font appel.

    Imaginez ce qui se produirait si trois programmes qui sexcutent sur un ordinateur essayaientsimultanment dimprimer leurs rsultats sur la mme imprimante. Les premires lignes impri-mes pourraient provenir du programme 1, les suivantes du programme 2, puis du programme3 et ainsi de suite. Il en rsulterait le dsordre le plus total. Le systme dexploitation peutviter ce chaos potentiel en transfrant les rsultats imprimer dans un fichier tampon surle disque. Lorsquune impression se termine, le systme dexploitation peut alors imprimer undes fichiers se trouvant dans le tampon. Simultanment, un autre programme peut continuer gnrer des rsultats sans se rendre compte quil ne les envoie pas (encore) limprimante.

    2 Caractristiques dun systme dexploitation

    2.1 Systmes multi-tches

    La plupart des systmes dexploitation modernes permettent lexcution de plusieurs tches la fois : un ordinateur peut, pendant quil excute le programme dun utilisateur, lire lesdonnes dun disque ou afficher des rsultats sur un terminal ou une imprimante. On parle desystme dexploitation multi-tches ou multi-programmdans ce cas.

    Processus

    La notion fondamentale des systmes dexploitation multi-tches est celle de processus. Lanotion de programme ne suffit pas. Rien nempche que le mme programme soit excutplusieurs fois en mme temps : on peut vouloir, par exemple, deux fentres emacs ou deuxfentres gvpour comparer des textes.

    Un processusest une instance de programme en train de sexcuter.

    Un processus est reprsent par un programme (le code), mais galement par ses donnes etpar les paramtres indiquant o il en est, lui permettant ainsi de continuer sil est interrompu(pile dexcution, compteur ordinal...). On parle de lenvironnement du programme.

    Un processus sappelle aussitche(tasken anglais) dans le cas de Linux. Linux

    Temps partag

    La plupart des systmes dexploitation multi-tches sont implments sur un ordinateur ayant

    un seul micro-processeur. Celui-ci, un instant donn, nexcute rellement quun seul pro-gramme, mais le systme peut le faire passer dun programme un autre en excutant chaqueprogramme pendant quelques dizaines de millisecondes ; ceci donne aux utilisateurs limpres-sion que tous les programmes sont excuts en mme temps. On parle alors de systme temps partag.

    Certains qualifient depseudo-paralllismecette commutation trs rapide du processeur dunprogramme un autre, pour la diffrencier du vrai paralllisme qui se produit au niveau dumatriel lorsque le processeur travaille en mme temps que certains priphriques dentre-

    sortie.

  • 8/10/2019 Conception de Systemes d Exploitation Ed2 v1

    24/698

    Cedocumentestlapropr

    itexclusivedexeromedxeromed([email protected])-17Janvier200921:31

    6 Premire partie : Principes de conception des systmes dexploitation

    Abstraction du droulement

    Conceptuellement, chaque processus a son propre processeur virtuel. Bien sr, le vrai pro-

    cesseur commute entre plusieurs processus. Mais, pour bien comprendre le systme, il est pr-frable de penser un ensemble de processus qui sexcutent en (pseudo-) paralllisme pluttqu lallocation du processeur entre diffrents processus. Cette commutation rapide est appe-lemulti-programmation.

    La figure 1.1 ([TAN-87], p. 56) montre quatre processus sexcutant en mme temps. La fi-gure (b) prsente une abstraction de cette situation. Les quatre programmes deviennent quatreprocessus indpendants disposant chacun de leur propre contrle de flux (cest--dire leurcompteur ordinal). la figure (c), on peut constater que, sur un intervalle de temps assez

    grand, tous les processus ont progress, mais qu un instant donn, il ny a quun seul proces-sus actif.

    Figure 1.1 : Processus

    Variables denvironnement

    Comme nous lavons dj dit, la donne du programme est insuffisante pour la dterminationdun processus. Il faut lui indiquer toute une srie de variables denvironnement : les fi-chiers sur lesquels il opre, o en est le compteur ordinal, etc. Ces variables denvironnementsont ncessaires pour deux raisons :

    La premire est que deux processus peuvent utiliser le mme code (deux fentres emacsparexemple) mais les fichiers concerns peuvent tre diffrents, le compteur ordinal ne pas entre au mme endroit...

    La seconde est due au caractre multi-tches, trait par pseudo-paralllisme. Priodique-ment, le systme dexploitation dcide dinterrompre un processus en cours afin de dmarrerlexcution dun autre processus. Lorsquun processus est temporairement suspendu de cettemanire, il doit pouvoir retrouver plus tard exactement ltat dans lequel il se trouvait au

    moment de sa suspension. Il faut donc que toutes les informations dont il a besoin soientsauvegardes quelque part pendant sa mise en attente. Sil possde, par exemple, plusieursfichiers ouverts, les positions dans ces fichiers doivent tre mmorises.

  • 8/10/2019 Conception de Systemes d Exploitation Ed2 v1

    25/698

    Cedocumentestlapropritexclusivedexeromedxeromed(xeromed@ho

    tmail.com)-17Janvier200921:31

    Chapitre 1. Structure dun systme dexploitation 7

    La liste des variables denvironnement dpend du systme dexploitation en question, et mmede sa version. Elle se trouve dans le descripteur du processus (en anglais process descrip-

    tor).

    Espace mmoire dun processus

    Dans de nombreux systmes dexploitation, chaque processus possde son propre espace m-moire, non accessible aux autres processus. On parle de lespace dadressage du processus.

    Incidence sur le traitement des dures

    Puisque le processeur commute entre les processus, la vitesse dexcution dun processus ne

    sera pas uniforme et variera vraisemblablement si les mmes processus sont excuts nou-veau. Il ne faut donc pas que les processus fassent une quelconque prsomption sur le facteurtemps.

    Considrons le cas dun processus dentre-sortie qui met en marche le moteur dun lecteur dedisquettes, excute 1 000 fois une boucle pour que la vitesse de la disquette se stabilise, puisdemande la lecture du premier enregistrement. Si le processeur a aussi t allou un autreprocessus pendant lexcution de la boucle, le processus dentre-sortie risque dtre ractivtrop tard, cest--dire aprs le passage du premier enregistrement devant la tte de lecture.

    Lorsquun processus a besoin de mesurer des dures avec prcision, cest--dire lorsque certainsvnements doivent absolument se produire au bout de quelques millisecondes, il faut prendredes mesures particulires pour sen assurer. On utilise alors des minuteurs, comme nous leverrons.

    Cependant, la plupart des processus ne sont pas affects par la multi-programmation du pro-cesseur et par les diffrences de vitesse dexcution qui existent entre eux.

    2.2 Systmes multi-utilisateurs

    Un systme multi-utilisateursest capable dexcuter de faon (pseudo-) concurrente etindpendante des applications appartenant plusieurs utilisateurs.

    Concurrente signifie que les applications peuvent tre actives au mme moment et se dis-puter laccs diffrentes ressources comme le processeur, la mmoire, les disques durs... Indpendante signifie que chaque application peut raliser son travail sans se proccuperde ce que font les applications des autres utilisateurs.

    Un systme multi-utilisateurs est ncessairement multi-tches mais la rciproque est fausse : lesystme dexploitation MS-DOS est mono-utilisateur et mono-tche ; les systmes MacOS 6.1et Windows 3.1 sont mono-utilisateurs mais multi-tches ; Unix et Windows NT sont multi-utilisateurs.

    Mise en place

    Comme pour les systmes multi-tches, la multi-utilisation est mule en attribuant des lapsde temps chaque utilisateur. Naturellement, le fait de basculer dune application lautreralentit chacune dentre elles et affecte le temps de rponse peru par les utilisateurs.

  • 8/10/2019 Conception de Systemes d Exploitation Ed2 v1

    26/698

    Cedocumentestlapropritexclusivedexeromedxeromed(xeromed@ho

    tmail.com)-17Janvier200921:31

    8 Premire partie : Principes de conception des systmes dexploitation

    Mcanismes associs

    Lorsquils permettent la multi-utilisation, les systmes dexploitation doivent prvoir un cer-

    tain nombre de mcanismes : unmcanisme dauthentificationpermettant de vrifier lidentit de lutilisateur ;

    un mcanisme de protection contre les programmes utilisateur errons, qui pourraientbloquer les autres applications en cours dexcution sur le systme, ou mal intentionns, quipourraient perturber ou espionner les activits des autres utilisateurs ;

    un mcanisme de comptabilit pour limiter le volume des ressources alloues chaqueutilisateur.

    Utilisateurs

    Dans un systme multi-utilisateurs, chaque utilisateur possde un espace priv sur la machine :gnralement, il possde un certain quota de lespace disque pour enregistrer ses fichiers, ilreoit des courriers lectroniques privs, etc. Le systme dexploitation doit assurer que lapartie prive de lespace dun utilisateur ne puisse tre visible que par son propritaire. Il doit,en particulier, assurer quaucun utilisateur ne puisse utiliser une application du systme dansle but de violer lespace priv dun autre utilisateur.

    Chaque utilisateur est identifi par un numro unique, appel l identifiant de lutilisateur,ou UID (pour langlais User IDentifier). En gnral, seul un nombre limit de personnes estautoris utiliser un systme informatique. Lorsque lun de ces utilisateurs commence unesession de travail, le systme dexploitation lui demande un nom dutilisateuret un motde passe. Si lutilisateur ne rpond pas par des informations valides, laccs lui est refus.

    Groupe dutilisateurs

    Pour pouvoir partager de faon slective le matriel avec dautres, chaque utilisateur peut tre

    membre dun ou de plusieurs groupes dutilisateurs. Un groupe est galement identifi parun numro unique dnomm identifiant de groupe, ou GID (pour langlais Group IDenti-fier). Par exemple, chaque fichier est associ un et un seul groupe. Sous Unix, il est possiblepar exemple de limiter laccs en lecture et en criture au seul possesseur dun fichier, en lec-ture au groupe, et dinterdire tout accs aux autres utilisateurs.

    Super-utilisateur

    Un systme dexploitation multi-utilisateurs prvoit un utilisateur particulier appel super-

    utilisateurou superviseur(rooten anglais). Ladministrateurdu systme doit se connec-ter en temps que super-utilisateur pour grer les comptesdes utilisateurs et raliser les tchesde maintenance telles que les sauvegardes et les mises jour des programmes. Le super-utilisateur peut faire pratiquement nimporte quoi dans la mesure o le systme dexploitationne lui applique jamais les mcanismes de protection, ceux-ci ne concernant que les autres uti-lisateurs, appels utilisateurs ordinaires. Le super-utilisateur peut, en particulier, accder tous les fichiers du systme et interfrer sur lactivit de nimporte quel processus en coursdexcution. Il ne peut pas, en revanche, accder aux ports dentre-sortie qui nont pas t

    prvus par le noyau, comme nous le verrons.

  • 8/10/2019 Conception de Systemes d Exploitation Ed2 v1

    27/698

  • 8/10/2019 Conception de Systemes d Exploitation Ed2 v1

    28/698

    Cedocumentestlapropritexclusivedexeromedxeromed(xeromed@ho

    tmail.com)-17Janvier200921:31

    10 Premire partie : Principes de conception des systmes dexploitation

    3.5 Le gestionnaire de priphriques

    Le contrle des priphriques dentre-sortie (E/S) de lordinateur est lune des fonctions pri-

    mordiales dun systme dexploitation. Ce dernier doit envoyer les commandes aux priph-riques, intercepter les interruptions, et traiter les erreurs. Il doit aussi fournir une interfacesimple et facile demploi entre les priphriques et le reste du systme qui doit tre, dans lamesure du possible, la mme pour tous les priphriques, cest--dire indpendante du pri-phrique utilis. Le code des entres-sorties reprsente une part importante de lensemble dunsystme dexploitation.

    De nombreux systmes dexploitation offrent un niveau dabstraction qui permet aux utilisa-teurs de raliser des entres-sorties sans entrer dans le dtail du matriel. Ce niveau dabs-traction fait apparatre chaque priphrique comme un fichier spcial, qui permettent detraiter les priphriques dentre-sortie comme des fichiers. Cest le cas dUnix. Dans ce cas,on appellefichier rguliertout fichier situ en mmoire de masse.

    3.6 Le chargeur du systme dexploitation

    En gnral, de nos jours, lorsque lordinateur (compatible PC ou Mac) est mis sous tension, ilexcute un logiciel appel BIOS (pour Basic Input Output System) plac une adresse bien

    dtermine et contenu en mmoire RAM. Ce logiciel initialise les priphriques, charge unsecteur dun disque, et excute ce qui y est plac. Lors de la conception dun systme dexploi-tation, on place sur ce secteur lechargeurdu systme dexploitation ou, plus exactement, lechargeur du chargeur du systme dexploitation (ou pr-chargeur) puisque le contenu dunsecteur est insuffisant pour le chargeur lui-mme.

    La conception du chargeur et du pr-chargeur est indispensable, mme si ceux-ci ne font pasexplicitement partie du systme dexploitation.

    3.7 Linterprteur de commandes

    Le systme dexploitation proprement dit est le code qui permet de dfinir les appels systme.Les programmes systme tels que les diteurs de texte, les compilateurs, les assembleurs, lesditeurs de liens et les interprteurs de commandes ne font pas partie du systme dexploi-tation. Cependant linterprteur de commandes (shell en anglais) est souvent considrcomme en faisant partie.

    Sous sa forme la plus rudimentaire, linterprteur de commandes excute une boucle infinie quiaffiche une invite (montrant par l que lon attend quelque chose), lit le nom du programmesaisi par lutilisateur ce moment-l et lexcute.

    4 Structure interne dun systme dexploitation

    Aprs avoir examin un systme dexploitation de lextrieur (du point de vue de linterfaceprsente lutilisateur et au programmeur), nous allons examiner son fonctionnement interne.

    Ch i 1 S d d l i i 11

  • 8/10/2019 Conception de Systemes d Exploitation Ed2 v1

    29/698

    Cedocumentestlapropritexclusivedexeromedxeromed(xeromed@ho

    tmail.com)-17Janvier200921:31

    Chapitre 1. Structure dun systme dexploitation 11

    4.1 Les systmes monolithiques

    Andrew Tanenbaumappellesystme monolithique(dun seul bloc) un systme dexploita-

    tion qui est une collection de procdures, chacune pouvant tout moment appeler nimportequelle autre procdure, en remarquant que cest lorganisation (plutt chaotique) la plus r-pandue.

    Pour construire le code objet du systme dexploitation, il faut compiler toutes les procdures,ou les fichiers qui les contiennent, puis les runir au moyen dun diteur de liens. Dans unsystme monolithique, il ny a aucun masquage de linformation : chaque procdure est visiblede toutes les autres, par opposition aux structures constitues de modules ou dunits de pro-grammes et dans lesquelles les informations sont locales aux modules et o il existe des points

    de passage obligs pour accder aux modules.

    MS-DOS est un exemple dun tel systme.

    4.2 Systmes modes noyau et utilisateur

    Dans beaucoup de systmes dexploitation, il existe deux modes : lemode noyauet lemodeutilisateur. Le systme dexploitation dmarre en mode noyau, ce qui permet dinitialiser lespriphriques et de mettre en place les routines de service pour les appels systme, et commuteensuite en mode utilisateur. En mode utilisateur, on ne peut pas avoir accs directement auxpriphriques : on doit utiliser ce quon appelle des appels systme pour avoir accs cequi a t prvu par le systme : le noyau reoit cet appel systme, vrifie quil sagit dunedemande valable (en particulier du point de vue des droits daccs), lexcute, puis renvoieau mode utilisateur. Le mode noyau ne peut tre chang que par une compilation du noyau;mme le super-utilisateur agit en mode utilisateur.

    Unix et Windows (tout au moins depuis Windows 95) sont de tels systmes. Ceci explique

    pourquoi on ne peut pas tout programmer sur un tel systme.Les micro-processeurs modernes aident la mise en place de tels systmes. Cest lorigine Aidedu mode protg des micro-processeurs dIntel depuis le 80286 : il existe plusieurs niveauxde privilges avec une vrification matrielle, et non plus seulement logicielle, des rgles depassage dun niveau lautre.

    4.3 Systmes couches

    Les systmes prcdents peuvent tre considrs comme des systmes deux couches et tregnraliss en systmes plusieurs couches : chaque couche sappuie sur celle qui lui est im-mdiatement infrieure.

    Le premier systme utiliser cette technique a t le systme THE dvelopp au TechnischeHogeschool dEindhoven (do son nom) aux Pays-Bas par Diskstra(1968) et ses lves. Lesystme dexploitation Multics, lorigine dUnix, tait aussi un systme couches.

    Le systme dexploitation Minix de Tanenbaum, schmatis sur la figure 1.2 ([TAN-87],p.100), qui inspira Linux, est un systme quatre couches :

    La couche 1, la plus basse, traite les interruptions et les droutements (trapsen anglais) etfournit aux couches du dessus un modle constitu de processus squentiels indpendants qui

    12 Premire partie : Principes de conception des systmes dexploitation

  • 8/10/2019 Conception de Systemes d Exploitation Ed2 v1

    30/698

    Cedocumentestlaprop

    ritexclusivedexeromedxeromed([email protected])-17Janvier200921:31

    12 Premire partie : Principes de conception des systmes d exploitation

    Figure 1.2 : Minix

    communiquent au moyen de messages. Le code de cette couche a deux fonctions majeures :la premire est le traitement des interruptions et des droutements ; la deuxime est lie aumcanisme des messages. La partie de cette couche qui traite des interruptions est crite enlangage dassemblage; les autres fonctions de la couche, ainsi que les couches suprieures,sont crites en langage C.

    La couche 2 contient les pilotes de priphriques (device drivers en anglais), un par type

    de priphrique (disque, horloge, terminal...). Elle contient de plus une tche particulire, latche systme.Toutes les tches de la couche 2 et tout le code de la couche 1 ne forment quun seul pro-gramme binaire, appel le noyau (kernelen anglais). Les tches de la couche 2 sont tota-lement indpendantes bien quelles fassent partie dun mme programme objet : elles sontslectionnes indpendamment les unes des autres et communiquent par envoi de messages.Elles sont regroupes en un seul code binaire pour faciliter lintgration de Minix desmachines deux modes.

    La couche 3 renferme deux gestionnaires qui fournissent des services aux processus des utili-sateurs. Legestionnaire de mmoire(MMpour langlais Memory Manager) traite tousles appels systme de Minix, tels que fork(), exec() et brk(), qui concernent la gestionde la mmoire. Lesystme de fichiers(FSpour langlaisFile System) se charge des appelssystme du systme de fichiers, tels que read(), mount()et chdir().

    La couche 4 contient enfin tous les processus des utilisateurs : interprteurs de commandes,diteurs de texte, compilateurs, et programmes crits par les utilisateurs.

    Linux sinspirera de cette division en couches, bien quon ny trouve officiellement que deux

    couches : le mode noyau et le mode utilisateur.

    4.4 Systmes micro-noyau

    Les systmes dexploitation base de micro-noyau ne possdent que quelques fonctions, engnral quelques primitives de synchronisation, un gestionnaire des tches simple, et un m-canisme de communication entre processus. Des processus systme sexcutent au-dessus dumicro-noyau pour implmenter les autres fonctions dun systme dexploitation, comme lallo-

    cation mmoire, les gestionnaires de priphriques, les gestionnaires dappels systme, etc.Le systme dexploitation Amoeba de Tanenbaum fut lun des premiers systmes micro-noyau.

    Chapitre 1 Structure dun systme dexploitation 13

  • 8/10/2019 Conception de Systemes d Exploitation Ed2 v1

    31/698

    Cedocumentestlaprop

    ritexclusivedexeromedxeromed([email protected])-17Janvier200921:31

    Chapitre 1. Structure d un systme d exploitation 13

    Ce type de systmes dexploitation promettait beaucoup ; malheureusement ils se sont rvlsplus lents que les systmes monolithiques, du fait du cot des passages de messages entre les

    diffrentes couches du systme dexploitation.Pourtant, les micro-noyaux prsentent des avantages thoriques sur les systmes monoli-thiques. Ils ncessitent par exemple de la part de leurs concepteurs une approche modulaire,dans la mesure o chaque couche du systme est un programme relativement indpendant quidoit interagir avec les autres couchesviaune interface logicielle propre et bien tablie. De plus,un systme base de micro-noyau peut tre port assez aisment sur dautres architecturesdans la mesure o toutes les composantes dpendantes du matriel sont en gnral localisesdans le code du micro-noyau. Enfin, les systmes base de micro-noyau ont tendance mieux

    utiliser la mmoire vive que les systmes monolithiques.

    4.5 Systmes modules

    Un module est un fichier objet dont le code peut tre li au noyau (et en tre supprim)en cours dexcution. Ce code objet est en gnral constitu dun ensemble de fonctions quiimplmente un systme de fichiers, un pilote de priphrique, ou tout autre fonctionnalitde haut niveau dun systme dexploitation. Le module, contrairement aux couches externesdun systme base de micro-noyau, ne sexcute pas dans un processus spcifique. Il est aucontraire excut en mode noyau au nom du processus courant, comme toute fonction liestatiquement dans le noyau.

    La notion de module reprsente une fonctionnalit du noyau qui offre bon nombre des avan- Intrttages thoriques dun micro-noyau sans pnaliser les performances. Parmi les avantages desmodules, citons :

    Uneapproche modulaire: puisque chaque module peut tre li et dli en cours dexcutiondu systme, les programmeurs ont d introduire des interfaces logicielles trs claires permet-

    tant daccder aux structures de donnes gres par les modules. Cela rend le dveloppementde nouveaux modules plus simple.

    Indpendance vis--vis de la plateforme : mme sil doit se baser sur des caractristiques biendfinies du matriel, un module ne dpend pas dune plateforme particulire. Ainsi, un pilotede disque bas sur le standard SCSI fonctionne aussi bien sur un ordinateur compatible IBMque sur un Alpha.

    Utilisation conomique de la mmoire: un module peut tre insr dans le noyau lorsque lesfonctionnalits quil apporte sont requises et en tre supprim lorsquelles ne le sont plus.

    De plus, ce mcanisme peut tre rendu transparent lutilisateur puisquil peut tre ralisautomatiquement par le noyau.

    Aucune perte de performances: une fois insr dans le noyau, le code dun module est qui-valent au code li statiquement au noyau. De ce fait, aucun passage de message nest n-cessaire lorsque les fonctions du module sont invoques. Bien entendu, une petite perte deperformance est cause par le chargement et la suppression des modules. Cependant, cetteperte est comparable celle dont sont responsables la cration et la destruction du processusdun systme base de micro-noyau.

    14 Premire partie : Principes de conception des systmes dexploitation

  • 8/10/2019 Conception de Systemes d Exploitation Ed2 v1

    32/698

    Cedocumentestlaprop

    ritexclusivedexeromedxeromed([email protected])-17Janvier200921:31

    14 Premire partie : Principes de conception des systmes d exploitation

    5 Mise en uvre

    5.1 Les appels systme

    Linterface entre le systme dexploitation et les programmes de lutilisateur est constituedun ensemble dinstructions tendues fournies par le systme dexploitation, qualifiesdappels systme.

    Les appels systme crent, dtruisent et utilisent divers objets logiciels grs par le systmedexploitation, dont les plus importants sont lesprocessuset lesfichiers.

    5.2 Les signaux

    Les processus sexcutant indpendamment les uns des autres, il sagit de pseudo-paralllisme.Il faut cependant quelquefois fournir de linformation un processus. Comment le systmedexploitation procde-t-il ? On a imagin une mthode analogue celle des interruptions logi-cielles pour les micro-processeurs, appelesignal.

    Considrons, par exemple, le cas de lenvoi dun message. Pour empcher la perte des mes-sages, on convient que le rcepteur envoie lui-mme un acquittement ds quil reoit une par-tie du message (dune taille dtermine) ; on envoie nouveau cette partie si lacquittement

    ne parvient pas dans un temps dtermin. Pour mettre en place un tel envoi, on utilisera unprocessus : il envoie une partie du message, demande son systme dexploitation de lavertirlorsquun certain temps est coul, il vrifie alors quil a reu lacquittement du message etsinon lenvoie nouveau.

    Lorsque le systme dexploitation envoie un signal un processus, ce signal provoque la sus-pension temporaire du travail en cours, la sauvegarde des registres dans la pile et lexcutiondune procdure particulire de traitement du signal reu. la fin de la procdure de traite-ment du signal, le processus est redmarr dans ltat o il se trouvait juste avant la rception

    du signal.

    Conclusion

    Nous venons de rappeler les trois fonctions principales dun systme dexploitation, ses carac-tristiques, sa structure externe, sa structure interne, et la faon de le mettre en uvre. Lestrois notions essentielles y sont les processus, les fichiers, et les appels systme. Cest celles-ci quon doit sattacher pour bien comprendre la suite. Nous allons aborder dans le chapitre

    suivant la faon dont le micro-processeur communique avec lextrieur et ses incidences sur lessystmes dexploitation, avant daborder le systme Linux proprement parler.

  • 8/10/2019 Conception de Systemes d Exploitation Ed2 v1

    33/698

    Cedocumentestlaprop

    ritexclusivedexeromedxeromed([email protected])-17Janvier200921:31

    Chapitre 2

    Principe de traitement des

    entres-sorties

    Nous allons prsenter dans ce chapitre le principe des entres-sorties la fois du point de vuematriel et du point de vue logiciel, ce dernier aspect nous intressant plus particulirement.

    1 Principe du matriel dentre-sortie

    On peut considrer le matriel qui permet les entres-sorties de diverses manires. Les ing-nieurs en lectricit y voient des circuits intgrs, des circuits lectriques, des moteurs et descomposants physiques. Les programmeurs sont plus sensibles linterface que le matriel offre leurs programmes : les commandes quil accepte, les fonctions quil excute, et les erreursquil signale. On sattache, lorsquon soccupe de la conception dun systme dexploitation, la programmation du matriel et non sa conception, construction, ou entretien. Nous exami-nerons donc la programmation du matriel et non son fonctionnement interne. Nanmoins, cesdeux aspects sont souvent intimement lis. Cest pourquoi nous prsentons dans le paragraphesuivant quelques aspects du matriel concernant les entres-sorties qui influent directement


Recommended