Interruptions Et signaux Plan this pageInterruptions et signaux _____ © Telecom-ParisTech BCI...

Click here to load reader

  • date post

    15-Mar-2018
  • Category

    Documents

  • view

    215
  • download

    1

Embed Size (px)

Transcript of Interruptions Et signaux Plan this pageInterruptions et signaux _____ © Telecom-ParisTech BCI...

  • Interruptions et signaux

    _______________________________________________ Telecom-ParisTech BCI Informatique

    122

    Interruptions Et signaux

    Plan

    Introduction

    Interruptions

    Signaux

    - Emission

    - Rception

    - Traitement

    - Exemples

    o SIGSEGV

    o SIGALRM

    o SIGCHLD

  • Interruptions et signaux

    _______________________________________________ Telecom-ParisTech BCI Informatique

    123

    Introduction Nous prsentons ici les moyens qui permettent de grer les vnements qui arrivent paralllement au droulement dun processus. Ces vnements ont diffrentes origines:

    - matrielles : arrive dune trame rseau, saisie clavier, - logicielles : erreur dadressage, dpassement de capacit de la pile,

    Ces vnements peuvent tre destins au processus lui-mme, Ces vnements peuvent tre destins un autre processus.

  • Interruptions et signaux

    _______________________________________________ Telecom-ParisTech BCI Informatique

    124

    Introduction

    La prise en compte matrielle de ces vnements est faite sous forme de variation dtat dune des lignes du bus, appele ligne dinterruption :

    Le processeur dtecte cette variation, le systme dexploitation la prend en charge et la rpercute vers le processus concern, Sous Unix loutil utilis pour remonter les interruptions vers un processus sappelle signal.

  • Interruptions et signaux

    _______________________________________________ Telecom-ParisTech BCI Informatique

    125

    Retour sur les transitions entre tats

    Rappel : graphe dtat des processus :

    Le processeur excute le programme associ au processus actif :

    - sur une machine monoprocesseur, cadre de notre tude, un seul programme est excut la fois.

    Question : comment va se faire la transition vers un autre tat ? - on ne voit pas comment : le processeur excute un programme,

    le compteur ordinal va donc rester lintrieur de ce programme,

    - il faut donc introduire un mcanisme matriel qui indique au processeur darrter le traitement courant,

    - ce mcanisme sappelle une interruption.

    activation

    dsactivation

    blocagerveil

    actif

    en attente

    prt

  • Interruptions et signaux

    _______________________________________________ Telecom-ParisTech BCI Informatique

    126

    Plan Introduction

    Interruptions

    Signaux

    - Emission

    - Rception

    - Traitement

    - Exemples

    o SIGFPE

    o SIGALRM

    o SIGCHLD

  • Interruptions et signaux

    _______________________________________________ Telecom-ParisTech BCI Informatique

    127

    Interruptions: mission

    Qui peut mettre une interruption ?

    - un priphrique, pour indiquer une terminaison dE/S, quelle soit correcte ou non,

    - lhorloge, pour indiquer lchance dune alarme, - etc,

    Comment mettre une interruption ? pour simplifier: on envoie une interruption sous forme dun changement dtat sur une des pattes du processeur ; ce dernier vrifiera, avant chaque instruction, si cette ligne a

    chang dtat.

  • Interruptions et signaux

    _______________________________________________ Telecom-ParisTech BCI Informatique

    128

    Interruptions : fonctionnement

    Modification de principe du cycle de fonctionnement du processeur : - avant dexcuter une instruction, vrifier si une interruption nest

    pas arrive, - si oui, la traiter, cest--dire aller au point 2 du paragraphe suivant,

    Si une interruption arrive pendant lexcution dune instruction : 1 - l'instruction en cours se termine (ATOMICITE d'une instruction), 2 - l'adresse de l'instruction suivante et le contenu des registres sont sauvegards dans une pile spcifique : la pile d'interruption (interrupt stack),

    3 - les interruptions de niveau infrieur ou gal sont masques, 4 - le processeur consulte une table qui contient ladresse de la procdure excuter suivant le type dinterruption quil a reu.

  • Interruptions et signaux

    _______________________________________________ Telecom-ParisTech BCI Informatique

    129

    Interruptions : traitement

    Le schma suivant indique comment le processeur traite une interruption.

    Consquence capitale pour lordonnancement :

    - les interruptions sont plus prioritaires que nimporte lequel des processus.

    Excution d'un programme

    Excution de la routine de traitement d'interruption

    Excution du programme prcdent ou d'un autreInterruption

    Sauvegarde du contexte et

    branchement

    Retour et restauration du contexte

  • Interruptions et signaux

    _______________________________________________ Telecom-ParisTech BCI Informatique

    130

    Interruptions et ordonnancement

    Le schma suivant indique la prise en compte des interruptions dans un scnario dordonnancement du type round robin :

    - le squencement de lordonnancement reste inchang, mais

    lattribution de n quantum de dure q se fera dans une fentre de temps de taille suprieure (n*q).

    - La taille de la fentre sera (n*q) augment du temps de traitement de toutes les interruptions reues,

    Remarques : - L'excution du programme traitant l'interruption peut conduire

    l'arrt du travail courant pour excuter une autre tche (si celle-ci est plus prioritaire que le travail courant),

    - La fin du quantum est provoque par une interruption, - Le changement de contexte ne se fait pas en temps nul, comme sur

    les schmas de principe.

  • Interruptions et signaux

    _______________________________________________ Telecom-ParisTech BCI Informatique

    131

    Interruptions : gestion par le systme

    Gestion de l'interruption par le systme :

    - L'appel du programme traitant l'interruption est gr comme un appel de procdure classique.

    - Mais cet appel se fait gnralement pendant l'excution d'un AUTRE processus, par exemple :

    o l'interruption concernant un processus bloqu arrive pendant qu'un autre est actif !

    Les interruptions permettent de traiter plusieurs activits en mme temps

  • Interruptions et signaux

    _______________________________________________ Telecom-ParisTech BCI Informatique

    132

    Interruptions et graphe dtat des processus Scnario. Etat courant des processus : P1 bloqu, P2 actif. 1. une interruption (fin de lecture disque, par exemple) concernant P1 arrive pendant que P2 est actif (cf. 1 sur le schma),

    2. la fonction de traitement associe cette interruption est excute (cf. 2 sur le schma),

    3. ce traitement provoque le passage de P1 de l'tat bloqu l'tat prt (cf. 3 sur le schma).

    Si P1 est lu par lordonnanceur (exemple : ordonnancement premptif et priorit(P1) > priorit (P2)), alors P2 passe prt et P1 devient actif.

  • Interruptions et signaux

    _______________________________________________ Telecom-ParisTech BCI Informatique

    133

    Plan Introduction

    Interruptions

    Signaux

    - Emission

    - Rception

    - Traitement

    - Exemples

    o SIGFPE

    o SIGALRM

    o SIGCHLD

  • Interruptions et signaux

    _______________________________________________ Telecom-ParisTech BCI Informatique

    134

    Voici un extrait du fichier /usr/include/sys/signal.h obtenu sur une machine Mac, les numros peuvent diffrer dun systme UNIX un autre: #define SIGHUP 1 /* hangup */ #define SIGINT 2 /* interrupt (rubout) */ #define SIGQUIT 3 /* quit (ASCII FS) */ #define SIGILL 4 /* illegal instruction(not reset when caught)*/ #define SIGTRAP 5 /* trace trap (not reset when caught) */ #define SIGIOT 6 /* IOT instruction */ #define SIGABRT 6 /*used by abort,replace SIGIOT in the future */ #define SIGEMT 7 /* EMT instruction */ #define SIGFPE 8 /* floating point exception */ #define SIGKILL 9 /* kill (cannot be caught or ignored) */ #define SIGBUS 10 /* bus error */ #define SIGSEGV 11 /* segmentation violation */ #define SIGSYS 12 /* bad argument to system call */ #define SIGPIPE 13 /* write on a pipe with no one to read it */ #define SIGALRM 14 /* alarm clock */ #define SIGTERM 15 /* software termination signal from kill */ #define SIGUSR1 16 /* user defined signal 1 */ #define SIGUSR2 17 /* user defined signal 2 */ #define SIGCLD 18 /* child status change */ #define SIGCHLD 18 /* child status change alias (POSIX) */ #define SIGPWR 19 /* power-fail restart */ #define SIGWINCH 20 /* window size change */ #define SIGURG 21 /* urgent socket condition */ #define SIGPOLL 22 /* pollable event occured */ #define SIGIO SIGPOLL /* socket I/O possible (SIGPOLL alias) */ #define SIGSTOP 23 /* stop (cannot be caught or ignored) */ #define SIGTSTP 24 /* user stop requested from tty */ #define SIGCONT 25 /* stopped process has been continued */ #define SIGTTIN 26 /* background tty read attempted */ #define SIGTTOU 27 /* background tty write attempted */ #define SIGVTALRM 28 /* virtual timer expired */ #define SIGPROF 29 /* profiling timer expired */ #define SIGXCPU 30 /* exceeded cpu limit */ #define SIGXFSZ 31 /* exceeded file size limit */ #define SIGWAITING 32 /* process's lwps are blocked */ #define SIGLWP 33 /* special signal used by thread library */ #define SIGFREEZE 34 /* special signal used by CPR */ #define SIGTHAW 35 /* special signal used by CPR */ #define SIGCANCEL 36 /*thread cancel signal used by libthread */ #define _SIGRTMI