Chapitre 1 : Introduction Chapitre 2 : Processus Chapitre 3 ...

Click here to load reader

  • date post

    05-Jan-2017
  • Category

    Documents

  • view

    245
  • download

    6

Embed Size (px)

Transcript of Chapitre 1 : Introduction Chapitre 2 : Processus Chapitre 3 ...

  • Chapitre 1 : Introduction

    Chapitre 2 : Processus

    Chapitre 3 : Ordonnancement

    Chapitre 4 : Outils de communication centraliss entre processus

    Chapitre 5 : Allocation mmoire

    Chapitre 6 : Mmoire virtuelle

    Chapitre 7 : Interblocage

    Chapitre 8 : Synchronisation entre processus

    Chapitre 9 : Inversion de Priorit

    Chapitre 10 : Communication inter processus sur le rseau

    Chapitre 11 : Programmation socket

    Table des figures

  • Chapitre 1 : Introduction Ce chapitre constitue une introduction aux systmes d'exploitation multiprogramms.

    Cours : Introduction aux systmes d'exploitation

    Evolution de la prise en compte des entres sorties par la machine matrielle : vers la machine multiprogramme

    Le mode programm Les interruptions Le DMA ou Direct Memory Access

    Rles du systme d'exploitation dans un environnement multiprogramm. Dfinition. Fonctions d'un systme d'exploitation Les diffrentes classes de systme

    Un peu plus sur les systmes temps rel Notions de base

    Interfaces du systme d'exploitation Modes d'excutions et Commutations de contexte

    Un premier test

    Table des figures

  • Introduction>Introduction aux systmes d'exploitation

    1 Cours : Introduction aux systmes d'exploitation

    Ce chapitre constitue une introduction aux systmes d'exploitation multiprogramms. Aprs un rappel sur

    l'volution de la prise en compte des entres/sorties par la machine physique, nous donnons la dfinition

    d'un systme d'exploitation., puis nous listons les diffrentes fonctions qui le composent. Les diffrents

    types de systmes d'exploitation sont ensuite prsents et une attention toute particulire est alors porte

    sur les systmes temps rel. Nous finissons par un rappel sur les notions de base.

    1.1 Evolution de la prise en compte des entres sorties par la machine matrielle : vers la machine multiprogramme

    Nous nous intressons l'volution de la prise en charge des entres/sorties au niveau matriel. Trois

    modes sont possibles : le mode programm, les interruptions et le Dma. Nous allons voir que le dernier

    mode libre compltement le processeur de la ralisation d'une entre sortie et permet alors de faire

    excuter celui-ci d'autres oprations durant celle-ci : le systme pourra alors tre multiprogramm, c'est--

    dire pourra permettre le traitement de plusieurs programmes : l'une en entres/sorties, l'autre en calcul.

    1.1.1 Le mode programm Le premier mode de gestion des entres/sorties est le mode programm. Dans ce mode, l'unit d'change

    qui interface le priphrique au bus et au processeur, ne sait pas dlivrer d'informations sur son tat. Pour

    savoir si l'unit d'change est prte recevoir ou dlivrer une nouvelle donne, le processeur doit

    rgulirement lire le contenu du registre d'tat RE de l'unit d'change. Le processeur est donc

    compltement occup durant l'entre sortie par la ralisation de cette boucle de scrutation dont la logique

    est donne sur la figure 1 en mmoire centrale. On ne peut donc concevoir quun systme

    monoprogramm.

    http://nefertiti/mps/ns/chap1/intro_lecon0.html

  • Fig 1 : Le mode programm

    1.1.2 Les interruptions Une premire amlioration provient du mcanisme d'interruption : l'unit d'change dlivre alors une

    interruption destination du processeur lorsqu'elle est prte dlivrer ou recevoir une nouvelle donne. Le

    processeur, la prise en compte de cette interruption, va excuter la routine associe qui lit la donne

    prsente dans RD (lecture) ou met dans RD la donne suivante crire. Le processeur ne doit donc plus

    scruter le registre d'tat RE de l'unit d'change pour savoir si celle-ci est prte. Cependant, il reste le seul

    pouvoir accder la mmoire centrale et doit donc encore grer l'entre sortie dans le sens o il doit se

    charger des transferts mmoire centrale registre de donne.

  • Fig 2 : Entre/sortie et interruption

    Complment : Nous rappelons brivement le mcanisme des interruptions. Le processeur excute un programme lambda. L'interruption n3 survient, dclenche par une unit priphrique. Le processeur arrte alors l'excution du programme lambda. Il sauvegarde le contexte du processeur en mmorisant notamment l'adresse de la prochaine instruction excuter dans le programme lambda (ici 1002). Puis il dtermine grce une table appele la table des vecteurs d'interruptions, l'adresse de la routine associe l'interruption n3. : ici 0017. Il charge alors le CO avec cette adresse, excute la routine d'interruption qui se termine par l'instruction machine RTI (return Interrupt) : cette instruction restaure le contexte sauvegard lors de la prise en compte de l'interruption : le CO est charg avec l'adresse 1002 et le programme lambda reprend son excution l o il avait t interrompu.

  • Traitement d'une interruption

    1.1.3 Le DMA ou Direct Memory Access L'ajout d'un dispositif de DMA (Direct Memory Access) permet l'unit d'change d'accder par elle-mme

    la mmoire centrale. Le DMA com port e quatre registres qui servent dcrire l'opration

    d'entres/sorties raliser (nombre d'octets transfrer nb, adresse du premier octet @m, sens de

    l'opration, .adresse du priphrique concern @p). Combiner au mcanisme d'interruption, le DMA

    permet de dcharger le processeur de toute la ralisation des entres/sorties. Celui-ci n'a plus qu'

    initialiser l'opration en initialisant le contenu des registres du DMA tel que cela est dcrit sur la figure 3. Le

    DMA se charge ensuite d'effectuer l'opration d'entres/sorties, en lisant ou crivant lui-mme en mmoire

    centrale les donnes transfres par l'unit priphrique. Lorsque l'opration d'entres sorties est termine,

    le DMA met une interruption pour le signaler au processeur.

    Fig 3 : DMA et entre sortie

    Le chronogramme de la figure 4 illustre l'activit du processeur et du DMA lorsque le systme est

    monoprogramm. Le programme Prog s'excute et fait du calcul : le processeur est actif et le DMA inactif.

    A un instant t, le programme Prog demande une opration d'entres/sorties (Lire/Ecrire). Le Dma, une fois

    initialis par le processeur, devient actif et le processeur inactif, puisqu'il n'y a qu'un seul programme en

    mmoire centrale et que le DMA gre seul l'opration d'entres sorties. Le processeur demeure donc inactif

    jusqu ce que le DMA ait fini l'entre sortie; ce moment l le processeur reoit l'interruption mise par le

    DMA, redevient actif, traite l'interruption puis reprend l'excution du programme Prog..

  • Fig 4 : Activit du CPU et du DMA sur un systme monoprogramm

    Laisser le processeur inactif conduit une mauvaise utilisation de cette ressource matrielle. On choisit

    donc de "monter" plusieurs programmes en mmoire centrale : ainsi comme le montre la figure 5, lorsque le

    DMA ralise une opration d'entres sorties pour le programme ProgA, le processeur peut excuter un

    autre programme qui demande du calcul : ProgB. Le systme est devenu multiprogramm.

  • Fig 5 : Activit du CPU et du DMA sur un systme multiprogramm

  • Introduction>Introduction aux systmes d'exploitation>Role du systeme

    1.2 Rles du systme d'exploitation dans un environnement multiprogramm. Dfinition.

    Le systme est multiprogramm : plusieurs programmes coexistent en mmoire centrale et utilisent le

    processeur pour effectuer des calculs et le DMA pour raliser les oprations d'entres sorties. On distingue

    en mmoire centrale un programme particulier : le systme d'exploitation, charg en mmoire haute avec le

    vecteur d'interruptions. Le premier rle du systme d'exploitation dans un systme multiprogramm est de

    grer le partage de la machine physique et des ressources matrielles entre les diffrents programmes.

    Cette gestion doit assurer l'quit d'accs aux ressources matrielles et assurer galement que les accs

    des programmes ces ressources s'effectuent correctement (protection des ressource s). Plus

    prcisment, la gestion du partage de la machine physique et des ressources matrielles doit permettre de

    rpondre aux questions suivantes :

    partage du processeur unique : parmi tous les programmes chargs en mmoire centrale, lequel doit

    s'excuter ?

    partage de la mmoire centrale : comment allouer la mmoire centrale aux diffrents programmes.

    Comment assurer la protection entre ces diffrents programmes utilisateurs ? Comment protger le

    systme d'exploitation des programmes utilisateurs ? Par protection, on entend ici veiller ce qu'un

    programme donn n'accde pas une plage mmoire alloue un autre programme.

    partage des priphriques

    Le second rle du systme d'exploitation est de faciliter l'accs la machine physique pour l'utilisateur de

    celle-ci. En effet sur une machine physique brute, pour raliser par exemple une opration d'entres

    sorties, il est ncessaire de connatre la manire dont le priphrique est gr (DMA, interruption ?). De

    mme pour faire excuter un programme, il faut charger celui-ci en mmoire centrale et connatre la

    manire dont l'allocation des mots mmoire est gre. Ceci est fastidieux et compliqu pour l'utilisateur de

    la machine. Le systme d'exploitation offre l'utilisateur une interface destine masquer les caractristiques

    matrielles. Cette interface est compose d'un ensemble de primitives qui grent elles-mmes les

    caractristiques matrielles sous-jacentes et offrent un service l'utilisateur. Un utilisateur souhaitant

    raliser une opration d'entres sorties fait appel une primitive unique ECRIRE sans se soucier du type

    de gestion associe au priphrique. C'est la primitive qui prendra en charge la spcificit du priphrique.

    L'ensemble des primitives offertes par le systme d'exploitation cre une machine virtuelle au dessus de la

    machine physique plus simple d'emploi et plus conviviale. On distingue deux types de primitives : les

    appels systmes et les commandes.

    http://nefertiti/mps/ns/chap1/intro_lecon0.html

  • Dfinition : Systme d'exploitationC'est un ensemble de programmes qui ralise l'interface entre le matriel de l'ordinateur et les utilisateurs. Il a deux objectifs principaux :

    construction au-dessus du matriel d'une machine virtuelle plus facile d'emploi et plus conviviale prise en charge de la gestion de plus en plus complexe des ressources et partage de celle-ci

    Comme son nom le suggre, le systme dexploitation a en charge l'exploitation de la machine pour en faciliter l'accs, le partage et pour l'optimiser

  • Introduction>Introduction aux systmes d'exploitation>Fonction du systme

    1.3 Fonctions d'un systme d'exploitation

    Le systme d'exploitation (figure 6) prsente donc comme une couche logicielle place entre la machine

    matrielle et les applications. Il s'interface avec la couche matrielle, notamment par le biais du mcanisme

    des interruptions. Il s'interface avec les applications par le biais des primitives qu'il offre : appels systme et

    commandes. Le systme d'exploitation peut tre dcoup en plusieurs grandes fonctions prsentes sur la

    figure ci-dessous Dans une premire approche, ces fonctions qui seront tudies plus en dtails dans les

    chapitres suivants du cours sont :

    Gestion du processeur : le systme doit grer l'allocation du processeur aux diffrents programmes

    pouvant s'excuter. Cette allocation se fait par le biais d'un algorithme d'ordonnancement qui planifie

    l'excution des programmes. Selon le type de systme d'exploitation, l'algorithme d'

    ordonnancement rpond des objectifs diffrents

    Gestion de la mmoire : le systme doit grer l'allocation de la mmoire centrale entre les diffrents

    programmes pouvant s'excuter (pagination/segmentation). Comme la mmoire physique est

    souvent trop petite pour contenir la totalit des programmes, la gestion de la mmoire se fait selon le

    principe de la mmoire virtuelle : un instant donn, seules sont charges en mmoire centrale, les

    parties de code et donnes utiles l'excution

    Gestion des entres/sorties : le systme doit grer l'accs aux priphriques, c'est--dire faire la

    liaison entre les appels de haut niveau des programmes utilisateurs (exemple getchar()) et les

    oprations de bas niveau de l'unit dchange responsable du priphrique (unit dchange clavier)

    : c'est le pilote d'entres/sorties (driver) qui assure cette correspondance

    Gestion de la concurrence : Comme plusieurs programmes coexistent en mmoire centrale, ceux-ci

    peuvent vouloir communiquer pour changer des donnes. Par ailleurs, il faut synchroniser l'accs

    aux donnes partages afin de maintenir leur cohrence. Le systme offre des outils de

    communication et de synchronisation entre programmes

    Gestion des objets externes : La mmoire centrale est une mmoire volatile. Aussi, toutes les

    donnes devant tre conserves au-del de l'arrt de la machine, doivent tre stockes sur

    une mmoire de masse ( disque dur, disquette, cdrom...). La gestion de l'allocation des mmoires

    de masse ainsi que l'accs aux donnes stockes s'appuient sur la notion de fichiers et de systme

    de gestion de fichiers (SGF).

    Gestion de la protection : le systme doit fournir des mcanismes garantissant que ses ressource s

    (CPU, mmoire, fichiers) ne peuvent tre utilises que par les programmes auxquels les droits

    ncessaires ont t accords. Il faut notamment protger le systme et la machine des programmes

    utilisateurs (mode d'excution utilisateur et superviseur)

    http://nefertiti/mps/ns/chap1/intro_lecon0.html

  • Fig 6 : Les grandes fonctions du systme dexploitation

  • Introduction>Introduction aux systmes d'exploitation>Classe des systmes

    1.4 Les diffrentes classes de systme

    Les systmes d'exploitation multiprogramms peuvent tre classs selon diffrents types qui dpendent

    des buts et des services offerts par les systmes. On distingue principalement trois grandes classes de

    systmes

    les systmes multiutilisateurs interactifs : l'utilisateur est "derrire son clavier et son cran" ; il

    soumet des excutions et attend les rsultats : il faut donc rduire au maximum le temps d'attente et

    faire croire l'utilisateur qu'il est seul utiliser la machine. Ce sont des systmes adapts la mise

    au point de programmes (exemple : UNIX, Linux)

    les systmes traitements par lots (batch) : les programmes sont excuts en diffr, les uns la

    suite des autres. Ce sont des systmes ddis aux travaux de production (exemple : MVS...). On

    peut noter que beaucoup de systmes offrent simultanment un service de temps partag et un

    service de traitement par lots (VMS)

    les systmes temps rels : les programmes en excution sont soumis des contraintes de temps,

    c'est--dire que leurs excutions doivent tre imprativement acheves une date butoir appele

    chance. Comme ces systmes sont souvent interfacs un environnement dynamique (procd)

    dlivrant des vnements synchrones ou asynchrones auxquels ils doivent ragir, on parle aussi de

    systmes ractifs. Ce sont des systmes adapts la commande de procd (exemple : LynxOS...)

    1.4.1 Un peu plus sur les systmes temps rel

    Dfinition : Application temps relUne application temps rel est une application pour laquelle le facteur temps est la principale contrainte respecter. L' application doit fournir un rsultat juste mais si celui-ci est fourni hors dlai, alors il ne pourra pas tre valid.

    Il ne sagit pas par contre, de rendre le rsultat le plus vite possible, mais simplement temps. Lchelle du

    temps relative la contrainte temporelle varie dune application lautre : elle peut tre par exemple de

    lordre de la micro-seconde dans des applications de contrle radars, mais peut tre de lordre de lheure

    pour une application de contrle chimique. Par ailleurs, le systme temps rel peut tre qualifi de systme

    embarqu ou enfouis (embedded system). On distingue deux types de contraintes temporelles:

    Les contraintes temporelles strictes : les fautes temporelles (non-respect dune chance) sont

    intolrables pour la validit du systme. Elles mettent en pril le systme temps rel lui-mme voire

    son environnement.

    Les contraintes temporelles relatives : quelques fautes temporelles peuvent tre sup port es sans

    remettre en cause la validit du systme. Il s'ensuit gnralement une baisse de performance du

    systme.

    http://nefertiti/mps/ns/chap1/intro_lecon0.html

  • Un systme temps rel se divise en deux parties qui interagissent entre elles (figure 7):

    Dun ct, un procd, en gnral industriel, muni de capteurs, envoie des mesures ou dclenche

    des vnements avec une occurrence priodique ou alatoire.

    De lautre ct, un systme informatique, connect au procd. Ce systme informatique

    commande et contrle de manire dynamique le comportement du procd, en respectant les

    contraintes de temps qui lui sont associes. Il ragit dans un temps contraint aux vnements et

    mesures prleves sur le procd : on dit alors que le systme est ractif. Le systme informatique

    se dcompose lui-mme en deux parties : l'application temps rel proprement dite construite par un

    ensemble de tches, qui sont actives de manire priodique pour raliser les prises de mesures ou

    de manire apriodique pour prendre en compte les vnements du procd. Ces tches utilisent

    les services d'un noyau temps rel appel gnralement excutif temps rel pour s'excuter et

    utiliser les ressource s matrielles ou priphriques.

    Fig 7 : Systme temps rel

    Exemple dune application temps rel On considre un procd chimique dextraction de matire grasse laide dun solvant tel que lhexane pilot par ordinateur. La colonne dextraction comporte un robinet pour amener le solvant, un capteur de temprature et un ph-mtre. La colonne de distillation est munie galement dun capteur de temprature. Les deux dispositifs sont chauffs laide de deux becs bunsen. Lapplication lit rgulirement les tempratures de la colonne de distillation et de la colonne dextraction. Si une temprature devient anormale, par exemple, trop leve, lapplication doit ragir dans un dlai maximum, qui garantit que la raction chimique peut se poursuivre, pour agir sur le bec bunsen associ (le baisser).

  • Introduction>Introduction aux systmes d'exploitation>Notions de base

    1.5 Notions de base

    Nous rvisons ci-dessous quelques notions de base.

    1.5.1 Interfaces du systme d'exploitation

    Dfinition : Commandes et appels systmesLes appels systmes constituent l'interface du systme d'exploitation et sont les points d'entres permettant l'excution d'une fonction du systme. Les appels systme sont directement appelables depuis un programme. Les commandes permettent elles d'appeler les fonctions du systme depuis le prompt de l'interprteur de commande (shell, invite du dos).

    1.5.2 Modes d'excutions et Commutations de contexte Lorsqu'un programme utilisateur fait un appel systme (ici open), il va excuter une fonction du systme

    d'exploitation. Il quitte alors son mode courant d'excution (mode utilisateur) pour passer dans un mode

    d'excution privilgi qui est le mode d'excution du systme d'exploitation (mode superviseur) : ce mode

    est privilgi dans le sens o il donne accs un plus grand nombre d'instructions machine que le mode

    utilisateur (notamment il permet l'excution des instructions de masquage et dmasquage dinterruptions

    interdites en mode utilisateur). Ce passage du mode utilisateur au mode superviseur constitue une

    commutation de contexte : elles s'accompagne d'une opration de sauvegarde du contexte utilisateur.

    http://nefertiti/mps/ns/chap1/intro_lecon0.html

  • Fig 8 : Commutation de contexte

    Lorsque l'excution de la fonction systme est acheve, le programme repasse du mode superviseur au

    mode utilisateur. Il y a de nouveau une opration de commutation de contexte avec restauration du

    contexte utilisateur sauvegard lors de l'appel systme.

    Fig 9 : Commutation de contexte

    Il y a trois grandes causes de passage du mode utilisateur au mode superviseur :

    le fait que le programme utilisateur appelle une fonction du systme. C'est une demande explicite de

    passe en mode superviseur.

    l'excution par le programme utilisateur d'une opration illicite (division par 0, instruction machine

    interdite, violation mmoire) : c'est la trappe. L'excution du programme utilisateur est alors

    arrte.

    la prise en compte d'une interruption par le matriel et le systme d'exploitation. le programme

    utilisateur est alors stopp et l'excution de la routine d'interruption associe l'interruption

    survenue excute en mode superviseur.

    Dfinition : Mode superviseurLe mode superviseur est le mode d'excution du systme. C'est un mode d'excution privilgi qui autorise notamment l'appel des instructions interdites en mode utilisateur (manipulation des interruptions). Ce mode assure la protection du systme d'exploitation. Le passage du mode utilisateur vers le mode superviseur est soit provoqu par un appel systme, soit par une trappe, soit par l'arrive d'une interruption

    Dfinition : Commutations de contexte

  • Le passage entre les modes utilisateur / superviseur s'accompagne de commutations de contexte (sauvegarde du contexte utilisateur - changement de mode d'excution - restitution du contexte utilisateur)

  • Introduction>qcm : Un premier test

    2 Un premier test

    Exercice

    Pour en finir avec le chapitre introductif

    Question : Quel est le rle du systme dexploitation ?

    Compiler un programme et construire un excutable Grer les accs disque Partager la machine physique entre les diffrents programmes et btir une machine virtuelle plus accessible lutilisateur

    Rponse :

    Partager la machine physique entre les diffrents programmes et btir une machine virtuelle plus accessible lutilisateur

    Question : Un systme est dit ractif

    Car il doit offrir le plus petit temps de rponse possible lutilisateur Car il doit ragir des vnements dlivrs par des priphriques externes Car il est rapide

    Rponse :

    Car il doit ragir des vnements dlivrs par des priphriques externes

    Question : Une interruption

    Permet de squencer lexcution des programmes Est un signal externe au processeur obligeant celui-ci interrompre son traitement en cours pour traiter la cause de

    lvnement

    Rponse :

    Est un signal externe au processeur obligeant celui-ci interrompre son traitement en cours pour traiter la cause de lvnement

    Question : Une commutation de contexte intervient

    chaque changement de mode dexcution Sur loccurrence dune interruption Lorsque le programme commet une erreur grave

    Rponse :

    chaque changement de mode dexcution

    http://nefertiti/mps/ns/chap1/intro_lecon0.html

  • Chapitre 2 : Processus Ce chapitre est consacr l'tude des processus

    Cours : Processus

    Notion de processus Rappel sur la chaine de production d'un programme excutable. L'excution d'un programme Le processus

    Les tats du processus Le bloc de contrle du processus (PCB)

    Processus Unix : cration, vie et mort Cration d'un processus Unix Terminaison d'un processus Unix Les primitives de recouvrement Architecture du systme Unix

    La notion de processus lger Dfinition Primitives associes aux processus lger

    Table des figures

  • Processus >Processus

    1 Cours : Processus

    Nous commenons prsent l'tude du fonctionnement d'un systme multiprogramm. Dans ce cours,

    nous nous intressons la fonction d'excution : elle recouvre principalement deux notions : celle de

    processus ,qui correspond l'image d'un programme qui s'excute et celle d' ordonnancement qui

    correspond au problme de l'allocation du processeur et donc du partage du processeur entre diffrents

    processus .

    1.1 Notion de processus

    1.1.1 Rappel sur la chaine de production d'un programme excutable. La chaine de production de programme (figure 1) transforme un programme crit dans un langage de haut

    niveau en un programme dit excutable, crit en langage machine. Cette transformation s'effectue l'aide

    de plusieurs tapes : L'utilisateur saisit son programme l'aide de l'diteur de texte qui cre un fichier sur le

    disque que l'on appelle le fichier source. Ce fichier source est ensuite compil l'aide d'un compilateur

    dpendant du langage de programmation utilis et dont le rle est de vrifier que la syntaxe du langage est

    respecte et de gnrer alors l'quivalent du programme source en langage machine : on obtient alors sur

    disque le fichier objet. Ce fichier objet est ensuite soumis l'diteur de liens dont le rle est de rsoudre les

    rfrences externes, c'est--dire par exemple, d'associer les appels systme inclus dans le programme

    leur adresse dans le systme. L'diteur de liens produit sur disque le fichier excutable. Lorsque l'utilisateur

    demande l'excution de son programme, le fichier excutable est alors mont en mmoire centrale : c'est

    l'tape de chargement. Le systme alloue de la place mmoire pour placer le code et les donnes du

    programme.

    http://nefertiti/mps/ns/chap2/intro_processus.html

  • Fig 1 : Chaine de production de programme

    Exemple sur Unix : Pour le systme d'exploitation Unix, les tapes suivantes permettent de passer d'un fichier source un processus

    saisie du fichier source avec un diteur tel que vi : programme.c compilation et production du fichier programme.o : cc -c programme.c dition des liens et production du fichier excutable programme : ld -o programme programme.o chargement et cration du processus : programme

    1.1.2 L'excution d'un programme La figure 2 reprsente l'excution du programme un niveau qui est celui de l'architecture matrielle de la

    machine. Le programme excuter est plac en mmoire centrale partir de l'emplacement d'adresse

    102. Le processeur a commenc l'excution du programme : la premire instruction de celui-ci a t

    charge dans le registre instruction (RI) et le Compteur Ordinal (CO) contient l'adresse de la prochaine

    instruction excuter soit 103. Lorsque l'instruction courante aura t excute, le processeur chargera

    dans la registre RI l'instruction pointe par le CO, soit add Imm R1 5 et le compteur ordinal prendra la

    valeur 104. L'excution de l'instruction add Imm R1 5 va modifier le contenu du registre PSW puisque c'est

    une instruction arithmtique : les flags de signe, de nullit etc... sont mis jour. On voit donc qu' chaque

    tape d'excution du programme, le contenu des registres du compteur ordinal volue. De mme le

    contenu de la mmoire centrale peut tre modifi : criture, lecture dans la pile (Push, Pop), modification

    des donnes par une instruction Store. On appelle processus l'image de l'tat du processeur et de la

    mmoire au cours de l'excution d'un programme. Le programme est statique et le processus reprsente la

    dynamique de son excution. Lors de l'tape de chargement, le systme alloue de la place mmoire pour

    placer le code et les donnes du programme et cre la pile d'excution de ce qui est en train de devenir un

  • processus. Il alloue alors une structure de donne descriptive du processus destine regrouper toutes les

    informations du contexte du processus : le bloc de contrle du processus. Le processus est alors cr. Il

    est prt s'excuter.

    Fig 2 : Excution d'un programme

    1.1.3 Le processus

    Dfinition : Processus Un processus est un programme en cours d'excution auquel est associ un environnement

    processeur (CO, PSW, RSP, registres gnraux) et un environnement mmoire appels contexte du processus.

    Un processus est l'instance dynamique d'un programme et incarne le fil d'excution de celui-ci dans un espace d'adressage protg (objets propres : ensemble des instructions et donnes accessibles)

    Un programme rentrant est un programme pour lequel il peut exister plusieurs processus en mme temps

    1.1.3.1 Les tats du processus Lors de son excution, un processus est caractris par un tat :

    lorsque le processus obtient le processeur et s'excute, il est dans l'tat lu. L'tat lu est l'tat

    d'excution du processus.

    lors de cette excution, le processus peut demander accder une ressource (ralisation d'une

    entre/sortie, accs une variable protge) qui n'est pas immdiatement disponible : le processus

    ne peut pas poursuivre son excution tant qu'il n'a pas obtenu la ressource (par exemple, le

    processus doit attendre la fin de l'entre/sortie qui lui dlivre les donnes sur lesquelles il ralise les

    calculs suivants dans son code) : le processus quitte alors le processeur et passe dans l'tat bloqu.

    L'tat bloqu est l'tat d'attente d'une ressource autre que le processeur.

  • lorsque le processus a enfin obtenu la ressource qu'il attendait, celui-ci peut potentiellement

    reprendre son excution. Cependant, nous nous sommes placs dans le cadre de systmes

    multiprogramms, c'est--dire qu'il y a plusieurs programmes en mmoire centrale et donc plusieurs

    processus.. Lorsque le processus est pass dans l'tat bloqu, le processeur a t allou un autre

    processus. Le processeur n'est donc pas forcment libre. Le processus passe alors dans l'tat prt.

    L'tat Prt est l'tat d'attente du processeur.

    Le passage de l'tat prt vers l'tat lu constitue l'opration d'lection. Le passage de l'tat lu vers

    l'tat bloqu est l'opration de blocage. Le passage de l'tat bloqu vers l'tat prt est l'opration de

    dblocage.

    Un processus est toujours cre dans l'tat prt. Un processus se termine toujours partir de l'tat lu (sauf

    anomalie).

    Fig 3 : Etats d'un processus

    Exemple sous Unix La figure ci-dessous prsente le graphe d'tats simplifi pour un processus Unix. Un processus volue entre trois modes au cours de son excution : le mode utilisateur qui est le mode normal d'excution, le mode noyau en mmoire qui est le mode dans lequel se trouve un processus prt ou bloqu (endormi) et le mode swapp qui est le mode dans lequel se trouve un processus bloqu (endormi) dcharg de la mmoire centrale. En effet, le systme Unix dcharge de la mmoire centrale les processus endormis depuis trop longtemps (ils sont alors dans l'tat Endormi swapp). Ces processus rintgrent la mmoire centrale lorsqu'ils redeviennent prts (transition de l'tat prt swapp vers l'tat prt). Un processus qui se termine passe dans un tat dit zombi. Il y reste tant que son PCB n'est pas entirement dmantel par le systme.

  • Etats d'un processus Unix -graphe simplifi-

    1.1.3.2 Le bloc de contrle du processus (PCB) Le bloc de contrle d'un processus (PCB) contient les informations suivantes :

    un identificateur unique du processus (un entier) : le PID

    l'tat courant du processus (lu, prt, bloqu)

    le contexte processeur du processus : la valeur du CO, la valeur des autres registres du processeur

    le contexte mmoire : ce sont des informations mmoire qui permettent de trouver le code et les

    donnes du processus en mmoire centrale

    des informations diverses de comptabilisation pour les statistiques sur les performances systme

    des informations lies l' ordonnancement du processus. Le PCB permet la sauvegarde et la

    restauration du contexte mmoire et du contexte processeur lors des oprations de commutations

    de contexte .

  • Fig 4 : Bloc de contrle d'un processus

    Exemple sous Unix Nous prenons en exemple la structure du bloc de contrle de processus dans le systme d'exploitation Unix. Le bloc de contrle du processus est divis en deux parties :

    chaque processus dispose d'une entre dans une table gnrale du systme, la table des processus. Cette entre contient les informations sur le processus qui sont toujours utiles au systme quel que soit l'tat du processus : l'identificateur du processus (pid), l'tat du processus, les informations d'ordonnancement, les informations mmoire, c'est--dire l'adresse des rgions mmoire alloues au processus.

    chaque processus dispose galement d'une autre structure, la Zone U. Cette Zone U contient d'autres informations concernant le processus, mais ce sont des informations qui peuvent tre temporairement "swappes" sur le disque.

  • Bloc de contrle d'un processus Unix

  • Processus >Processus>Les processus Unix

    1.2 Processus Unix : cration, vie et mort

    1.2.1 Cration d'un processus Unix La primitive FORK permet la cration dynamique d'un nouveau processus qui s'excute de manire

    concurrente avec le processus qui l'a cr. Tout processus Unix hormis le processus 0 est cre l'aide de

    cette primitive. Le processus crateur (le pre) par un appel la primitive FORK cre un processus fils qui

    est une copie exacte de lui-mme (code est donnes).

    Dfinition : Primitive FORKpid_t fork (void) : permet la cration d'un processus Unix par duplication complte du crateur.

    Lors de l'excution de l'appel systme Fork, si les ressource s noyaux sont disponibles, le systme effectue

    les oprations suivantes :

    le systme alloue une entre la table des processus pour le nouveau processus

    le systme alloue un PID unique au nouveau processus

    le systme duplique le contexte du processus parent : le code, les donnes, et la pile

    le systme retourne au processus pre le PID du processus cre et au nouveau processus (le fils) la

    valeur 0.

    Lors de cette cration le processus fils hrite de tous les attributs de son pre sauf :

    l'identificateur de son pre

    son propre identificateur

    les temps d'excution du nouveau processus sont nuls.

    Notamment, le fils hrite de tous les descripteurs de fichiers ouverts par son pre et partage donc ces

    fichiers avec lui. A l'issue de l'excution de la primitive Fork, chaque processus, le pre et le fils, reprend son excution

    aprs le Fork. Le code et les donnes tant strictement identiques, il est ncessaire de disposer d'un

    mcanisme pour diffrencier le com port ement des deux processus aprs le Fork. On utilise pour cela le

    code retour du Fork qui est diffrent chez le fils (toujours 0) et le pre (PID du fils cr). Dans l'exemple de la figure ci-dessous, le processus n12222 est le processus pre. Le processus 12224

    est le processus fils cre par le processus de 12222 l'issue de l'appel la primitive Fork. Une fois la

    primitive Fork excute par le pre, les deux processus (le pre et le fils) reprennent leur excution de

    manire concurrente. Le processus fils a pour retour de la primitive Fork la valeur 0. Il va donc excuter la

    http://nefertiti/mps/ns/chap2/intro_processus.html

  • partie de l'alternative pour laquelle (if pid = = 0) est vrai. Le processus pre au contraire a pour retour de la

    primitive Fork la valeur du PID du processus cr c'est--dire une valeur positive. Il va donc excuter l'autre

    partie de l'alternative. Dans cet exemple, la primitive GETPID retourne un processus la valeur de son

    PID.. La primitive GETPPID retourne au processus le PID de son pre.

    Exemple de cration d'un processus avec la primitive Fork

    1.2.2 Terminaison d'un processus Unix Un appel la primitive EXIT provoque la terminaison du processus effectuant l'appel avec un code retour

    valeur. Un processus qui se termine passe dans l'tat zombi et reste dans cet tat tant que son pre n'a

    pas pris en compte sa terminaison.

    Dfinition : Primitive EXITvoid exit (int valeur) : provoque la terminaison du processus appelant

    Lorsqu'un processus se termine, le systme dmantle tout son contexte, sauf l'entre de la table des

    processus le concernant. Le processus pre, par un appel la primitive WAIT, rcupre la mort de son fils,

    cumule les statistiques de celui-ci avec les siennes et dtruit l'entre de la table des processus concernant

    son fils dfunt. Le processus fils disparat compltement. La communication entre le fils zombi et le pre

    s'effectue par le biais d'un signal transmis du fils vers le pre (signal SIGCHLD ou mort du fils). Si le pre

    n'attend pas la mort de son fils par un appel la primitive WAIT alors la table des processus n'est pas

    libre et il y a risque de saturation de cette table.

    Dfinition : Primitive WAITpid_t wait (int *status) : attente de la mort du fils

  • Synchronisation pre fils assurant une bonne libration des ressources du systme

    la mort du fils.

    Un processus fils dfunt reste zombi jusqu' ce que son pre ait pris connaissance de sa mort. Un

    processus fils orphelin, suite au dcs de son pre (le processus pre s'est termin avant son fils) est

    toujours adopt par le processus numro 1 (INIT) et non par son grand-pre.

    1.2.3 Les primitives de recouvrement Il s'agit d'un ensemble de primitives (famille EXEC) permettant un processus de charger en mmoire, un

    nouveau code excutable. L'excution d'une de ces primitives EXEC entrane l'crasement du code hrit

    au moment de la cration ( primitive Fork ) par le code excutable spcifi en paramtre de la primitive.

    Des donnes peuvent tre passes au nouveau code excutable via les arguments de la primitive EXEC.

    Dfinition : Primitives EXECEnsemble de primitives (famille EXEC) permettant un processus de charger en mmoire, un nouveau code excutable :

    int execl (const char *ref, const char *arg, ..., NULL) : ref est le chemin d'un excutable partir du rpertoire courant, const char *arg, ..., NULL est la liste des arguments.

    int execlp (const char *ref, const char arg, ..., NULL) : ref est le chemin d'un excutable partir de la variable d'environnement PATH, const char *arg, ..., NULL est la liste des arguments.

    int execv (const char *ref, const char *arg[]) : ref est le chemin d'un excutable partir du rpertoire courant, const char *arg [] est un tableau contenant les arguments.

    int execvp (const char *ref, const char *arg[]) : ref est le chemin d'un excutable partir de la variable d'environnement PATH, const char *arg [] est un tableau contenant les arguments.

    L'interface du programme principal d'un excutable (le main) se prsente toujours de la manire suivante :

  • int main (int argc, char *argv[], char *arge[]);

    argc est le nombre de composants de la commande

    argv est un tableau de pointeurs de caractres donnant accs aux diffrentes composantes de la

    commande

    arge est un tableau de pointeurs de caractres donnant accs l'environnement du processus.

    Exemple

    calcul 3 4

    on a argc = 3, argv[0]="calcul",argv[1]="3"

    et argv[2] = "4"

    Calcul.c

    main(argc,argv)

    {

    int somme;

    if (argc 3) {printf("erreur"); exit();}

    somme = atoi(argv[1]) + atoi(argv[2]); -- atoi : conversion caractre -->

    entier

    exit();

    }

    La figure ci-dessous donne un exemple de l'utilisation d'une des primitives EXEC : la primitive EXECL.

    Dans l'exemple ci-dessous, le processus fils rsultant de l'excution du Fork va excuter la partie de

    l'alternative pour laquelle PID == 0 est vrai. Dans cette alternative, le processus fils fait appel la primitive

    EXECL en demandant l'excution d'un programme excutable qui a pour nom calcul et qui admet pour

    paramtre argv[0] = "calcul", argv [1] = "3"et argv[2] ="2". Il faut noter que les arguments sont transmis

    comme des chanes de caractres. C'est pourquoi une conversion de caractre vers entier est ncessaire.

    Dans l'exemple donn, cette conversion est ralise l'aide de la primitive atoi.

  • Exemple de programmation avec une primitive de la famille Exec..

    1.2.4 Architecture du systme Unix Tout le systme UNIX repose sur ce concept arborescent de processus pre et de processus fils cr par

    duplication du processus pre puis par recouvrement par un code excutable spcifique du code hrit du

    processus pre. Le seul processus Unix qui n'est pas cre par un appel la primitive Fork puis par un

    appel une des primitives Exec est le premier processus de la machine c'est--dire le processus 0. Une

    fois cr, le processus 0 cre un deuxime processus, le processus 1 appel galement processus INIT.

    Le processus 0 devient alors le processus Swapper c'est--dire le processus responsable de swapper hors

    de la mmoire centrale les processus utilisateurs endormis depuis trop longtemps. Le processus INIT va

    crer son tour un certain nombre de processus : d'une part les processus DEMONS responsable de

    fonctions systme telles que la surveillance du rseau (inetd), la gestion de l'imprimante (lpd)..., d'autre part

    des processus GETTY chargs de la surveillance des terminaux. Le processus INIT trouve l'ensemble des

    processus crer dans un fichier qui est fichier /etc/inittab. Lorsqu'un utilisateur vient pour utiliser la

    machine, il se logue sur un terminal. Le processus GETTY cre alors un nouveau processus, le processus

    LOGIN charg de lire le login de l'utilisateur, son mot de passe et de vrifier dans le fichier /etc/passwd que

    l'utilisateur est autoris se connecter la machine. Si l'utilisateur est autoris se connecter la

    machine, alors le processus LOGIN va crer son tour un nouveau processus le processus SHELL c'est--

    dire l'interprteur de commande pour le nouvel utilisateur. Cet interprteur de commandes va prendre en

    charge les commandes tapes par l'utilisateur et pour chacune d'elles il va cre un nouveau processus

    charg d'excuter la commande. Ce processus existera le temps de l'excution du programme ou de la

    commande.

  • L'arborescence de processus Unix

  • Processus >Processus>Les processus lgers

    1.3 La notion de processus lger

    1.3.1 Dfinition Le processus lger constitue une extension du modle traditionnel de processus. Un processus classique

    est constitu d'un espace d'adressage avec un seul fil d'excution, ce fil d'excution tant reprsent par

    une valeur de compteur ordinal et une pile d'excution. Un processus lger est un espace d'adressage

    dans lequel plusieurs fils d'excution peuvent voluer en parallle. Ces fils d'excution sont chacun

    caractriss par une valeur de compteur ordinal propre et une pile d'excution prive.

    Dfinition : Processus lgerUn processus lger est un espace d'adressage dans lequel plusieurs fils d'excution peuvent voluer en parallle. Ces fils d'excution sont chacun caractriss par une valeur de compteur ordinal propre et une pile d'excution prive.

    Le gros avantage li la notion de processus lger est un allgement des oprations de commutations de

    contexte : en effet lorsque le processeur commute d'un fil d'excution un autre fil et que ces deux fils

    appartiennent au mme espace d'adressage, alors la commutation est trs allge puisqu'elle consiste

    seulement changer de pile et de valeur de compteur ordinal, le contexte mmoire restant le mme. Un

    inconvnient majeur est que l'espace d'adressage est compltement partag entre tous les fils d'excution

    qui voluent au sein de celui-ci et donc les oprations de synchronisation sont plus souvent requises. .

    1.3.2 Primitives associes aux processus lger int pthread_create (pthread_t *thread, const pthread_attr_t *attr, void * (*start_routine)(void *), void

    *arg) : Cration d'un processus lger : un processus lger identifi par l'identificateur *thread est

    cre et attach l'excution de la routine (*start_routine)(void *), void *arg).

    nt pthread_join ( pthread_t thread, void **value_ptr) : synchronisation entre processus lgers :

    permet au processus lger principal d'attendre la terminaison de ses fils.

    int pthread_exit (void **value_ptr) : terminaison de processus lger

    La figure ci-dessous donne un exemple d'un programme dans lequel un processus lger principal (le main)

    cre 4 autres processus lgers qui sont chacun rattachs la fonction void t_pthread(int i). Chaque

    processus lger affiche le pid du processus auquel il appartient (l'espace d'adressage) par l'appel la

    fonction getpid, puis son propre identifiant par l'appel la fonction pthread_self().

    http://nefertiti/mps/ns/chap2/intro_processus.html

  • Exemple de programmation avec les processus lgers. .

  • Chapitre 3 : Ordonnancement Ce chapitre est consacr l'tude de l' ordonnancement

    Cours : Ordonnancement de processus

    Notions lies l'ordonnancement de processus Qu'est-ce que l'ordonnancement de processus ? Ordonnancement premptif ou non premptif Les entits systme responsables de la fonction d'ordonnancement

    Les politiques d'ordonnancement Objectifs des politiques d'ordonnancement Les principales politiques d'ordonnancement

    Politique d'ordonnancement "premier arriv, premier servi" (FIFO). Politique d'ordonnancement "plus court d'abord" Politique d'ordonnancement par tourniquet (Round Robin) Politique d'ordonnancement par priorits constantes Politique d'ordonnancement par files de priorits constantes multiniveaux avec ou sans extinction de priorit Les politiques d'ordonnancement sous le systme Linux

    Ordonnancement sous le systme Unix Structures de donnes lies l'ordonnancement Algorithmes d'ordonnancement mis en oeuvre

    Ordonnancement temps rel Caractristiques de l'ordonnancement temps rel Les algorithmes d'ordonnancement temps rel

    Classification des algorithmes d'ordonnancement temps rel Modlisation de l'application temps rel pour la certification

    Les tches priodiques Les tches apriodiques

    Ordonnancement en ligne premptifs pour des tches priodiques indpendantes. L'ordonnancement Rate Monotonic (RM) Ordonnancement Inverse Deadline (ID) Ordonnancement Earliest Deadline (EDF)

    Une application temps rel sous RT-Linux Les tches RT-Linux.

    Mise en uvre. Format d'une application.

    L'ordonnancement.

    Exercices dirigs

    Primitives de recouvrement Exec Exercice 1 Exercice 2 Exercice 3

  • Ordonnancement>Ordonnancement de processus

    1 Cours : Ordonnancement de processus

    1.1 Notions lies l'ordonnancement de processus

    1.1.1 Qu'est-ce que l'ordonnancement de processus ? La figure 1 schmatise le fonctionnement d'une machine multiprocessus. Plusieurs processus sont

    prsents en mmoire centrale. P1 est lu et s'excute sur le processeur. P2 et P4 sont dans l'tat bloqu

    car ils attentent tous les deux une fin d'entre/sortie avec le disque. Les processus P3, P5 et P6 quant

    eux sont dans l'tat prt : ils pourraient s'excuter (ils ont leur disposition toutes les ressource s

    ncessaires) mais ils ne le peuvent pas car le processeur est occup par P1. Lorsque P1 quittera le

    processeur parce qu'il a termin son excution, les trois processus P3, P5 et P6 auront tous les trois le droit

    d'obtenir le processeur. Mais le processeur ne peut tre allou qu' un seul processus la fois : il faudra

    donc choisir entre P3, P5 et P6 : c'est le rle de l' ordonnancement qui lira un des trois processus .

    Fig 1 : qu'est-ce l'ordonnancement ?

    Dfinition : OrdonnancementLa fonction d'ordonnancement gre le partage du processeur entre les diffrents processus en attente pour s'excuter, c'est--dire entre les diffrents processus qui sont dans l'tat prt. L'opration d'lection consiste allouer le processeur un processus.

    http://nefertiti/mps/ns/chap3/intro_ordonnancement.html

  • 1.1.2 Ordonnancement premptif ou non premptif La figure 2 reprend le graphe d'tats tel qu'il a t vu la leon prcdente concernant les processus. Une

    transition a t cependant ajoute entre l'tat lu et l'tat prt : c'est la transition de premption. La

    premption correspond une opration de rquisition du processeur, c'est--dire que le processeur est

    retir au processus lu alors que celui-ci dispose de toutes les ressources ncessaires la poursuite de

    son excution. Cette rquisition port e le nom de premption .

    Fig 2 : Ordonnancement premptif

    Dfinition : PremptionSelon si l'opration de rquisition du processeur est autorise ou non, l'ordonnancement sera qualifi d'ordonnancement premptif ou non premptif :

    si l'ordonnancement est non premptif, la transition de l'tat lu vers l'tat prt est interdite : un processus quitte le processeur si il a termin son excution ou si il se bloque.

    si l'ordonnancement est premptif, la transition de l'tat lu vers l'tat prt est autorise : un processus quitte le processeur si il a termin son excution , si il se bloque ou si le processeur est rquisitionn.

    1.1.3 Les entits systme responsables de la fonction d'ordonnancement Le systme d'ordonnancement gre une file des processus (bloc de contrle) prts et une file des

    processus bloqus. La file des processus prts est classe selon une politique d'ordonnancement qui

    assure que le processus en tte de file est le prochain processus lire au regard de la politique mise en

    oeuvre. Ce classement est effectu par l' ordonnanceur et est ractualis chaque fois qu'un processus

    est prempt ou qu'un processus est dbloqu (ajout d'un nouvel lment prt). C'est le rpartiteur qui lit

    le processus en tte de file, c'est--dire qui lui alloue un processeur libre. La figure montre le cas d'un

    systme multiprocesseur ; le rpartiteur doit alors choisir quel processeur allouer. Dans un systme

    monoprocesseur, cette question ne se pose videmment pas et souvent alors, ordonnanceur et rpartiteur

  • sont confondus. Une fois lu par le rpartiteur, le processus s'excute. S'il quitte le processeur, sur

    premption, il rintgre la file des processus prts ; au contraire, s'il quitte le processeur sur un blocage, il

    intgre la file des processus bloqus. Dans les deux cas, un nouveau processus est lu (la tte de file des

    processus prts). Plus prcisment, la file d'attente des processus bloqus est souvent organise en files

    multiniveaux, chaque niveau correspondant une attente d'un vnement/ ressource particulier auquel

    peut tre ventuellement associ une priorit. Dans le cas o des vnements se produisent

    simultanment, cette priorit sert alors dterminer quel vnement doit tre trait en premier.

    Fig 3 : Ordonnanceur et rpartiteur

    Dfinition : OrdonnanceurL'ordonnanceur est un programme systme dont le rle est d'allouer le processeur un processus prt.

  • Ordonnancement>Ordonnancement de processus>Algorithmes d'ordonnancement

    1.2 Les politiques d'ordonnancement

    Dfinition : Politique d'ordonnancementLa politique d'ordonnancement dtermine le choix d'un processus lire parmi tous ceux qui sont prts.

    1.2.1 Objectifs des politiques d'ordonnancement Les buts de l' ordonnancement diffrent en fonction du type de systmes.

    Systmes de traitements par lots. Le but est de maximiser le dbit du processeur ; c'est--dire le

    nombre moyen de processus traits par unit de temps.

    Systmes interactifs. Les buts principaux de l'ordonnancement sont premirement de maximiser le

    taux d'occupation du processeur, c'est--dire le rap port entre le temps o le processeur est actif et

    le temps total. En thorie, ce taux peut varier entre 0% et 100 % ; dans la pratique, on peut observer

    un taux d'occupation variant entre 40 % et 95 %. Deuximement, on va chercher minimiser le

    temps de rponse des processus, c'est--dire la dure sparant l'instant de soumission du

    processus au systme de la fin d'excution du processus. Au mieux, le temps de rponse peut tre

    exactement gal au temps d'excution du processus, lorsque le processus a immdiatement t lu

    et s'est excut sans tre prempt.

    Systmes temps rel. Le but principal est d'assurer le respect des contraintes de temps lies aux

    processus.

    1.2.2 Les principales politiques d'ordonnancement Nous dcrivons ci-dessous les politiques mises en oeuvre dans des systmes interactifs ou traitements

    par lots. Les politiques spcifiques aux systmes temps rel sont abordes dans la leon suivante.

    1.2.2.1 Politique d'ordonnancement "premier arriv, premier servi" (FIFO).

    C'est une politique l'anciennet, sans rquisition ; l'unit centrale est alloue selon l'ordre de soumission

    des processus. Dans cette politique, des processus de faible temps d'excution peuvent tre pnaliss

    parce qu'un processus de longue dure les prcde dans la file.

    http://nefertiti/mps/ns/chap3/intro_ordonnancement.html

  • Fig 4 : Politique Premier Arriv, Premier Servi

    1.2.2.2 Politique d'ordonnancement "plus court d'abord"

    Cette politique tente de remdier l'inconvnient mentionn pour la politique prcdente. Maintenant,

    l'unit centrale est alloue au processus de plus petit temps d'excution. Cette politique est galement une

    politique sans rquisition. Elle a la proprit de minimiser le temps de rponse moyen pour l'ensemble des

    algorithmes d'ordonnancement sans rquisition. Elle pnalise les travaux longs. Elle impose galement

    d'estimer la dure des processus ce qu'on ne connat pas habituellement. Il existe une version avec

    rquisition de cette politique appele "temps restant le plus court d'abord" : dans ce cas, le processus en

    excution restitue le processeur lorsqu'un nouveau processus de temps d'excution infrieur son temps

    d'excution restant devient prt.

    1.2.2.3 Politique d'ordonnancement par tourniquet (Round Robin)

    On dfinit une tranche de temps appele quantum qui peut varier de 10 ms 100 ms. Chaque processus

    prsent dans la file des processus prts acquiert le processeur tour de rle, et ce pour au maximum un

    temps gal au quantum de temps. Si le processus a termin son excution avant la fin du quantum, il libre

    le processeur et le processus suivant dans la file des processus prts est lu. Si le processus n'a pas

    termin son excution avant la fin du quantum, il perd le processeur et est rinsr en fin de file des

    processus prts. Cette politique du tourniquet est usuellement utilise dans les systmes en temps partag.

    Sa performance dpend largement de la taille du quantum. Un quantum trop grand augmente les temps de

    rponse alors qu'un quantum trop petit multiplie les commutations de contexte jusqu' les rendre non

    ngligeables.

  • Fig 6 : Politique par tourniquet

    1.2.2.4 Politique d'ordonnancement par priorits constantes

    Un niveau de priorit constant est affect chaque processus et un instant donn, le processus lu est

    toujours celui de plus forte priorit. Cet algorithme prsente une version sans rquisition et une version

    avec rquisition. Le dfaut de cette politique est le risque de famine encouru par le processus de faible

    priorit. Une solution ce problme est de faire "vieillir" la priorit des processus en attente, c'est--dire

    d'augmenter celle-ci en fonction du temps d'attente. La priorit des processus devient ainsi variable.

    Complment : La famine est la situation o un processus ne peut disposer d'une ressource qu'il demande (ici le processeur)

  • Fig 7 : Politique par priorits constantes

    1.2.2.5 Politique d'ordonnancement par files de priorits constantes multiniveaux avec ou sans extinction de priorit Les politiques prsentes jusqu' prsent utilisent une seule file d'attente des processus prts. On choisit

    ici de dfinir plusieurs files de processus prts, chaque file correspondant un niveau de priorit ; on peut

    alors avoir n files de priorits diffrentes variant de 0 n-1. Dans une file donne, tous les processus ont la

    mme priorit et sont servis soit selon une politique l'anciennet sans premption , soit selon une

    politique de tourniquet. Le quantum peut tre diffrent selon le niveau de priorit de la file. L' ordonnanceur

    sert d'abord tous les processus de la file de priorit n, puis ceux de priorit n-1 ds que la file de niveau n

    est vide et ainsi de suite...

    On peut dfinir deux variantes de l'algorithme, fonction de l'volution de la priorit des processus :

    les priorits des processus sont constantes tout au long de leur excution. A ce moment-l, un

    processus en fin de quantum est toujours rinsr dans la mme file d'attente, celle correspondant

    son niveau de priorit.

    les priorits des processus voluent dynamiquement en fonction du temps de service dont a

    bnfici le processus. Ainsi un processus de priorit n, la fin du quantum de la file n, si il n'a pas

    termin son excution, n'est pas rinsr dans la file de priorit n, mais dans la file de priorit n-1. Et

    ainsi de suite... On cherche ici minimiser les risques de famine pour les processus de faible priorit

    en faisant petit petit baisser la priorit des processus de plus forte priorit.

  • Fig 8 : Politique par priorits multiniveaux avec ou sans extinction de priorit

    1.2.2.6 Les politiques d'ordonnancement sous le systme Linux Il existe trois politiques (classes) d' ordonnancement dans Linux qui correspondent aux politiques dfinies

    dans la norme pour les systmes d'exploitation ouverts, POSIX.: deux sont dites temps rel, SCHED_FIFO

    et SCHED_RR, la troisime est classique SCHED_OTHER. On peut attribuer un processus l'une de ces

    trois classes grce l'appel systme : sched_setscheduler(). Comme dans les systmes Unix, la politique

    d'ordonnancement SCHED_OTHER de Linux a plusieurs objectifs : avoir de bons temps de rponses,

    assurer une bonne capacit de traitement et essayer de rpartir quitablement le temps CPU entre les

    diffrents processus. Elle correspond ce qu'on appelle la politique "en temps partag". Chaque processus

    Linux a une priorit variable qui dpend de nombreux facteurs parmi lesquels nous pouvons citer le taux

    d'utilisation de la CPU et l'intensit des entres / sorties.

    Il existe deux autres classes d'ordonnancement dites temps rel : SCHED_FIFO et SCHED_RR.Les

    rubriques "policy" et "rt_priority" stockes dans la structure des processus Linux permettent de leur attribuer

    une classe d'ordonnancement et une priorit temps rel. SCHED_FIFO et SCHED_RR ne sont pas des

    classes temps rel strictes, mais relatives. Quand un processus temps rel est prt, tous les processus de

    priorit infrieure sont mis de ct. Un processus de la classe SCHED_FIFO peut s'excuter jusqu' la fin

    de son traitement ou jusqu' ce qu'un processus de la classe SCHED_FIFO de priorit temps rel plus forte

    soit prt. Un processus de la classe SCHED_RR est interrompu la fin de son quantum de temps ou ds

    qu'un processus de priorit temps rel (SCHED_FIFO ou SCHED_RR) suprieure est prt. Il existe dans

    cette classe un principe de tourniquet parmi les processus de mme priorit.

  • Ordonnancement>Ordonnancement de processus>Un petit test ordonnancement

    Exercice

    Quelques questions d'ordonnancement

    Question : Soient trois processus A, B, C soumis dans cet ordre de temps d'excution respectif 4, 2, 9. Quelles propositions

    sont exactes ?

    Avec une politique FIFO, l'ordre d'excution est C, B puis A Avec une politique Plus Court d'Abord, l'ordre d'excution est B, A, puis C Avec une politique par priorit fixe, l'ordre d'excution est A, B, puis C

    Rponse :

    Avec une politique Plus Court d'Abord, l'ordre d'excution est B, A, puis C

    Question : Le processus A de priorit 5 s'excute. Le processus B de priorit 7 se rveille. Quelles sont les propositions

    justes ?

    B interrompt l'excution de A car B est plus prioritaire et l'ordonnancement est premptif A continue son excution car il est plus prioritaire et l'ordonnancement est premptif A continue son excution car l'ordonnancement est non premptif B interrompt l'excution de A car B est plus prioritaire et l'ordonnancement est non premptif

    Rponse :

    A continue son excution car il est plus prioritaire et l'ordonnancement est premptif ou A continue son excution car l' ordonnancement est non premptif

    Question : Un processus rentrant est :

    Un programme excutable lanc plusieurs fois en parallle Un processus qui a termin son excution Un programme excutable qui modifie son code.

    Rponse :

    un programme excutable lanc plusieurs fois en parallle

    http://nefertiti/mps/ns/chap3/intro_ordonnancement.html

  • Ordonnancement>Ordonnancement de processus>Ordonnancement sous Unix

    1.3 Ordonnancement sous le systme Unix

    Les oprations relatives l' ordonnancement sont ralises par le systme Unix chaque fois qu'un

    processus s'apprte passer du mode systme au mode utilisateur, donc la suite de l'occurrence soit

    d'une interruption, d'un appel systme ou d'une trappe. La politique d'ordonnancement du systme Unix est

    une politique multiples niveaux de priorit avec quantum de temps. Le noyau recalcule la priorit d'un

    processus quand il passe du mode noyau au mode utilisateur. Dans une premire approche, ce calcul

    permet une extinction de priorit des processus qui s'excutent de manire permettre l'excution de tous

    les processus et viter les problmes de famine

    1.3.1 Structures de donnes lies l'ordonnancement La priorit de chaque processus est code dans l'entre de la table des processus qui lui correspond. La

    plage des priorits des processus est partitionne en deux sous-ensembles. Chaque ensemble contient

    plusieurs niveaux de priorits et chaque niveau de priorit est associ une file d'attente (fig 9) :

    Fig 9 : Files de priorits pour l'ordonnancement sous Unix

    les priorits utilisateurs : ce sont les processus prempts par l' ordonnanceur au moment de leur

    retour en mode utilisateur. Un processus qui se rveille quitte la priorit noyau pour rintgrer les

    http://nefertiti/mps/ns/chap3/intro_ordonnancement.html

  • priorits utilisateur. La procdure de traitement de l'interruption horloge ajuste les priorits des

    processus en mode utilisateur toutes les secondes et fait entrer le noyau dans son algorithme

    d'ordonnancement pour viter qu'un processus monopolise l'unit centrale

    les priorits noyau : ce sont des processus endormis en attente d'un vnement. La file o le

    processus s'endort est fonction de l'vnement attendu et la priorit correspond une "prfrence"

    sur les rveils suite un vnement. Un processus endormi en priorit noyau demeure toujours

    dans la file o il s'est endormi

    1.3.2 Algorithmes d'ordonnancement mis en oeuvre L'algorithme mis en uvre s'appuie sur la routine d'interruption horloge qui fait rgulirement passer le

    processus en mode noyau. Plus prcisment :

    A chaque interruption horloge, le systme incrmente de une unit la valeur du champ "utilisation du

    processeur" pour le processus lu.

    Toutes les secondes c'est--dire toutes les 50 100 interruptions horloge, la valeur du

    champ "utilisation du processeur" pour tous les processus est divise par deux. Puis la priorit des

    processus est recalcule selon la formule suivante : priorit du processus = Utilisation du processeur

    /2 + (priorit de base du niveau utilisateur) Du fait de ce recalcul des priorits; les processus se

    dplacent dans les files de priorit

    Un exemple de mise en uvre On considre trois processus A, B et C qui ont chacun une priorit initiale de 60. La priorit de base du niveau utilisateur est galement la priorit 60. L'interruption horloge se dclenche 60 fois par seconde. A l'instant 0, le processus A est lu. Chaque seconde, l'interruption horloge survient et le champ "utilisation du processeur " (compte UC sur la figure 10) est incrment de une unit. Au bout de 60 secondes (instant t = 1), la priorit des processus est recalcule. Du fait que les processus B et C ne se sont pas encore excuts leur priorit est inchange (le compte UC est nul pour ces processus). La priorit du processus A par contre baisse et devient gale 75 (60 + 30/2). C'est donc le processus B qui est prsent lu. A l'instant 2, de nouveau les priorits sont recalcules. Le compte UC du processus C tant toujours nul , la priorit de ce processus n'est pas modifie. Les priorits du processus A et B par contre voluent et deviennent respectivement gales 67 pour le processus A (60 + 15/2) et 75 pour le processus B. On voit prsent que le processus A a une priorit qui remonte du fait qu'il n'a pas pu utiliser l'unit centrale.

  • Fig 10 : Exemple de mise en uvre de l'ordonnancement sous Unix

  • Ordonnancement>Ordonnancement de processus>Ordonnancement temps rel

    1.4 Ordonnancement temps rel

    1.4.1 Caractristiques de l'ordonnancement temps rel Dans un systme temps rel, le but principal de l'ordonnancement est de permettre le respect des

    contraintes temporelles associes l'application et aux tches. Chaque tche possde un dlai critique qui

    est le temps maximal dont elle dispose pour s'excuter depuis sa date de rveil. La date butoir rsultante

    est appele chance. Le dpassement d'une chance est appel faute temporelle. Beaucoup

    d'applications temps rel sont des applications embarques et critiques et il est ncessaire de certifier l'

    ordonnancement ralis, c'est--dire de vrifier avant le lancement de l'application (hors ligne) le respect

    des contraintes temporelles. Cette certification s'effectue l'aide de tests d'acceptabilit qui prennent en

    compte les paramtres temporels des tches et notamment les temps d'excutions des tches. Il faut donc

    pouvoir connatre ces temps d'excutions et surtout pouvoir les borner. Pour cela l'excutif doit tre

    dterministe. Les tests d'acceptabilit sont rarement des conditions ncessaires et suffisantes. On tablit

    donc soit des conditions ncessaires, soit des conditions suffisantes. Les tests d'acceptabilit utilisent les

    temps d'excution maximum des tches pour pouvoir certifier les excutions. Il faut donc tre capable de

    calculer ces temps d'excutions maximums. Pour cela, le sup port d'excution, l'excutif temps rel, doit

    tre dterministe. Un excutif temps rel dterministe est un excutif pour lequel les temps de certaines

    oprations systme et matrielles lmentaires peuvent tre borns : temps de commutation, temps de

    prise en compte des interruptions, etc...

    1.4.2 Les algorithmes d'ordonnancement temps rel

    1.4.2.1 Classification des algorithmes d'ordonnancement temps rel L'ordonnancement peut tre en ligne ou hors ligne. Un ordonnancement hors ligne tablit avant le

    lancement de l'application une squence fixe d'excution des tches partir de tous les paramtres de

    celles-ci. Cette squence est range dans une table et excute en ligne par un automate. Avec un

    ordonnancement en ligne, la squence d'excution des tches est tablie dynamiquement par

    l'ordonnanceur au cours de la vie de l'application en fonction des vnements qui surviennent (rveils des

    tches, blocage, etc...). Dans ce dernier cas, l' ordonnanceur choisit le prochaine tche lire en fonction

    d'un critre de priorit.

    1.4.2.2 Modlisation de l'application temps rel pour la certification On distingue deux types de tches pour la modlisation de l'application :

    les tches priodiques : Elles correspondent aux mesures sur le procd ; elles se rveillent

    http://nefertiti/mps/ns/chap3/intro_ordonnancement.html

  • rgulirement (toutes les P units de temps)

    les tches apriodiques : Elles correspondent aux vnements ; elles se rveillent de manire

    alatoire

    Les tches priodiques

    On distingue :

    priodiques strictes : contraintes temporelles dures respecter absolument

    priodiques relatives : contraintes temporelles molles qui peuvent tre non respectes de temps

    autre (sans chance)

    priodiques chance sur requte (dlai critique = priode)

    Une tche priodique Tp (r0, C, R, P) est caractrise par les paramtres temporels suivants avec 0 ???C

    ?????R ????P :

    r0, sa date de premier rveil

    P, sa priode

    rk, la date de rveil de la kme requte, rk = r0 + kP

    C, son temps d'excution maximum

    R, son dlai critique et dk, sa date d'chance qui est telle que chance d = rk + R

    C(t) : le temps d'excution restant t

    R(t) : le dlai critique dynamique c'est- dire le temps restant t jusqu' d.

    Une tche priodique relative n'a pas de paramtre R dfini. Une tche priodique chance sur requte

    est une tche pour laquelle R = P.

  • Fig 11 : Modle de tche priodique

    Les tches apriodiques

    On distingue :

    apriodiques strictes : contraintes temporelles dures respecter absolument

    apriodiques relatives : contraintes temporelles molles qui peuvent tre non respectes de temps

    autre (sans chance)

    Une tche apriodique Tap (r0, C, R) est caractrise par les paramtres temporels suivants avec 0 ???C

    ????R :

    r, sa date de rveil

    C, son temps d'excution maximum

    R, son dlai critique et dk, sa date d'chance qui est telle que chance d = rk + R

    C(t) : le temps d'excution restant t

    R(t) : le dlai critique dynamique c'est- dire le temps restant t jusqu' d.

    Une tche apriodique relative n'a pas de paramtre R dfini.

    Fig 12 : Modle de tche apriodique

    1.4.2.3 Ordonnancement en ligne premptifs pour des tches priodiques indpendantes. Nous ordonnanons un ensemble de tches priodiques (configuration). Les priorits affectes aux tches

  • sont soit constantes (values hors ligne et fixes par la suite), soit dynamiques (elles changent dans la vie

    de la tche) L'ordonnancement d'un ensemble de tches priodiques est cyclique et la squence se rpte

    de manire similaire sur ce que l'on appelle la priode d'tude. Pour un ensemble de tches dpart

    simultane (t = 0), la priode d'tude est : [0, PPCM(Pi)]

    L'ordonnancement Rate Monotonic (RM) Avec cet algorithme, la priorit d'une tche est fonction de sa priode, de telle sorte que la tche de plus

    petite priode est la tche la plus prioritaire. Pour un ensemble de tches chance sur requte, le test

    d'acceptabilit d'une configuration de n tches est (condition suffisante) donn sur la figure qui suit. La

    figure ci-dessous donne un exemple pour trois tches priodiques chance sur requte, Tp1(r0=0, C=3,

    P=20), Tp2(r0=0, C=2, P=5) et Tp3(r0=0, C=2, P=10). La tche la plus prioritaire est la tche Tp2 et la

    tche la moins prioritaire est la tche Tp1. La squence est dcrite sur la priode d'tude, soit l'intervalle [0,

    20]. Les trois tches respectent leurs contraintes temporelles. La condition suffisante est vrifie ; on a

    : 3/20 + 2/5 + 2/10 = 0.75 < 0.77

    Fig 13 : Ordonnancement Rate Monotonic

    Ordonnancement Inverse Deadline (ID) Avec cet algorithme, la priorit d'une tche est fonction de son dlai critique. La tche la plus prioritaire est

    la tche de plus petit dlai critique. Cet algorithme constitue une gnralisation de l'algorithme Rate

    Monotonic des tches quelconques. Une condition suffisante d'acceptabilit de tches est donn sur la

    figure qui suit : La figure ci-dessous donne un exemple pour trois tches priodiques Tp1(r0=0, C=3, R=7,

    P=20), Tp2(r0=0, C=2, R=4, P=5) et Tp3(r0=0, C=2, R=9, P=10). La tche la plus prioritaire est la tche

    Tp2 et la tche la moins prioritaire est la tche Tp3. La condition suffisante n'est pas vrifie ; en effet on a :

  • 3/7 + 2/4 + 2/9 = 1.14 > 1. Mais le chronogramme construit sur la priode d'tude de la configuration prouve

    que l' ordonnancement des trois tches s'effectue sans faute temporelle.

    Fig 14 : Ordonnancement Inverse Deadline

    Ordonnancement Earliest Deadline (EDF) La priorit maximale l'instant t est accorde la tche dont l'chance est la plus proche. La priorit des

    tches est maintenant dynamique. La figure ci-dessous donne un exemple pour trois tches priodiques

    Tp1(r0=0, C=3, R=7, P=20), Tp2(r0=1, C=2, R=4, P=5) et Tp3(r0=0, C=1, R=8, P=10). l'instant t=0, les

    trois tches sont rveilles et la tche pour laquelle l'chance est la plus proche est la tche Tp2, qui donc

    s'excute. l'instant t=2, la tche Tp2 a termin son excution et c'est maintenant la tche Tp1 qui est la

    plus prioritaire. l'instant t=5, la tche Tp1 se termine et la tche Tp2 se rveille de nouveau. Mais, c'est

    maintenant la tche Tp3 pour laquelle la date d'chance est t=8 qui est devenue la plus prioritaire. C'est

    donc elle qui s'excute. On voit donc que contrairement ce qui se passe avec les algorithmes priorit

    fixe o les priorits des tches sont calcules une fois pour toutes l'initialisation du systme, ici les

    priorits des tches voluent les unes par rapport aux autres en fonction de leur urgence. Ainsi, l'instant

    t=0, la tche Tp2 est plus prioritaire que la tche Tp3, mais le rap port d'urgence est invers l'instant t=5.

  • Fig 15 : Ordonnancement Earliest Deadline

  • Ordonnancement>Ordonnancement de processus>LinuxRT

    1.5 Une application temps rel sous RT-Linux

    Le systme RT-Linux est une extension du systme Linux classique vers le temps rel. Il est constitu par

    un noyau temps rel Rt-Linux qui partage le processeur avec le noyau de base Linux et excute des tches

    temps rel.

    1.5.1 Les tches RT-Linux.

    1.5.1.1 Mise en uvre. Les tches RT-Linux s'excutent dans l'espace adresse du noyau Linux au mme titre que l' ordonnanceur

    temps rel. Il existe dans les versions rcentes de Linux la possibilit de charger dynamiquement des

    modules dans l'espace adresse du noyau et de les "lier" au code du noyau. On parle de "modules

    chargeables". En effet, pour limiter la taille du noyau Linux et librer ainsi plus de place mmoire pour

    l'utilisateur, on vite de compiler le noyau avec des composants qui ne sont pas ncessaires tout

    moment. Ces composants sont par exemple des gestionnaires de priphriques. Lorsqu'on a besoin

    d'ajouter ou de supprimer l'un de ces composants, on n'a plus besoin de recompiler tout le noyau comme

    cela tait le cas auparavant: le composant est charg ou dcharg dynamiquement l'aide d'un module. Il

    faut simplement configurer le noyau avant sa compilation pour qu'il accepte de grer les modules

    chargeables: Ainsi, les tches RT-Linux sont cres l'aide d'un "module chargeable". Il y a plusieurs avantages mettre les tches dans l'espace adresse du noyau:

    Elles partagent le mme espace adresse.

    Comme elles sont dans l'espace adresse du noyau, on limine la charge occasionne par tout

    changement de niveau de protection.

    Un avantage plus pratique que performant. Dans l'espace adresse du noyau, il est permis de faire

    rfrence aux objets et aux fonctions par leur nom plutt que par leur descripteur. C'est l'dition de

    lien dynamique des "modules chargeables" qui rsoudra les symboles en adresse.

    En conclusion cette solution, qui consiste mettre les tches temps rel dans l'espace adresse du noyau

    permet d'optimiser les performances de RT-Linux. En contrepartie, cette solution com port e un risque :

    Un "Bug" dans une tche temps rel peut mettre en danger tout le systme. Ce risque est renforc avec

    l'utilisation du langage C, notamment les pointeurs. La seule garantie ce niveau est la rigueur du

    programmeur.

    http://nefertiti/mps/ns/chap3/intro_ordonnancement.html

  • Le mode opratoire consiste en gnral crer toutes les tches lors du chargement du module (fonction

    init_module()) et les supprimer uniquement au dchargement (fonction cleanup_module). La structure

    "rt_task_struct" (ou RT_TASK par " typedef struct rt_task_struct RT_TASK ;") des tches temps rel dans

    RT-Linux est la suivante :

    int *stack ; /* hardcoded */

    int uses_fp ; /* this one is too*/

    int magic ;

    int state; Etat de la tche : RT_TASK_READY,...

    int *stack_bottom ; Pointeur de pile.

    int priority ; Politique d' ordonnancement base sur la priorit seule.

    RTIME period; P : Priode si la tche est priodique.

    RTIME resume_time; r : Prochaine heure de rveil .

    struct rt_task_struct *next; Chanage simple de l'ensemble des tches cres dans l'application.

    RTL_FPU_CONTEXT fpu_regs ;

    Les fonctions de gestion des tches temps rel dans RT-Linux sont listes ci-dessous. Les tats voqus

    sont prsents dans les figures qui suivent.

    int rt_task_init (RT_TASK *task, void (fn)(int data), int data, int stack_size, int priority) : Cration

    d'une tche RT_Linux pointe par "task". Il y a rservation d'espace mmoire dans le noyau

    (kmalloc) hauteur de stack_size. "fn" est le code excut par la tche. "data" est le paramtre

    pass "fn" au dmarrage. "priority" est la priorit de la tche dont la valeur peut aller de 1, la plus

    forte priorit, "RT_LOWEST_PRIORITY" (1000000), la plus faible.

    int rt_task_delete (RT_TASK *task) : Suppression logique d'une tche : Pas de libration de l'espace

    mmoire "kfree" ce niveau. Son tat passe RT_TASK_ZOMBIE.

    int rtl_delete_zombies (void) : Suppression relle de l'ensemble des tches logiquement supprimes

    par "rt_task_delete". "kfree" est effectu ici.

    int rt_task_make_periodic (RT_TASK *task, RTIME start_time, RTIME period) : Rend la tche "*task"

    priodique avec une priode "period" partir de la premire date de rveil "start_time".

    int rt_task_wait (void) : Suspension de la tche priodique jusqu' sa prochaine date de rveil. Elle

    met la tche qui l'a appele dans l'tat RT_TASK_DELAYED. En gnral toute tche priodique

    indique par cette fonction qu'elle a termin son traitement : ce doit donc tre la dernire instruction

    du code de la tche. Les tches apriodiques ne s'en servent pas car l'tat RT_TASK_DELAYED ne

    leur correspond pas.

    int rt_task_wakeup (RT_TASK *task) : Dclenche la tche "task", c'est--dire la met dans l'tat prt

    RT_TASK_READY.

    int rt_task_suspend (RT_TASK *task) : Inactive la tche "task", c'est--dire la met dans l'tat

    RT_TASK_DORMANT. En gnral, cette routine est utilise par les tches apriodiques la place

    de rt_task_wait pour signaler la fin de leur traitement. Une tche priodique ou apriodique peut tre

  • suspendue par une autre tche ou par l' ordonnanceur .

    Les figures jointes donnent les graphes d'tat des tches priodiques et apriodiques pour Rt-Linux

    Tches priodiques.

    Tches apriodiques.

  • 1.5.1.2 Format d'une application. La dclaration des tches priodiques et apriodiques dans RT-Linux se fait l'aide d'un module noyau

    dont nous prsentons le squelette ci-dessous : On suppose que ce module s'appelle RT_PROCESS.C et qu'il va crer deux tches : T1 et T2. T1 est une

    tche priodique et T2 apriodique. Le module s'installe dans le noyau par : insmod RT_PROCESS.O On le dcharge du noyau par : rmmod

    RT_PROCESS

    #define MODULE

    #include

    #include

    #include

    #include

    #include

    #include

    #define NTASKS 2

    RT_TASK tasks[NTASKS]

    Fonction 1 /*-- Fonction 1 = traitement de la tche priodique 1 --*/ Code de la fonction excute par la tche priodique 1; l'affectation de cette fonction la tche 1 est faite par rt_task_init (Cf. plus bas). Toute tche priodique doit terminer son traitement par l'appel la fonction rt_task_wait(). Cette routine met la tche dans l'tat RT_TASK_DELAYED, rinitialise la prochaine date de rveil et fait appel l'ordonnanceur rtl_schedule().

    void f_tche_1(int par1) {

  • rt_task_wait() ; } Fonction 2 /*-- Fonction 2 = traitement de la tche apriodique 2 --*/ Code de la fonction excute par la tche apriodique 2. Toute tche apriodique doit terminer son traitement par l'appel la fonction rt_task_suspend() sur elle-mme. Cette routine met la tche dans l'tat RT_TASK_DORMANT et fait appel l'ordonnanceur rtl_schedule(). void f_tche_2(int par2) { rt_task_suspend(&(tasks[2])) ; } Interruption Tache 2 /*-- Gestionnaire de l'interruption associe la tche 2 --*/ La tche apriodique 2 est associe un niveau d'interruption dont l'apparition active le gestionnaire T2_Handler(). L'association entre le numro d'interruption et le gestionnaire sera vue plus bas. Ce gestionnaire a au moins pour rle de rveiller la tche apriodique concerne. Cette fonction met la tche dans l'tat RT_TASK_READY et appelle l'ordonnanceur. int T2_handler() { rt_task_wakeup(&(tasks[2])) ; } /*-- Ordres lancs l'installation du module: RT_PROCESS --*/ Lorsqu'un module est charg sous Linux (>insmmod RT_Process.o), il commence par effectuer la fonction init_module(). Cette fonction doit donc figurer dans tous les modules chargeables. Dans RT-Linux, on lui attribue le rle de l'initialisation des tches temps rel (rt_task_init), de l'initialisation des priodes et des dates de rveil pour les tches priodiques (rt_task_make_periodic) et de l'association des niveaux d'interruptions aux gestionnaires associs (request_RTirq). int init_module(void) {

  • rt_task_init(&(tasks[0]), f_tche_1, 0, 3000, 4) ; rt_task_init(&(tasks[1]), f_tche_2, 1, 3000, 5) ; rt_task_make_periodic(&(tasks[0]), 5, 10) ; request_RTirq(2, &T2_handler) ; return 0 ; } /*-- Ordres lancs la suppression du module: RT_PROCESS --*/ void cleanup_module(void) Lorsqu'un module est dcharg sous Linux, il excute systmatiquement la fonction cleanup_module(). Cette fonction doit donc figurer dans tous les modules chargeables. Dans RT-Linux, on lui attribue le rle de suppression des tches temps rel (rt_task_delete) ainsi que celui de la libration des interruptions (free_Rtirq). { rt_task_delete(&(tasks[0])) ; rt_task_delete(&(tasks[1])) ; free_Rtirq(2) ; }

    1.5.2 L'ordonnancement. Dans la version 1.2 de RT-Linux, prsente sur le site officiel du systme, trois ordonnanceur s premptifs

    ont dj t installs :

    Un ordonnanceur " priorit fixe" : il s'appuie sur le paramtre "priority" dfini au niveau de chacune

    des tches. Lorsque plusieurs tches sont prtes, celle qui a la priorit la plus forte (la valeur la plus

    petite) est lue. Une tche qui se rveille (RT_TASK_READY) pourra prempter la tche active si sa

    priorit est plus forte.

    Un ordonnanceur "Rate-Monotonic" : nous ne nous y intresserons pas, compte-tenu des limites de

    cette politique vis--vis des tches apriodiques.

    Un ordonnanceur "EDF" ("Earliest Deadline First") : Il utilise l'urgence comme critre de slection de

    la prochaine tche lire.

  • Ordonnancement>Exercices dirigs

    2 Exercices dirigs

    2.1 Primitives de recouvrement Exec

    Prambule : rappel du format des primitives de la famille exec

    2.1.1 Exercice 1 Ecrivez un programme o un processus cre un fils, ce fils excutant la commande ls l :. Le pre attend la

    fin de son fils. Par ailleurs, chacun des processus affiche son pid ; le fils affiche le pid de son pre et le pre

    affiche le pid de son fils.

    2.1.2 Exercice 2 On reprend le programme essai.c de l'exercice 4 de l'ed 2, dont le code est redonn ci-aprs.

    On souhaite modifier ce code de manire remplacer la partie fils par un appel une primitive exec.

    Donnez la modification du programme essai.c rsultante et le code du programme lire_fichier.c excut par

    le fils.

    2.1.3 Exercice 3 On souhaite crire un pseudo-code correspondant lalgorithme suivi par le shell. les tapes (simplifies)

    du shell sont les suivantes :

    Le shell lit une ligne de commande sur son entre standard et l'interprte selon un ensemble de

    rgles fixes (on ne s'intresse pas au dtail de cette analyse)

    le shell gre deux types de commandes :

    les commandes en premier plan qui correspondent des processus pouvant lire et crire sur le

    http://nefertiti/mps/ns/chap3/intro_ordonnancement.html

  • terminal.

    les commandes en arrire plan qui sont "dtaches" du terminal, c'est--dire qui ne peuvent plus lire

    et crire sur celui-ci.

    Lorsqu'il traite une commande en premier plan, le shell attend la fin de celle-ci avant de prendre en compte

    une nouvelle commande. Au contraire lorsque le shell traite une commande en second plan, il n'attend pas

    la fin de celle-ci pour prendre en compte une nouvelle commande.

    Ecrivez la boucle d'excution du shell. Voir la correction

  • Chapitre 4 : Outils de communication centraliss entre processus

    Ce chapitre est consacr l'tude de deux outils de communication centraliss entre processus Unix : les tubes anonymes et les messages queues.

    Cours : Les tubes anonymes

    Dfinition et proprits d'un tube anonyme. Les primitives associes au tube anonyme

    La cration d'un tube La fermeture du tube Lecture dans le tube p Ecriture dans le tube p

    Un exemple de programmation avec les tubes anonymes. Dfinition et proprits des MSQ Les primitives associes aux MSQ

    Cration et accs une MSQ Envoi d'un message dans la file de messages Rception d'un message depuis la file de messages Destruction d'une file de messages

    Un exemple de programmation avec les MSQ.

    Exercices dirigs

    Primitives d'utilisation des tubes Exercice 1 Exercice 2

    Table des figures

  • Outils de communication centraliss entre processus>Les tubes anomymes

    1 Cours : Les tubes anonymes

    Ce cours s'intresse un premier outil de communication entre processus placs sur une mme machine :

    les tubes anonymes. Un tube (pipe en anglais) est un fichier particulier. Il existe deux types de tube: . les tubes anonymes . les tubes nomms Le fichier tube est un outil de communication unidirectionnel qui est gr par le noyau comme une file de

    donnes FIFO. Les lectures sont destructives car tout caractre lu est extrait de la file d'attente. Deux

    nombres im port ants caractrisent le tube:

    le nombre de lecteurs : si ce nombre est nul, les lectures ne sont pas autorises dans tube.

    le nombre d'crivains : si ce nombre est nul, . il est quivalent une fin de fichier.

    1.1 Dfinition et proprits d'un tube anonyme.

    Un tube anonyme encore appeler tube ordinaire est associ un nud du systme de gestion de fichiers,

    mais il reprsente un fichier qui n'a pas de nom. Ce fichier est supprim ds qu'il n'y a plus de processus

    pour l'utiliser. Un tube anonyme n'ayant pas de nom, il ne peut tre connu que par la possession des

    descripteurs qui lui donnent accs. La connaissance de ces descripteurs par un processus s'effectue de

    deux moyens:

    Le processus connat les descripteurs associs au tube car il a cr le tube.

    Le processus connat les descripteurs associs au tube car il a hrit de ces descripteurs. On voit

    donc que seuls les processus de la descendance du crateur du tube dont les anctres connaissent

    eux-mmes les descripteurs sont habilits utiliser le