Click here to load reader

Cours Syst`eme - dr/Cours_systeme/  · PDF file8.3.2 Ordonnancement des processus dans une m´emoire pagin´ee . . . . . . . . . 68

  • View
    217

  • Download
    0

Embed Size (px)

Text of Cours Syst`eme - dr/Cours_systeme/  · PDF file8.3.2 Ordonnancement des processus dans...

  • Cours Systeme

    D.Revuz

    17 fevrier 2005

  • ii

  • Table des matieres

    1 Introduction 11.1 Unix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

    1.1.1 Pourquoi unix ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.1.2 le succes dUnix et de linux . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.1.3 Des points forts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.1.4 Des points faibles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

    1.2 Structure generale des systemes dexploitation . . . . . . . . . . . . . . . . . . . . . 21.2.1 Les couches fonctionnelles . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.2.2 Larchitecture du systeme . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.2.3 Larchitecture du noyau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

    1.3 historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

    2 Systeme de Gestion de Fichiers 72.1 Le concept de fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.2 Fichiers ordinaires / Fichiers speciaux. . . . . . . . . . . . . . . . . . . . . . . . . 82.3 Organisation utilisateur des Disques . . . . . . . . . . . . . . . . . . . . . . . . . . 82.4 Les inodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.5 Organisation des disques System V . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.6 Adressage des blocs dans les inodes . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.7 Allocation des inodes dun disque . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.8 Allocation des blocs-disque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

    3 Le Buffer Cache 173.1 Introduction au buffer cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

    3.1.1 Avantages et desavantages du buffer cache . . . . . . . . . . . . . . . . . . . 173.2 Le buffer cache, structures de donnees. . . . . . . . . . . . . . . . . . . . . . . . . . 17

    3.2.1 La liste doublement chanee des blocs libres . . . . . . . . . . . . . . . . . . 183.3 Lalgorithme de la primitive getblk . . . . . . . . . . . . . . . . . . . . . . . . . . 18

    4 La bibliotheque standard 234.1 Les descripteurs de fichiers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

    4.1.1 Ouverture dun fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244.1.2 Redirection dun descripteur : freopen . . . . . . . . . . . . . . . . . . . . 244.1.3 Creation de fichiers temporaires . . . . . . . . . . . . . . . . . . . . . . . . . 254.1.4 Ecriture non formatee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254.1.5 Acces sequentiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264.1.6 Manipulation du pointeur de fichier . . . . . . . . . . . . . . . . . . . . . . 264.1.7 Un exemple dacces direct sur un fichier dentiers. . . . . . . . . . . . . . . 264.1.8 Les autres fonctions de deplacement du pointeur de fichier. . . . . . . . . . 26

    4.2 Les tampons de fichiers de stdlib. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274.2.1 Les modes de bufferisation par defaut. . . . . . . . . . . . . . . . . . . . . . 274.2.2 Manipulation des tampons de la bibliotheque standard. . . . . . . . . . . . 27

    iii

  • iv TABLE DES MATIERES

    4.3 Manipulation des liens dun fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . 294.4 Lancement dune commande shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294.5 Terminaison dun processus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304.6 Gestion des erreurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314.7 Creation et destruction de repertoires . . . . . . . . . . . . . . . . . . . . . . . . . 31

    5 Appels systeme du Systeme de Gestion de Fichier 335.1 open . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

    5.1.1 Deroulement interne dun appel de open . . . . . . . . . . . . . . . . . . . . 355.2 creat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365.3 read . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365.4 write . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365.5 lseek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375.6 dup et dup2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375.7 close . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385.8 fcntl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

    6 Les processus 416.1 Introduction aux processus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

    6.1.1 Creation dun processus - fork() . . . . . . . . . . . . . . . . . . . . . . . 416.2 Format dun fichier executable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426.3 Chargement/changement dun executable . . . . . . . . . . . . . . . . . . . . . . . 426.4 zone u et table des processus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436.5 fork et exec (revisites) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436.6 Le contexte dun processus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456.7 Commutation de mot detat et interruptions. . . . . . . . . . . . . . . . . . . . . . 456.8 Les interruptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466.9 Le probleme des cascades dinterruptions . . . . . . . . . . . . . . . . . . . . . . . . 47

    6.9.1 Etats et transitions dun processus . . . . . . . . . . . . . . . . . . . . . . . 476.9.2 Listes des etats dun processus . . . . . . . . . . . . . . . . . . . . . . . . . 47

    6.10 Lecture du diagramme detat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486.11 Un exemple dexecution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496.12 La table des processus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496.13 La zone u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506.14 Acces aux structures proc et user du processus courant . . . . . . . . . . . . . . . 50

    6.14.1 Les informations temporelles. . . . . . . . . . . . . . . . . . . . . . . . . . . 506.14.2 Changement du repertoire racine pour un processus. . . . . . . . . . . . . . 516.14.3 Recuperation du PID dun processus . . . . . . . . . . . . . . . . . . . . . . 516.14.4 Positionement de leuid, ruid et suid . . . . . . . . . . . . . . . . . . . . . . 51

    6.15 Tailles limites dun processus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526.15.1 Manipulation de la taille dun processus. . . . . . . . . . . . . . . . . . . . . 526.15.2 Manipulation de la valeur nice . . . . . . . . . . . . . . . . . . . . . . . . . 526.15.3 Manipulation de la valeur umask . . . . . . . . . . . . . . . . . . . . . . . . 52

    6.16 Lappel systeme fork . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536.17 Lappel systeme exec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

    7 Lordonnancement des processus 557.1 Le partage de lunite centrale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

    7.1.1 Famine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567.1.2 Strategie globale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567.1.3 Criteres de performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

    7.2 Ordonnancement sans preemption. . . . . . . . . . . . . . . . . . . . . . . . . . . . 577.3 Les algorithmes preemptifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

    7.3.1 Round Robin (tourniquet) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

  • TABLE DES MATIERES v

    7.3.2 Les algorithmes a queues multiples . . . . . . . . . . . . . . . . . . . . . . . 587.4 Multi-level-feedback round robin Queues . . . . . . . . . . . . . . . . . . . . . . . . 58

    7.4.1 Les niveaux de priorite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587.4.2 Evolution de la priorite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597.4.3 Les classes de priorite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

    8 La memoire 618.0.4 les memoires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618.0.5 La memoire centrale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

    8.1 Allocation contigue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 638.1.1 Pas de gestion de la memoire . . . . . . . . . . . . . . . . . . . . . . . . . . 638.1.2 Le moniteur residant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 638.1.3 Le registre barriere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 638.1.4 Le registre base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 638.1.5 Le swap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658.1.6 Le cout du swap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658.1.7 Utilisation de la taille des processus . . . . . . . . . . . . . . . . . . . . . . 658.1.8 Swap et executions concurrentes . . . . . . . . . . . . . . . . . . . . . . . . 668.1.9 Contraintes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668.1.10 Deux solutions existent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668.1.11 Les problemes de prot