ENSP Strasbourg (Edition ) Les Systèmes Temps Réels - Ch. DOIGNON. Chapitre 3. Mise en œuvre : signaux, gestion du temps et multi-activités

Dimension: px
Commencer à balayer dès la page:

Download "ENSP Strasbourg (Edition 2009-2010) Les Systèmes Temps Réels - Ch. DOIGNON. Chapitre 3. Mise en œuvre : signaux, gestion du temps et multi-activités"

Transcription

1 Chapitre 3 Mise en œuvre : signaux, gestion du temps et multi-activités 77

2 GENERALITES SUR LES SIGNAUX Un signal est une information de contrôle (requête) transmise à un processus par un autre processus ou par le matériel durant l'exécution. Dans la gestion classique des signaux non temps réel, la nature de cette information est très simple : une valeur entière positive constitue le signal. Par contre, le mécanisme de transmission est très sophistiqué. En effet, un signal peut être dynamiquement associé à une fonction d'un programme (que l'on appelle généralement, le gestionnaire du signal ou fonction associée ou encore fonction de déroutement). Dans ce cas, lorsque le signal est pris en compte par le processus destinataire, l'exécution du traitement en cours est alors suspendue et le contrôle est donné à la fonction de déroutement. Si la fonction effectue un retour, le contrôle est redonnée au traitement qui avait été interrompu par la réception du signal. Pour les signaux temps réels, des données supplémentaires sont transmises d un processus expéditeur à un processus destinataires. De plus, toutes les occurrences des signaux seront prises en compte. Nous étudierons la gestion classique puis la gestion des signaux temps réel. 78

3 GENERALITES SUR LES SIGNAUX Selon la manière dont le signal est émis, on distingue l'interruption matérielle (signal émis par le matériel un périphérique interne ou externe) de l'interruption logicielle (signal émis par un autre processus). Un signal peut être ignoré. Par défaut, s'il n'est ni ignoré, ni associé explicitement à une fonction, la réception du signal provoque la terminaison du processus destinataire (exécution de l'appel système exit()). L'envoi d'un signal peut par exemple être provoqué par l'utilisateur au moyen de caractères spéciaux tapés depuis le clavier du terminal. Il est important de distinguer, dans un environnement multitâches, trois phases dans la production et le traitement d'un signal : l'envoi d'un signal (production d'un signal), qui est l'initialisation d'un signal associé à un identificateur de processus destinataire, sa notification, qui est le positionnement dans le processus destinataire d'un identificateur de réception, sa délivrance qui est la prise en compte du signal par le processus destinataire et le lancement de la fonction associée (appel d'une fonction de déroutement, terminaison anormale etc..., et la réinitialisation de l'indicateur (blocage/déblocage) au cas où un signal interviendrait pendant l'exécution de la fonction associée). 79

4 GESTION CLASSIQUE DES SIGNAUX (sous linux) Production d un signal Les signaux sont produits par certaines conditions d'erreur, telles que des violations d'espace mémoire, des erreurs arithmétiques émises par le processeur ou des instructions illicites. Ils sont générés par l'interpréteur de commandes et les gestionnaires de périphériques (terminaux, timer, clavier, carte E/S, liaison série,...). Ils peuvent aussi être explicitement envoyés depuis un processus vers un autre et constituent alors un moyen de synchronisation pour la transmission d'informations. L'interface de programmation est à chaque fois la même. La fonction utilisée pour envoyer un signal d'un processus vers un autre processus (de même propriétaire) est la fonction kill() : #include <sys/type.h> #include <signal.h> int kill( pid_t pid, int signal ); Les noms des signaux classiques sont définis dans le fichier d'en-tête standard signal.h. Les valeurs numériques des signaux peuvent changer d'une implémentation du système à un autre. La norme spécifie simplement des macroconstantes associées (#define). Elles commencent toutes génériquement par le préfixe SIG. 80

5 GESTION CLASSIQUE DES SIGNAUX (sous linux et systèmes Unix) Noms des signaux (POSIX.1) Description SIGHUP connexion interrompue (modem, ligne série) ou terminaison d'un processus SIGINT interruption interactive (terminal) SIGQUIT terminaison interactive (terminal) SIGILL instruction illégale SIGABRT terminaison anormale d'un processus (abort()) SIGFPE erreur arithmétique : division par zéro, dépassement (processeur), SIGKILL signal provenant de (kill()) (non déroutable) SIGSEGV adresse mémoire incorrecte (MMU) SIGPIPE tube détruit (écriture dans le tube sans lecteur) SIGALRM alarme: expiration d'un délai (alarm(),pause()) ou du timer SIGTERM signal de terminaison SIGUSR1/SIGIO premier signal réservé pour les applications (kill()) SIGUSR2/SIGIO second signal réservé par les applications (kill()) SIGCHLD processus enfant stoppé ou terminé SIGSTOP arrêt (suspension) d'un processus (non déroutable) SIGCONT reprise d'un processus (après suspension) SIGTSTP suspension d'un processus (provenant d'un terminal) SIGTTIN lecture du terminal pour un processus d'arrière-plan SIGTTOU écriture vers le terminal pour un processus d'arrière-plan 81

6 GESTION CLASSIQUE DES SIGNAUX (sous linux) Délivrance d un signal On dit qu'un signal a été délivré lorsque le processus destinataire l'a pris en compte. Lorsqu'un signal est produit, sa délivrance n'est pas immédiate. En particulier, il est possible que le processus destinataire bloque temporairement la délivrance de certains signaux (il est possible de choisir lesquels). Lorsqu'un signal est envoyé à un processus qui le bloque, ce signal est dit pendant. Le mécanisme de blocage de signaux permet d'empêcher temporairement la délivrance d'un signal, sans pour autant le perdre. Il peut s'avérer très utile, notamment lors de l'exécution d'une fonction de déroutement de signal, de bloquer la délivrance d'une nouvelle occurrence de ce signal pendant son traitement. Il apparaît donc indispensable de pouvoir traiter de façon atomique (sans interruption possible) l'activation ou la désactivation d'un ensemble de signaux. Pour cela, la norme POSIX propose un type de données appelé sigset_t pour représenter cet ensemble de signaux : #define _SIGSET_NWORDS 32 typedef struct{ unsigned long int val[_sigset_nwords]; } sigset_t; typedef sigset_t sigset_t; 82

7 GESTION CLASSIQUE DES SIGNAUX (sous linux) Délivrance d un signal (suite) Cette structure est manipulable à partir de cinq fonctions : #include <signal.h> int sigemptyset( sigset_t *ens ); int sigfillset( sigset_t *ens ); int sigaddset( sigset_t *ens, int num_signal ); int sigdelset( sigset_t *ens, int num_signal ); int sigismember( sigset_t *ens, int num_signal ); Si ens est un objet de type sigset_t, l'appel de la fonction sigemptyset(&ens) initialise l'ensemble ens de telle sorte qu'il ne contienne aucun des signaux de la norme POSIX, et l'appel de la fonction sigfillset(&ens) de sorte qu'il les contienne tous. L'une ou l'autre de ces fonctions doit être appelée au moins une fois pour initialiser avant sa première utilisation, un objet de type sigset_t. sigaddset(&ens,num_signal) et sigdelset(&ens,num_signal) ont des fonctions qui respectivement ajoutent et enlèvent à l'ensemble ens le signal spécifié par le numéro du signal num_signal. Enfin, la fonction sigismember(&ens,num_signal) teste l'appartenance d'un signal à l'ensemble ens; elle retourne 1 si le signal est dans ens, 0 sinon. Les autres fonctions retournent 0 en cas de succès et -1 en cas d'échec. 83

8 GESTION CLASSIQUE DES SIGNAUX (sous linux) Configuration pour la délivrance Un comportement spécifique est associé à chaque signal, indiquant la manière dont il doit être délivré. Ce comportement est représenté par une structure de données struct sigaction contenant (entre autres) les champs suivants : struct sigaction { void (*_sa_handler)(int); /* signaux classiques */ sigset_t sa_mask; unsigned long sa_flags; }; void (*_sa_handler)(int signal) : ce champ décrit la fonction associée à la délivrance du signal classique(fonction de déroutement) : SIG_IGN pour ignorer le signal, SIG_DFL pour le traitement par défaut (constantes symboliques), ou un pointeur vers une fonction de déroutement du signal. Dans ce dernier cas, lorsque la fonction de déroutement est appelée, elle reçoit en paramètre le signal délivré. 84

9 GESTION CLASSIQUE DES SIGNAUX (sous linux) Configuration pour la délivrance (suite) sigset_t sa_mask : ce champ (masque de signaux) permet de spécifier un ensemble de signaux devant être bloqués durant l'exécution de la fonction de déroutement du signal. La valeur de ce champ remplace temporairement le masque de signaux du processus en cours. sa_flags : ce champ (drapeaux) permet de spécifier le comportement du signal par rapport à l'environnement du processus (par exemple pour ne pas prendre en compte le signal délivré à la terminaison d'un processus enfant). La fonction qui positionne la valeur de ces champs avec le signal spécifié s'appelle sigaction(). Les signaux interceptés à l'aide de fonctions de déroutement définis par sigaction()ne sont pas par défaut réinstallés (après exécution de la fonction associée). Ainsi, le champ sa_flags doit être paramétré avec la valeur symbolique SA_ONESHOT afin de retrouver le comportement par défaut (SIG_DFL) du signal avant le déroutement. 85

10 GESTION CLASSIQUE DES SIGNAUX (sous linux) Remarque : lorsqu'un signal est ignoré, il est délivré et écarté. Lorsqu'un signal est bloqué, il est mis en attente, durant le temps du blocage. Dans ce cas, l'arrivée d'une nouvelle occurrence du signal peut, selon les implémentations du système d'exploitation, être empilée ou écartée. Ce comportement n'est pas spécifié dans la norme POSIX. Un processus peut consulter et/ou modifier sa signalerie au moyen des fonctions sigaction() et sigprocmask() : int sigaction( int num_signal, struct sigaction *nouvelle_action, struct sigaction *ancienne_action ); La fonction sigaction() permet de consulter et/ou modifier le comportement associé à la délivrance d'un signal spécifié. Le comportement par défaut des signaux SIGKILL et SIGSTOP ne peut être modifié. Si le résultat de l'exécution de sigaction() est d'ignorer un signal pendant, ce signal est écarté. Le paramètre nouvelle_action décrit le comportement que l'on souhaite associer à la délivrance du signal spécifié. Avant sa modification, le comportement courant est sauvegardé dans la structure référencée par ancienne_action, sauf si ce dernier est égal à à la constante symbolique NULL. 86

11 BLOCAGE DES SIGNAUX (sous linux) int sigprocmask( int methode, sigset_t *nouvel_ens, sigset_t ancien_ens ); La fonction sigprocmask() permet de consulter et/ou modifier le masque de signaux. Le traitement dépend de la valeur du paramètre methode, qui peut être : SIG_SETMASK : le masque de signaux reçoit l'ensemble spécifié par le paramètre nouvel_ens, qui est utilisé directement comme masque de blocage des signaux. SIG_BLOCK : on ajoute la liste des signaux contenus dans le paramètre nouvel_ens au masque de blocage des signaux. Cela revient à bloquer tous les signaux (sauf SIGKILL et SIGSTOP) spécifiés par l'ensemble nouvel_ens sans changer le comportement des autres signaux. Il s agit d une addition au masque en cours. SIG_UNBLOCK : on retire les signaux contenus dans nouvel_ens au masque de blocage des signaux. Cela revient à débloquer tous les signaux spécifiés par nouvel_ens sans changer le comportement des autres signaux. Si le paramètre ancien_ens est différent de NULL, il reçoit une copie de la valeur du masque avant sa modification. Il est possible d'obtenir la valeur courante du masque de signaux, sans le modifier, en utilisant la valeur NULL dans nouvel_ens. 87

12 EXEMPLE (sous linux) #include <signal.h> #include <stdio.h> #include <unistd.h> void FonctionDeroutement( int sig ) { printf("ouille! - Signal reçu %d\n",sig); return; } int main( void ) { struct sigaction act; act.sa_handler = FonctionDeroutement; sigemptyset( &act.sa_mask ); /* act.sa_flags = SA_ONESHOT */ /* si decommenté, alors le comportement par défaut est réinstallé, pour le signal concerné, à l issue de l invocation du gestionnaire du signal */ sigaction( SIGINT, &act, NULL ); while ( 1 ) {usleep( l);/* on endort le processus pendant 2 s environ */ printf("hello world!\n");} exit(0); } 88

13 EXPLICATIONS DE L EXEMPLE (sous linux) L'exécution de ce programme entraîne l'affichage d'un message lors de l'appui sur Ctrl+C dans la mesure où act gère le signal SIGINT à plusieurs reprises. Pour mettre fin au programme, il faut appuyer sur Ctrl+\ générant le signal SIGQUIT par défaut, via le terminal. ATTENTE DES SIGNAUX SUR FIN DE PROCESSUS (sous linux) Un cas particulier est l'attente de la fin d'un processus enfant (envoie du signal SIGCHLD par le processus enfant). Il est possible de faire attendre un processus parent jusqu'à la terminaison d'un processus enfant en appelant les fonctions wait() ou waitpid() : #include <sys/type.h> #include <sys/wait.h> pid_t wait( int *stat_loc ); pid_t waitpid( pid_t pid, int *stat_loc, int options ); L'argument pid permet de définir le processus fils à attendre. Les informations de sortie du processus seront inscrites à l'adresse spécifiée par *stat_loc. L'option permet de savoir de quelle manière le processus enfant a été terminé. 89

14 MONITORING Un processus peut savoir s'il possède des signaux pendants (en attente de délivrance) au moyen de la fonction sigpending() : int sigpending( sigset_t *ens ); Cette fonction recopie le masque de notification dans le paramètre ens (ensemble de signaux) et retourne 0 en cas de succès et -1 en cas d'erreur. ENDORMIR UN PROCESSUS : Un processus peut être endormi par un appel aux fonctions sleep() ou usleep(). unsigned int sleep (unsigned int secondes ); void usleep(unsigned int microsecondes ); Le processus ainsi endormi est réveillé soit à la fin du temps indiqué soit à l'arrivée d'un signal. ATTENTE D UN SIGNAL : Un processus peut se mettre en attente de la délivrance d'un signal quelconque ou particulier au moyen de la fonction pause() : int pause( void ); La fonction pause() endort le processus jusqu'à réception d'un signal provoquant la terminaison du programme ou l'appel d'une fonction de déroutement. 90

15 PROBLEMATIQUE DE L ATTENTE D UN SIGNAL : le problème qui se pose souvent est d encadrer correctement pause(), de façon à éviter de perdre des signaux. Imaginons que SIGUSR1 dispose d un gestionnaire faisant passer à 0 une variable globale appelée attente. On désire bloquer l exécution du programme jusqu à ce que cette variable ait changé. Une première version naïve de ce programme serait celle-ci : attente = 1; while (attente!= 0) pause(); La présence de la boucle while() est justifiée par le fait qu il se peut que l appelsystème pause() soit interrompu par un autre signal qui ne modifie pas la variable attente. Le problème principal est que le signal peut arriver entre l instruction du test (attente!= 0) et l appel pause(). Si le signal modifie la variable attente à ce moment-là, et si le programme ne reçoit plus d autres signaux, le processus restera bloqué indéfiniment dans pause(). Pour éviter cette situation, on pourrait vouloir bloquer le signal temporairement à l aide de sigprocmask() ainsi : 91

16 PROBLEMATIQUE DE L ATTENTE D UN SIGNAL (suite) : sigset_t ensemble, ancien; sigemptyset( &ensemble ); sigaddset( &ensemble, SIGUSR1 ); sigprocmask( SIG_BLOCK, &ensemble, &ancien ); attente = 1; while (attente!= 0){ sigprocmask( SIG_UNBLOCK, &ensemble, NULL ); pause(); sigprocmask( SIG_BLOCK, &ensemble, NULL ); /* traitement des autres signaux s il y a lieu */ } sigprocmask( SIG_SETMASK, &ancien, NULL ); Malheureusement, un signal bloqué en attente est délivré avant le retour de sigprocmask(), qui le débloque. Un blocage du processus dans pause() est donc toujours possible. Tant que les deux opérations (modifier le masque de signaux et attente) sont réalisées sans être sûr qu une interruption survienne entre elles, il y aura toujours un risque de blocage. La solution est d employer l appelsystème sigsuspend() qui permet de manière atomique de modifier le masque de signaux ET de bloquer en attente. Lorsqu un signal non bloqué survient sigsuspend() restitue le masque original avant de se terminer. 92

17 PROBLEMATIQUE DE L ATTENTE D UN SIGNAL (fin) : int sigsuspend( const sigset_t *ensemble ); L ensemble transmis est celui des signaux à bloquer, pas celui des signaux attendus. sigset_t ensemble, ancien; sigemptyset( &ensemble ); sigaddset( &ensemble, SIGUSR1 ); sigprocmask( SIG_BLOCK, &ensemble, &ancien ); if ( sigismember( &ancien, SIGUSR1 )) { sigdelset( &ancien, SIGUSR1 ): sigusr1_dans_masque = 1; } attente = 1; while (attente!= 0){ sigsuspend( &ancien ); /* puis traitement pour les éventuels autres signaux */ } if ( sigusr1_dans_masque ) sigaddset( &ancien, SIGUSR1 ); sigprocmask( SIG_SETMASK, &ancien, NULL ); On remarque qu il est pris soin de restituer l ancien masque de blocage des signaux en sortie de routine, et qu en transmettant cet ancien masque à sigsuspend(), l arrivée d autres signaux que SIGUSR1 est permise. 93

18 GESTION DES SIGNAUX CLASSIQUES (synthèse) : Nous avons vu qu avec une gestion correcte des blocages des signaux, il est possible d accéder à n importe quel type de données globales. Comme un signal non bloqué peut survenir alors qu un gestionnaire de signal est en exécution, le champ sa_mask de la structure sigaction doit être manipulé avec soin. Par ailleurs, comme la plupart des fonctions des bibliothèques ne sont pas réentrantes, les seules opérations à effectuer dans un gestionnaire de signal sont : - consulter/modifier des variables globales de type sig_atomic_t (défini dans signal.h. Il s agit d un type entier que le processeur peut traiter de manière atomique. Il faut de plus utiliser l indicateur volatile pour signaler au compilateur qu elle peut être modifiée à tout moment, et pour qu il ne se livre pas à des optimisations (comme conserver la variable dans un des registres). Dans ce cas, le gestionnaire ne fait que positionner l état d une variable globale, qui est ensuite consultée dans le corps du programme. - effectuer des appels-systèmes réentrants. Il existe une liste, définie par la norme Posix.1, des appels-systèmes réentrants qui peuvent être invoqués depuis un gestionnaire de signal. Le fait d être réentrante permet à une fonction d être utilisable sans danger dans un programme multithread, mais la réciproque n est pas toujours vraie, comme pour malloc() qui est utilisable au sein de programmes multithread mais ne doit pas être invoquée dans un gestionnaire de signal. 94

19 GESTION DES SIGNAUX TEMPS REELS Les signaux temps réels présentent les particularités suivantes vis-à-vis des signaux classiques : nombre plus important de signaux utilisateurs, empilement es occurrences des signaux bloqués, délivrance prioritaire des signaux, informations supplémentaires fournies au gestionnaire de signal. Les signaux temps réel n ont pas de noms spécifiques, contrairement aux signaux classiques et s étendent de SIGRTMIN à SIGRTMAX compris (SIGRTMAX- SIGRTMIN=32 sous Linux). Linux par exemple associe à chaque signal temps réel une file d attente qui lui permet de mémoriser l ensemble de toutes les occurrences. Chaque occurrence présente dans la file d attente donne lieu à une délivrance spécifique. Le système Linux peut empiler jusqu à 1024 signaux. Lorsque plusieurs signaux temps réel doivent être délivrés à un processus, le noyau délivre toujours les signaux temps réel de plus petit numéro. Ceci permet d attribuer un ordre de priorité entre les signaux temps réel. Note : Sous Linux, pour vérifier l existence de ces signaux en cas de portage d une application, on peut tester à la compilation la présence de la constante symbolique _POSIX_REALTIME_SIGNALS dans le fichier <unistd.h> 95

20 GESTION DES SIGNAUX TEMPS REELS Envoi d un signal temps réel Pour pouvoir fournir des informations supplémentaire au gestionnaire de signal, il faut utiliser l appel-système sigqueue() qui garantit que le signal sera empilé au lieu de kill() (qui peut néanmoins envoyer un signal temps réel). La syntaxe est la suivante : #include <signal.h> #include <unistd.h> int sigqueue( pid_t pid, int num_sig, const union sigval info ); L argument pid désigne le processus concerné destinataire du signal et l argument num_sig identifie le signal envoyé. Le troisième argument, info, contient l information supplémentaire associée au signal. C est une valeur de type union sigval (de la structure siginfo transmise au gestionnaire de signal voir après) qui peut prendre deux formes : un entier int si le champ sigval_int de l union est utilisé par lors de l appel au gestionnaire du signal, un pointeur void * si le champ sigval_ptr de l union est utilisé 96

21 GESTION DES SIGNAUX TEMPS REELS Syntaxe de l appel au gestionnaire Du fait de la transmission d informations supplémentaires associées au signal temps réel, l attachement et la définition d un gestionnaire de signal s effectuent différemment que dans le cas d un signal classique. Le gestionnaire prend la forme suivante (le dernier paramètre n est pas défini par POSIX et n est donc pas utilisé): void gestionnaire( int num_sig, struct siginfo *info, void *rien ) La structure de type struct siginfo contient notamment les champs suivants conforment à la norme POSIX (les autres ne sont pas évoqués ici) : int si_signo, le numéro du signal, int si_code, qui indique l origine du signal (si envoyé par le noyau - SI_KERNEL -, par un appel-système kill() - SI_USER -, par l appel-système sigqueue() - SI_QUEUE - lors de la terminaison d une opération d entrée/sortie asynchrone - SI_ASYNCIO -, à l expiration d une temporisation temps-réel - SI_TIMER -,.), int si_value.sigval_int correspond au champ sigval_int de l appel sigqueue(), void *si_value.sigval_ptr correspond au champ sigval_ptr de l appel à sigqueue(). à 97

22 GESTION DES SIGNAUX TEMPS REELS Attachement du gestionnaire au signal L attachement du gestionnaire de signal temps réel à un signal s effectue aussi avec sigaction() et la structure struct sigaction étendue et contenant (entre autres) les champs suivants : struct sigaction { union { sighandler_t void (*sa_handler)(int); /* signaux classiques */ void (*sa_sigaction)(int, struct siginfo *, void *); /* signaux temps réel */ }; sigset_t sa_mask; unsigned long sa_flags; }; De plus, le champ sa_flags doit prendre la valeur SA_SIGINFO pour les signaux temps réel. 98

23 EXEMPLE DE GESTION DES SIGNAUX TEMPS REELS #define MON_SIG_TR (SIGRTMIN+3) void gestion_tr( int, struct siginfo *, void * ); main() { union sigval val; struct sigaction act_tr; pid = fork() if (pid == 0 ){ act_tr.sa_sigaction = gestion_tr; sigemptyset( &act_tr.sa_mask); act_tr.sa_flags = SA_SIGINFO; sigaction( MON_SIG_TR, &act_tr, NULL ); pause(); exit(0);} else { printf( Introduisez un entier au clavier\n ); scanf( %d,&val.sigval_int); printf( %d,val.sigval_int); sigqueue( pid, MON_SIG_TR, val ); wait(); exit(0);} } void gestion_tr( int numero, struct siginfo *info, void *rien ) { printf( signal temps reel recu, %d, %d\n, numero, info->si_signo); printf( entier recu %d\n, info->si_value.sigval_int); /* il est préférable de ne pas employer les fonctions E/S avec buffer dans un gestionnaire.*/ } 99

24 GESTION DU TEMPS Mesure du temps CPU : Chaque processus possède dans son contexte une mesure du temps CPU qu'il a consommé, et du temps consommé cumulé de tous ses processus enfants terminés. Ces informations sont décrites par une structure de données appelée struct tms dont les champs sont les suivants ; tms_utime : temps CPU utilisateur (exécution d instructions du programme utilisateur), tms_stime : temps CPU système (exécution des instructions système - mode noyau), tms_cutime : temps CPU utilisateur (comsommé des enfants terminés), tms_cstime : temps CPU système (consommé des enfants terminés). Tous les champs sont de type clock_t (équivalent à unsigned long) et la fonction times() qui a la syntaxe suivante : #include <sys/times.h> clock_t times( struct tms *t ); permet d'obtenir ces informations. Cette fonction retourne un temps absolu exprimé à partir d'une origine de temps arbitraire (il faut donc l'appeler deux fois afin d'estimer une différence de temps). Tous les temps sont exprimés en unité d'horloge. Le nombre d'unités d'horloge par seconde est la valeur symbolique CLK_TCK (égale à 100 ou à 1000): 100

25 GESTION DU TEMPS Exemple : #include <sys/times.h> #include <stdio.h> #include <stdlib.h> #include <time.h> int main( void ) { struct tms t1,t2; long i; unsigned long et1,et2; void ConsommeDuTemps( long n ) { void *p=null; if ( n > ) return; p = malloc( 1024*n ); if ( p ) free( p ); return; } et1 = times( &t1 ); for ( i = 0 ; i < L ; i++ ) ConsommeDuTemps(i); et2 = times( &t2 ); printf("\n clicks par sec : %ld\n",clk_tck); printf("\n\tnombre de top utilisateur : %ld",t2.tms_utime-t1.tms_utime); printf("\n\tnombre de top systeme : %ld'',t2.tms_stime-t1.tms_stime); printf("\n\tnombre de top d'horloge (temps reel) : %ld",et2-et1); exit(0); } 101

26 GESTION DU TEMPS Il peut arriver cependant que l'on ait besoin de dater les événements avec une précision meilleure que 1/CLK_TCK. Pour cela, il existe un appel-système fournissant une meilleur résolution, gettimeofday(), dont la syntaxe est : #include <sys/time.h> int gettimeofday( struct timeval *, struct timezone * ); struct timeval { long tv_sec; /* secondes */ long tv_usec; /* microsecondes */ }; et fournit le nombre de secondes et le nombre de microsecondes depuis le dernier changement de la valeur du champ tv_sec. Le second argument de cette fonction n'est plus utilisé. 102

27 GESTION DU TEMPS Exemple (sur l allocation de la mémoire) : void ConsommeDuTemps( long n ) { void *p=null; if ( n > ) return; p = (void *)malloc( 1024L*n ); if ( p ) free( p ); return; } int main( void ) { long i; gettimeofday( &timev1, NULL ); for ( i = 0 ; i < 10 ; i++ ) ConsommeDuTemps( 65535L ); gettimeofday( &timev2, NULL ); fprintf(stdout,"gettimeofday() : %6ld us\n",timev2.tv_usec-timev1.tv_usec); /* display us on my computer */ exit(0); } 103

28 GESTION DU TEMPS Exemple (sur le tri par sélection) : #define TAILLE 16 #define SWAP(x,y,t) ((t)=(x),(x)=(y),(y)=(t)) struct timeval timev1,timev2; long t0[taille]={ 25,36,2,9,51,12,18,42, 23,6,28,13,44,38,21,5}; void SortBySelection( long *t, long left, long right ) { long i,j,tmp,min; if ( left >= right ) return; for ( i = left ; i < right ; i++ ) { min = i; for ( j = i+1 ; j <= right ; j++ ) { if ( t[j] < t[min] ) min = j; } SWAP(t[i],t[min],tmp); } return; } int main( void ) { long i; for ( i = 0 ; i < TAILLE ; i++ ) printf("%2ld - ",t0[i]); printf("\n"); gettimeofday( &timev1, NULL ); SortBySelection( t0, 0, TAILLE-1 ); gettimeofday( &timev2, NULL ); for ( i = 0 ; i < TAILLE ; i++ ) printf("%2ld - ",t0[i]); printf("\n"); fprintf(stdout,"gettimeofday(): %6ld us\n", timev2.tv_usec-timev1.tv_usec); /* display 4 us on my computer */ exit(0); } 104

29 GESTION DU TEMPS La norme POSIX met à disposition pour chaque processus trois compteurs, chacun décrémentant de manière autonome. quand un compteur vient à expiration (passage à zéro), un signal (SIGALRM ou SIGVTALRM) est envoyé au processus. Selon le mode de fonctionnement de ce compteur, celui-ci peut redémarrer. La programmation de ces compteurs est effectuée par l'initialisation des structures de données itimerval et timeval et par l'emploi des fonctions getitimer() et setitimer() : #include <sys/time.h> struct timeval { long tv_sec; /* secondes */ long tv_usec; /* microsecondes */ }; struct itimerval { struct timeval it_interval;/* prochaine valeur */ struct timeval it_value; /* valeur actuelle */ }; int getitimer( int compteur, struct itimerval *valeur ); int setitimer( int compteur, struct itimerval *valeur, struct itimerval *anc_valeur ); 105

30 GESTION DU TEMPS Le paramètre compteur spécifie le compteur à utiliser : - ITIMER_REAL : ce compteur décrémente en temps réel et fourni le signal SIGALRM à l'expiration, - ITIMER_VIRTUAL : ce compteur décrémente seulement quand le processus est en exécution et délivre le signal SIGVTALRM à l'expiration (non POSIX), - ITIMER_PROF : ce compteur décrémente seulement quand le processus est en exécution, en mode noyau. Couplé avec le compteur ITIMER_VIRTUAL, ce compteur est utilisé habituellement pour connaitre le temps d'exécution en mode utilisateur et en mode noyau. Le signal SIGPROF est délivré à l'expiration (non POSIX). La fonction getitimer() permet de connaitre la valeur d'un compteur à un moment donné et remplit la structure à l'adresse indiquée par valeur. La fonction setitimer() permet d'initialiser un compteur avec le contenu de la structure commençant à l'adresse valeur et de sauvegarder éventuellement l'ancienne valeur à l'adresse indiquée par anc_valeur (si différente de NULL). 106

31 GESTION DU TEMPS Exemple (initialiser le compteur temps réel pour l envoi d un signal toutes les 10 ms, après 2 s) : #include <sys/time.h> struct timerval t; int main( void ) { t.it_interval.tv_sec = 0; t.it_interval.tv_usec = 10000; t.it_value.tv_sec = 2; t.it_value.tv_usec = 0; setitimer( ITIMER_REAL, &t, NULL );... exit(0); } 107

32 GESTION DU TEMPS Remarques : Puisque le signal SIGALRM est délivré à l'expiration du comptage, on peut associer la délivrance du signal à l'appel d'une fonction de déroutement à intervalles réguliers. Il est formellement déconseillé d'utiliser simultanément les appels système setitimer(), sleep() et la programmation de l'alarme avec la fonction alarm() car elles utilisent le même signal SIGALRM. Par défaut, à la délivrance des signaux SIGALRM, SIGVTALRM et SIGPROF, le processus se termine. Exercice : Concevoir un programme simple qui, s'appuyant sur le timer logiciel ITIMER_REAL, déclenche toutes les 100 ms, l'exécution d'une fonction associée, dont le rôle est de sauvegarder dans un tableau d'entiers (global), les valeurs successives d'un incrément d'une boucle exécutée dans la fonction principale. A l'issue de la boucle, les valeurs du tableau seront sauvegardées dans un fichier. 108

33 INTRODUCTION AU MULTITHREADING Le multithreading est l alternative à la programmation multiprocessus; il offre un parallélisme plus léger à gérer pour le système. Le processus léger (ou thread) constitue une extension du modèle traditionnel de processus, appelé en la circonstance processus lourd. Un processus classique est constitué d un espace d adressage avec un seul fil d exécution, ce fil d exécution étant représenté par une valeur de compteur ordinal et une pile d exécution. Dans ce contexte, l extension consiste à admettre plusieurs fils d exécution indépendants dans un même espace d adressage, chacun de ces fils (ou threads ou activités) étant caractérisé par une valeur de compteur ordinal propre et une pile d exécution privée. Un thread est donc une entité d exécution, rattachée à un processus, et chargée d exécuter une partie du code du processus. Le principal avantage lié à la notion de processus léger est un allègement des opérations de commutations de contextes : en effet lorsque le processus est attribué d un fil d exécution à un autre, comme les deux fils appartiennent au même espace d adressage, la commutation consiste alors en pratique à seulement changer de pile et de valeur de compteur ordinal, le contexte mémoire restant le même. De plus, l opération de création dynamique d un nouveau fil d exécution est sensiblement plus courte que celle correspondant à la création dynamique d un nouveau processus (fork()) puisqu elle ne nécessite pas la duplication de l espace d adressage du processus père. 109

34 Ci-dessus : Processus classique (une seule activité) Ci-contre : Processus composé de deux activités 110

EPU - Informatique ROB4 Programmation Système

EPU - Informatique ROB4 Programmation Système EPU - Informatique ROB4 Programmation Système Introduction aux signaux Vincent Padois, Jean-Baptiste Mouret vincent.padois@upmc.fr Université Pierre et Marie Curie Institut des Systèmes Intelligents et

Plus en détail

Programmation parallèle

Programmation parallèle Programmation parallèle IUT Lyon 1 Module programmation répartie Principe de la programmation parallèle Consiste à faire exécuter par des processus différents des parties de code d un même programme Par

Plus en détail

Cours 9 - PTHREADS. Partie 1. Processus léger ou "Thread" Luciana Arantes Dec. 2005. = un processus lourd. processus léger (thread) données

Cours 9 - PTHREADS. Partie 1. Processus léger ou Thread Luciana Arantes Dec. 2005. = un processus lourd. processus léger (thread) données Cours 9 - PTHREADS Partie 1 Luciana Arantes Dec. 2005 Processus léger ou "Thread"! Partage les zones de code, de données, de tas + des zones du PCB (Process Control Block) : données " liste des fichiers

Plus en détail

Travaux Dirigés n o 4 : Threads

Travaux Dirigés n o 4 : Threads DUT Informatique 2015 / 2016 Travaux Dirigés n o 4 : Threads Objectifs : apprendre à créer, travailler avec et arrêter des threads (ou processus légers). Savoir reconnaître les données partagées entre

Plus en détail

Les threads. Chapitre 4. 4.1 Introduction. 4.1.1 Avantages

Les threads. Chapitre 4. 4.1 Introduction. 4.1.1 Avantages Chapitre 4 Les threads 4.1 Introduction Le modèle de processus décrit au chapitre précédent est un programme qui s exécute selon un chemin unique avec un seul compteur ordinal. On dit qu il a un flot de

Plus en détail

TP 18 - Communication

TP 18 - Communication TP 18 - Communication 3 GI, INSA de Lyon Mars 2004 1 Objectifs Le but de ce TP est d étudier la programmation directe à bas niveau du hardware d un ordinateur et du système d exploitation (Linux). Pour

Plus en détail

Création et synchronisation de processus. Communications par signaux, par tubes.

Création et synchronisation de processus. Communications par signaux, par tubes. Création et synchronisation de processus. Communications par signaux, par tubes. Un processus est un ensemble d'octets (en langage machine) en cours d'exécution, en d'autres termes, c'est l'exécution d'un

Plus en détail

Gestion des Processus

Gestion des Processus Plan Gestion des Processus Concept de processus Ordonnancement Ryan Cassel cassel@limsi.fr Synchronisation Université Paris XI 2 de Tanenbaum Pour préparer un gateau: Recette Programme Ingrédients

Plus en détail

Généralités sur le développement sous Linux... 1 Outils de développement... 3 Éditeurs de texte... 4

Généralités sur le développement sous Linux... 1 Outils de développement... 3 Éditeurs de texte... 4 Table des matières Avant-propos................................................ V CHAPITRE 1 Concepts et outils........................................... 1 Généralités sur le développement sous Linux....................

Plus en détail

CONSERVATOIRE NATIONAL DES ARTS ET METIERS

CONSERVATOIRE NATIONAL DES ARTS ET METIERS CONSERVATOIRE NATIONAL DES ARTS ET METIERS Durée : 2 heures METHODES DE PROGRAMMATION SYSTEMES UE NSY103 - NANCY/METZ INTERVENANT : E. DESVIGNE CORRECTION DE LA SESSION DE RATTRAPAGE 13/09/2011 Année 2010

Plus en détail

Interruptions et signaux

Interruptions et signaux 150 Interruptions Et signaux 151 152 Plan Introduction Interruptions Signaux - Emission - Réception - Traitement - Exemples o SIGSEGV o SIGALRM o SIGCHLD 153 154 Introduction Nous présentons ici les moyens

Plus en détail

Cours Programmation Système

Cours Programmation Système Cours Programmation Système Filière SMI Semestre S6 El Mostafa DAOUDI Département de Mathématiques et d Informatique, Faculté des Sciences Université Mohammed Premier Oujda m.daoudi@fso.ump.ma Février

Plus en détail

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing 3/4/27 Programmation Avancée Multimédia Multithreading Benoît Piranda Équipe SISAR Université de Marne La Vallée Besoin Programmes à traitements simultanés Réseau Réseau Afficher une animation en temps

Plus en détail

Cours de S.E. les Signaux

Cours de S.E. les Signaux Cours de S.E. les Signaux A. Dragut Univ. Aix-Marseille, IUT Aix en Provence 2012 A. Dragut Cours de S.E. les Signaux 1 / 76 Plan notion noms et numéros kill() effets de l arrivée des signaux Dynamique

Plus en détail

GESTION DES PROCESSUS

GESTION DES PROCESSUS CHAPITRE 2 : GESTION DES PROCESSUS Objectifs spécifiques Connaître la notion de processus, Connaître les caractéristiques d un processus ainsi que son contexte Connaître la notion d interruptions et de

Plus en détail

Compléments sur les PThreads. Jean-Louis PAZAT IRISA / INSA

Compléments sur les PThreads. Jean-Louis PAZAT IRISA / INSA 1 Compléments sur les PThreads Jean-Louis PAZAT IRISA / INSA Exemple de threads utilisateur: Threads Posix Interface portable de programmation (API) Fonctionnalités création/destruction de Threads Synchronisation

Plus en détail

Vous pouvez vous aider du programme suivant :

Vous pouvez vous aider du programme suivant : TP MULTITÂCHE DÉCOUVERTE DES MUTEX ET DES SEMAPHORES Exercice 1 Exclusion mutuelle : Mutex Ecrire un programme qui permet à 5 threads d'écrire un message complet à l'écran (par exemple "Message du thread

Plus en détail

Systèmes d'exploitation (SYE) Gestion des processus (v2.2) Daniel Rossier daniel.rossier@heig-vd.ch

Systèmes d'exploitation (SYE) Gestion des processus (v2.2) Daniel Rossier daniel.rossier@heig-vd.ch Systèmes d'exploitation (SYE) Gestion des processus (v2.2) Daniel Rossier daniel.rossier@heig-vd.ch Plan Processus File System Network Manager Changement de contexte Scheduler Memory Manager Threads IPC

Plus en détail

Systèmes d Exploitation temps réel. Programmation des STR. Gabriel FREY 2013 freyg.it@gmail.com

Systèmes d Exploitation temps réel. Programmation des STR. Gabriel FREY 2013 freyg.it@gmail.com Systèmes d Exploitation temps réel 1 2 Plan de l intervention 1. Introduction aux Systèmes Temps Réel 2. Programmation concurrente Synchronisation et communication Besoin en facultés temporelles 3. Ordonnancement

Plus en détail

Les processus légers : threads

Les processus légers : threads Les processus légers : threads Polytech Paris-Sud Cycle ingénieur de la filière étudiant Louis Mandel Université Paris-Sud 11 Louis.Mandel@lri.fr année 2012/2013 Les threads Les threads sont des processus

Plus en détail

M2-GamaGora. Programmation Multi-Thread - partie 1. J.C. Iehl. November 13, 2008

M2-GamaGora. Programmation Multi-Thread - partie 1. J.C. Iehl. November 13, 2008 Programmation Multi-Thread - partie 1 November 13, 2008 pourquoi ça ne marche pas? et alors? introduction aux threads threads : pourquoi ça ne marche pas? et alors? un nouveau point d entrée (une fonction

Plus en détail

Systèmes d'exploitation Gestion des processus

Systèmes d'exploitation Gestion des processus Systèmes d'exploitation Gestion des processus Cours SYE Prof. Daniel Rossier Version 2.3 (2009-2010) 1 Plan Processus Changement de contexte Threads IPC (Inter-Process Communication) Algorithmes d'ordonnancement

Plus en détail

Gestion des processus

Gestion des processus 1/27 Gestion des processus didier@lrde.epita.fr http://www.lrde.epita.fr/ didier 2/27 Table des matières 1 2 Ordonnancement des processus 3 sur les processus 4 entre processus 5 4/27 Programme vs. Processus

Plus en détail

3IS - Système d'exploitation linux - Threads

3IS - Système d'exploitation linux - Threads 3IS - Système d'exploitation linux - Threads 2010 David Picard Contributions de : Arnaud Revel, Mickaël Maillard picard@ensea.fr Qu'est-ce qu'un thread? ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET

Plus en détail

Systèmes d Exploitation Gestion des processus

Systèmes d Exploitation Gestion des processus Systèmes d Exploitation Gestion des processus Didier Verna didier@lrde.epita.fr http://www.lrde.epita.fr/ didier Version 2@1.6 6 décembre 2004 Table des matières Table des matières Généralités... 3 États

Plus en détail

Cours de Systèmes d Exploitation

Cours de Systèmes d Exploitation Licence d informatique Synchronisation et Communication inter-processus Hafid Bourzoufi Université de Valenciennes - ISTV Introduction Les processus concurrents s exécutant dans le système d exploitation

Plus en détail

Les Systèmes d Exploitation: Concepts et Programmation

Les Systèmes d Exploitation: Concepts et Programmation Les Systèmes d Exploitation: d Concepts et Programmation Samia Bouzefrane MCF en Informatique, CNAM samia.bouzefrane@cnam.fr http://cedric.cnam.fr/~bouzefra Samia Bouzefrane, Cours SYSTEME 1 Introduction

Plus en détail

REALISATION d'un. ORDONNANCEUR à ECHEANCES

REALISATION d'un. ORDONNANCEUR à ECHEANCES REALISATION d'un ORDONNANCEUR à ECHEANCES I- PRÉSENTATION... 3 II. DESCRIPTION DU NOYAU ORIGINEL... 4 II.1- ARCHITECTURE... 4 II.2 - SERVICES... 4 III. IMPLÉMENTATION DE L'ORDONNANCEUR À ÉCHÉANCES... 6

Plus en détail

Le traitement du temps

Le traitement du temps Programmation Système Mesure Horloges Sommeil Mise en forme Fabrice Harrouet École Nationale d Ingénieurs de Brest harrouet@enib.fr http://www.enib.fr/~harrouet/ enib, F.H... 1/30 Intérêt Cadencer les

Plus en détail

Linux Principes et Programmation

Linux Principes et Programmation Linux Principes et Programmation 4. Synchronisation entre processus Interblocage CNAM NSY103 2009/2010 Yann GAUTHERON Extraits : http://fr.wikipedia.org/, LINUX Programmation système et réseau (Joëlle

Plus en détail

1 Mesure de la performance d un système temps réel : la gigue

1 Mesure de la performance d un système temps réel : la gigue TP TR ENSPS et MSTER 1 Travaux Pratiques Systèmes temps réel et embarqués ENSPS ISV et Master TP1 - Ordonnancement et communication inter-processus (IPC) Environnement de travail Un ordinateur dual-core

Plus en détail

Cours Système 2 Année I.U.T. Informatique

Cours Système 2 Année I.U.T. Informatique Chapitre 5. Les Processus Cours Système 2 Année I.U.T. Informatique 5.1 Notion de processus On appelle processus l exécution d un programme à un moment donné. Un processus va donc naître, vivre et mourir.

Plus en détail

Systèmes d exploitation II Chapitre 2 : Gestion des processus. www.achrafothman.net

Systèmes d exploitation II Chapitre 2 : Gestion des processus. www.achrafothman.net Systèmes d exploitation II Chapitre 2 : Gestion des processus www.achrafothman.net 1 Processus Concept de Processus Ordonnancement de Processus Opérations sur les Processus Processus Coopératifs Communication

Plus en détail

Exécutif temps réel Pierre-Yves Duval (cppm)

Exécutif temps réel Pierre-Yves Duval (cppm) Exécutif temps réel Pierre-Yves Duval (cppm) Ecole d informatique temps réel - La Londes les Maures 7-11 Octobre 2002 Plan Exécutif Tâches Evénements et synchronisation Partage de ressources Communications

Plus en détail

Modèle d exécution Exemple : le Motorola 68000

Modèle d exécution Exemple : le Motorola 68000 Mémoire et Processeur Mécanismes d exécution Du séquentiel au parallèle Modèle d exécution Exemple : le Motorola 68000 Registres de donnée Registres d adresse Registre d état Registre d état Compteur ordinal

Plus en détail

Introduction aux Systèmes et aux Réseaux

Introduction aux Systèmes et aux Réseaux Introduction aux Systèmes et aux Réseaux Cours 5 Processus D après un cours de Julien Forget (univ Lille1) Laure Gonnord http://laure.gonnord.org/pro/teaching/ Laure.Gonnord@univ-lyon1.fr Master CCI -

Plus en détail

École Polytechnique de Montréal. Département de Génie Informatique. Cours INF3600 : Systèmes d exploitation. Contrôle périodique Automne 2001

École Polytechnique de Montréal. Département de Génie Informatique. Cours INF3600 : Systèmes d exploitation. Contrôle périodique Automne 2001 École Polytechnique de Montréal Département de Génie Informatique Cours INF3600 : Systèmes d exploitation Contrôle périodique Automne 2001 Date : 1 er novembre 2001 de 18h à 20h Professeurs : Kerly Titus,

Plus en détail

Les processus légers : threads. Système L3, 2014-2015 1/31

Les processus légers : threads. Système L3, 2014-2015 1/31 Les processus légers : threads Système L3, 2014-2015 1/31 Les threads Les threads sont des processus légers exécutés à l intérieur d un processus L exécution des threads est concurrente Il existe toujours

Plus en détail

Table des matières. Cours Système d Exploitation. Chapitre II : Gestion des processus

Table des matières. Cours Système d Exploitation. Chapitre II : Gestion des processus Chapitre II : Gestion des processus Table des matières I Processus et contexte d un processus 2 II État d un processus 3 III Système d exploitation multi-tâches et parallélisme 3 IV Problèmes dues au multi-tâches

Plus en détail

INTRODUCTION À LA PROGRAMMATION CONCURRENTE

INTRODUCTION À LA PROGRAMMATION CONCURRENTE INTRODUCTION À LA PROGRAMMATION CONCURRENTE POLYCOPIÉ DU COURS PCO1 Prof. Claude Evéquoz Prof. Yann Thoma HEIG-VD 2009 Table des matières Table des matières 2 1 Introduction à la programmation concurrente

Plus en détail

Projet du cours d ARCHITECTURE Gestion distribué d un parking

Projet du cours d ARCHITECTURE Gestion distribué d un parking Projet du cours d ARCHITECTURE Gestion distribué d un parking 3 GI, INSA de Lyon Janvier 2004 1 Objectifs du projet Ce projet a pour but d apprendre à manipuler une application multitâche où les différentes

Plus en détail

ELE-542 Systèmes ordinés en temps réels. Cours # 8 Système d exploitation Temps Réel

ELE-542 Systèmes ordinés en temps réels. Cours # 8 Système d exploitation Temps Réel ELE- Systèmes ordinés en temps réels Cours # 8 Système d exploitation Temps Réel Jean-Marc Beaulieu et Bruno De Kelper Site internet: http://www.ele.etsmtl.ca/academique/ele/ Systèmes ordinés en temps

Plus en détail

Chapitre 5. Communication interprocessus. 5.1 Introduction

Chapitre 5. Communication interprocessus. 5.1 Introduction Communication interprocessus 5.1 Introduction Dans une activité parallèle (ou pseudo parallèle), un ensemble de processus séquentiels s exécutent en parallèle. Cette exécution résulte deux types de relations

Plus en détail

Noyau RTLinux. Noyau RTLinux

Noyau RTLinux. Noyau RTLinux Noyau RTLinux Noyau RTLinux 1 Principes de programmation RTLinux est implémenté sur la base du Minimal Real-time System Profile (POSIX 1003.13 draft 9) ou «système d'exploitation temps réel minimal», et

Plus en détail

Cours 6 : Tubes anonymes et nommés

Cours 6 : Tubes anonymes et nommés Cours 6 : Tubes anonymes et nommés Mécanisme de communications du système de fichiers I-node associé. Type de fichier: S_IFIFO. Accès au travers des primitives read et write. Les tubes sont unidirectionnels

Plus en détail

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores INTRODUCTION AUX SYSTEMES D EXPLOITATION TD2 Exclusion mutuelle / Sémaphores Exclusion mutuelle / Sémaphores - 0.1 - S O M M A I R E 1. GENERALITES SUR LES SEMAPHORES... 1 1.1. PRESENTATION... 1 1.2. UN

Plus en détail

Semestre 6 2012-2013. Licence miage Université Lille 1 Pour toutes remarques : Alexandre.Sedoglavic@univ-lille1.fr. Communication Inter Processus

Semestre 6 2012-2013. Licence miage Université Lille 1 Pour toutes remarques : Alexandre.Sedoglavic@univ-lille1.fr. Communication Inter Processus V-2 (24-02-2012) Licence miage Université Lille 1 Pour toutes remarques : Alexandre.Sedoglavic@univ-lille1.fr Semestre 6 2012-2013 Les processus peuvent communiquer grâce à des fichiers spéciaux. Lorsque

Plus en détail

Questions à choix multiples Page 1 de 11

Questions à choix multiples Page 1 de 11 INF3172 Principes des systèmes d'exploitation Examen intra hiver 2015 Question #1 Quel est l'objectif d'un système d'exploitation? a) Protéger les composants de l'ordinateur b) Fournir une abstraction

Plus en détail

Plan du cours. 12. Gestion des processus. 12.1 Notions théoriques 12.2 Lancement d'une commande 12.3 Identifier et controler un processus

Plan du cours. 12. Gestion des processus. 12.1 Notions théoriques 12.2 Lancement d'une commande 12.3 Identifier et controler un processus Plan du cours 12.1 Notions théoriques 12.2 Lancement d'une commande 12.3 Identifier et controler un processus PS, KILL 12.4 Exercices Olivier HUBERT LGEP/CNRS 1 Plan du cours 12.1 Notions théoriques 12.1.1

Plus en détail

Dr. M.W. Youssef Systèmes d exploitation Avancées 1ING ISI - 2009

Dr. M.W. Youssef Systèmes d exploitation Avancées 1ING ISI - 2009 Institut Supérieur d Informatique Chapitre 02 Synchronisation des processus Dr. Mohamed-Wassim YOUSSEF 2009 [www.wassimyoussef.info] Systèmes d exploitation avancées 1 ING ISI 1 ére année Ingénieur en

Plus en détail

Département de génie informatique et génie logiciel

Département de génie informatique et génie logiciel INF2610 Chapitre 2 : Processus Département de génie informatique et génie logiciel Hiver 2014 Chapitre 2 - Processus Qu est ce qu un processus? États d un processus Hiérarchie des processus Processus UNIX-Linux

Plus en détail

Processus non indépendants : accès concurrents aux ressources

Processus non indépendants : accès concurrents aux ressources Agenda Synchronisation et communication entre processus Schémas classiques de synchronisation 1 Introduction Système multiprocessus L'ordonnancement "entrelace" les exécutions P1 P2 P3 F Processus non

Plus en détail

Processus et gestion de processus

Processus et gestion de processus Processus et gestion de processus et gestion de processus Processus Définition Modélisation Descripteur État Création Destruction Allocation de ressources UNIX Processus UNIX - Modèle Création Terminaison

Plus en détail

Processus, threads et IPC

Processus, threads et IPC PhL - 29/10/2015 - Page 1 / 5 Processus, threads et IPC Processus et signaux La commande ps Cette commande Unix permet d'afficher différents types d'informations sur les threads et les processus. De nombreuses

Plus en détail

Processus! programme. DIMA, Systèmes Centralisés (Ph. Mauran) " Processus = suite d'actions = suite d'états obtenus = trace

Processus! programme. DIMA, Systèmes Centralisés (Ph. Mauran)  Processus = suite d'actions = suite d'états obtenus = trace Processus 1) Contexte 2) Modèles de Notion de Points de vue Modèle fourni par le SX Opérations sur les 3) Gestion des Représentation des Opérations 4) Ordonnancement des Niveaux d ordonnancement Ordonnancement

Plus en détail

Chapitre 2. Fondements pour la programmation des systèmes temps réel et embarqués. Eléments de la norme POSIX

Chapitre 2. Fondements pour la programmation des systèmes temps réel et embarqués. Eléments de la norme POSIX Chapitre 2 Fondements pour la programmation des systèmes temps réel et embarqués Eléments de la norme POSIX 42 1. Programmation concurrente Une application TRE = ensemble d activités concurrentes éventuellement

Plus en détail

Partie 6 : Ordonnancement de processus

Partie 6 : Ordonnancement de processus INF3600+INF2610 Automne 2006 Partie 6 : Ordonnancement de processus Exercice 1 : Considérez un système d exploitation qui ordonnance les processus selon l algorithme du tourniquet. La file des processus

Plus en détail

Les threads POSIX. Chapitre 16. 16.0.1 Description. 16.0.2 fork et exec

Les threads POSIX. Chapitre 16. 16.0.1 Description. 16.0.2 fork et exec Chapitre 16 Les threads POSIX La programmation par thread (actvité) est naturelle pour gérer des phénomènes asyncrones. Les entrées utilisateur dans les interfaces graphiques (souris, clavier) sont plus

Plus en détail

4 Sémaphores. 4.1 Syntaxe et sémantique. sem s1; /* sem s1 = 0; */ sem s2 = 1; sem forks[5] = ([5] 1); P(s): < await(s > 0) s = s - 1; >

4 Sémaphores. 4.1 Syntaxe et sémantique. sem s1; /* sem s1 = 0; */ sem s2 = 1; sem forks[5] = ([5] 1); P(s): < await(s > 0) s = s - 1; > 4 Sémaphores Motivation = une approche avec busy waiting n est pas intéressante dans un programme avec fils d exécution multiples, puisque le nombre de processus est généralement plus grand que le nombre

Plus en détail

Plan. Concurrence, l exclusion mutuelle. Exemple : le spool d impression. Les race conditions : exemples Exclusion mutuelle par attente active

Plan. Concurrence, l exclusion mutuelle. Exemple : le spool d impression. Les race conditions : exemples Exclusion mutuelle par attente active Plan Concurrence, l exclusion mutuelle Luigi Santocanale Laboratoire d Informatique Fondamentale, Centre de Mathématiques et Informatique, 39, rue Joliot-Curie - F-13453 Marseille 13 décembre 2005 1 Les

Plus en détail

Claude Delannoy. Exercices C++ en langage. 3 e édition. Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5

Claude Delannoy. Exercices C++ en langage. 3 e édition. Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5 Claude Delannoy Exercices en langage C++ 3 e édition Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5 Chapitre 3 Les fonctions Rappels Généralités Une fonction est un bloc d instructions éventuellement

Plus en détail

Jean-Philippe Babau Département Informatique, UFR Sciences, UBO Laboratoire LISyC

Jean-Philippe Babau Département Informatique, UFR Sciences, UBO Laboratoire LISyC www.lisyc.univ-brest.fr/pages_perso/babau/ Conception orientée objet appliquée à l'embarqué et au temps réel Logiciel multitâche temps-réel POSIX Jean-Philippe Babau Département Informatique, UFR Sciences,

Plus en détail

Notions de base Ordonnancement Communication et synchronisation. Les processus. Julien Forget 1

Notions de base Ordonnancement Communication et synchronisation. Les processus. Julien Forget 1 Julien Forget 1 Université Lille 1 École Polytechnique Universitaire de Lille Cité Scientifique 59655 Villeneuve d Ascq GIS3 2011-2012 1. Inspiré des slides de Thomas Vantroys 1 / 58 Plan 1 Notions de

Plus en détail

PLAN. Synchronisation des Processus: Exclusion Mutuelle. Problème de synchronisation: Exemple. Spécification du Problème

PLAN. Synchronisation des Processus: Exclusion Mutuelle. Problème de synchronisation: Exemple. Spécification du Problème PLAN Synchronisation des Processus: Exclusion Mutuelle N.Hameurlain http://www.univ-pau.fr/~hameur Spécification du problème Section Critique () Exclusion Mutuelle Principe Propriétés Réalisation d exclusion

Plus en détail

Moniteurs, Java, Threads et Processus

Moniteurs, Java, Threads et Processus Moniteurs, Java, Threads et Processus 1 Une vue orientée-objet de la mémoire partagée On peut voir un sémaphore comme un objet partagé accessible par deux méthodes : wait et signal. L idée du concept de

Plus en détail

Informatique Embarquée M2 / 2014. Quelle heure est-il?

Informatique Embarquée M2 / 2014. Quelle heure est-il? Informatique Embarquée M2 / 2014 Quelle heure est-il? 2014 FA-P7-Info Emb. 1 Différents Temps Temps «horloge murale» Avance sans arrêt, quelque soit l'activité des processus, processeurs Temps CPU N'augmente

Plus en détail

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par

Plus en détail

La synchronisation des processus. Partie 2a

La synchronisation des processus. Partie 2a La synchronisation des processus Partie 2a 1 La synchronisation Un système d'exploitation dispose de ressources (imprimantes, disques,mémoire, fichiers, base de données,...), que les processus peuvent

Plus en détail

POSIX threads (programmation concurrente) Les threads. Les fils d exécution : threads ou processus légers. Introduction

POSIX threads (programmation concurrente) Les threads. Les fils d exécution : threads ou processus légers. Introduction POSIX threads (programmation concurrente) François Broquedis, Grégory Mounié, Matthieu Ospici, Vivien Quéma d après les œuvres de Jacques Mossière et Yves Denneulin Introduction Moniteur Exclusion mutuelle

Plus en détail

LEs processus coopèrent souvent pour traiter un même problème. Ces

LEs processus coopèrent souvent pour traiter un même problème. Ces Chapitre 5 Communication interprocessus LEs processus coopèrent souvent pour traiter un même problème. Ces processus s exécutent en parallèle sur un même ordinateur (monoprocesseur ou multiprocesseurs)

Plus en détail

Systèmes d'exploitation. Pierre Antoine Champin IUT A de Lyon Séance 4

Systèmes d'exploitation. Pierre Antoine Champin IUT A de Lyon Séance 4 Systèmes d'exploitation Pierre Antoine Champin IUT A de Lyon Séance 4 Plan de la séance 1. Concurrence 2. Problématique liée à la concurrence section critique mécanisme d'exclusion mutuelle 3. Solutions

Plus en détail

I Quelques points d'algorithmique

I Quelques points d'algorithmique I Quelques points d'algorithmique 1) Types Type "simple" : Identificateur commençant par une majuscule = Description du type Les principaux types : les entiers naturels (int, long, long long) ou relatifs

Plus en détail

Informatique industrielle A7-19571 Systèmes temps-réel J.F.Peyre. Partie 7 : Exemple d application temps réelle en Ada et en C/Posix

Informatique industrielle A7-19571 Systèmes temps-réel J.F.Peyre. Partie 7 : Exemple d application temps réelle en Ada et en C/Posix Informatique industrielle A7-19571 Systèmes temps-réel J.F.Peyre Partie 7 : Exemple d application temps réelle en Ada et en C/Posix Plan du cours Présentation d un problème Solution en Ada Solution en

Plus en détail

Communications et synchronisations. Système L3, 2014-2015 1/21

Communications et synchronisations. Système L3, 2014-2015 1/21 Communications et synchronisations Système L3, 2014-2015 1/21 Le problème des philosophes (Dijkstra 1965) Cinq philosophes sont assis autour d une table ronde Chaque philosophe a devant lui un plat de

Plus en détail

Gestion du processeur central

Gestion du processeur central Chapitre II Gestion du processeur central 1. Introduction Evolution des systèmes informatiques 1.1- Premier système : Le programmeur/opérateur doit écrire un programme ensuite le faire fonctionner directement

Plus en détail

Programmation système en C/C++

Programmation système en C/C++ Programmation système en C/C++ Jean-Baptiste Vioix (jb.vioix@free.fr) LE2I - ENESAD http://jb.vioix.free.fr 1-41 Programmation en C/C++ sous Unix Il existe des très nombreux outils de développement sous

Plus en détail

1.1 Remote Procedure Call (RPC)

1.1 Remote Procedure Call (RPC) 1.1 Remote Procedure Call (RPC) Le modèle Client-Serveur est un modèle simple à utiliser pour la structuration des systèmes répartis. Mais ce modèle s appuie sur des communications de type entrée/sortie

Plus en détail

École Polytechnique de Montréal. Département de Génie Informatique et Génie Logiciel. Cours INF2610. Contrôle périodique.

École Polytechnique de Montréal. Département de Génie Informatique et Génie Logiciel. Cours INF2610. Contrôle périodique. École Polytechnique de Montréal Département de Génie Informatique et Génie Logiciel Cours INF2610 Contrôle périodique Automne 2013 Date : 11 octobre 2013 de 18h à 20h Professeur : Boucheneb Hanifa Documentation

Plus en détail

Système d exploitation

Système d exploitation Chapitre 2 Système d exploitation 2.1 Définition et rôle Un ordinateur serait bien difficile à utiliser sans interface entre le matériel et l utilisateur. Une machine peut exécuter des programmes, mais

Plus en détail

Ordonnancement. Semestre 6 2012-2013. Licence miage Université Lille 1 Pour toutes remarques : Alexandre.Sedoglavic@univ-lille1.fr.

Ordonnancement. Semestre 6 2012-2013. Licence miage Université Lille 1 Pour toutes remarques : Alexandre.Sedoglavic@univ-lille1.fr. V-2 (02-03-2009) Licence miage Université Lille 1 Pour toutes remarques : Alexandre.Sedoglavic@univ-lille1.fr Semestre 6 2012-2013 Quelques faits motivant la notion Sur une machine, il y a plus de processus

Plus en détail

CEG4566/CSI4541 Conception de systèmes temps réel. Chapitre 8 - Communication et synchronisation dans les systèmes temps réel

CEG4566/CSI4541 Conception de systèmes temps réel. Chapitre 8 - Communication et synchronisation dans les systèmes temps réel CEG4566/CSI4541 Conception de systèmes temps réel Chapitre 8 - Communication et synchronisation dans les systèmes temps réel Sommaire 8.1 Objets partagés et exclusion mutuelle 8.2 Moniteurs et synchronisation

Plus en détail

Nom: INF5171 Programmation concurrente et parallèle Examen nal (Automne 2012) Code permanent: 1 2 3 4 5 Total /10 /10 /10 /10 /10 /50 XXX XXX XXX

Nom: INF5171 Programmation concurrente et parallèle Examen nal (Automne 2012) Code permanent: 1 2 3 4 5 Total /10 /10 /10 /10 /10 /50 XXX XXX XXX Examen nal 1 INF5171 Programmation concurrente et parallèle Examen nal (Automne 2012) Durée: 13h30 16h30 Documentation : Documentation personnelle (papier) autorisée. Nom: Code permanent: 1 2 3 4 5 Total

Plus en détail

Systèmes d exploitation Gestion des processus

Systèmes d exploitation Gestion des processus Systèmes d exploitation Gestion des processus Didier Verna didier@lrde.epita.fr 5 décembre 2000 Table des matières Table des matières Généralités... 3 États d un processus... 4 Bloc de contrôle d un processus

Plus en détail

Processus. Les processus, à quoi ça sert? Une définition d'un processus. La vie intime des processus. Allocation du processeur

Processus. Les processus, à quoi ça sert? Une définition d'un processus. La vie intime des processus. Allocation du processeur 1 sur 9 Processus Les processus, à quoi ça sert? Une définition d'un processus La vie intime des processus Quelques caractéristiques des processus Le contexte et la commutation de contexte Les processus

Plus en détail

Programmation concurrente en java

Programmation concurrente en java Programmation concurrente en java M. Belguidoum Université Mentouri de Constantine Département Informatique M. Belguidoum (UMC) Programmation concurrente 1 / 29 Plan 1 Introduction 2 Création d'un thread

Plus en détail

Synchronisation et communication entre processus

Synchronisation et communication entre processus Synchronisation et communication entre processus Schémas classiques de synchronisation 1 INTRODUCTION Système multiprocessus L'ordonnancement "entrelace" les exécutions P1 P2 P3 Processus non indépendants

Plus en détail

Les processus 2/54. Qu est-ce qu un processus? 3(6)/54. Se souvenir 1(1)/54. Le système de fichiers (exemple du disque dur)

Les processus 2/54. Qu est-ce qu un processus? 3(6)/54. Se souvenir 1(1)/54. Le système de fichiers (exemple du disque dur) Se souvenir 1(1)/54 Le système de fichiers (exemple du disque dur) Qu est-ce qu un processus? 3(3)/54 Les caches (inodes et blocks) Accès à un fichier : double indirection Compteurs de références : Les

Plus en détail

Introduction à Make et aux fonctions pseudo-aléatoires

Introduction à Make et aux fonctions pseudo-aléatoires Introduction à Make et aux fonctions pseudo-aléatoires 1 Introduction à Make Support de TP C Make est un outil de programmation, dont une version est disponible pour les systèmes Unix sous la licence GNU

Plus en détail

3IS - Système d'exploitation linux - Programmation système

3IS - Système d'exploitation linux - Programmation système 3IS - Système d'exploitation linux - Programmation système 2010 David Picard Contributions de : Arnaud Revel, Mickaël Maillard picard@ensea.fr Environnement Les programmes peuvent être exécutés dans des

Plus en détail

LA GESTION DE FICHIERS

LA GESTION DE FICHIERS CHAPITRE 6 : LA GESTION DE FICHIERS Objectifs spécifiques Connaître la notion de fichier, ses caractéristiques Connaître la notion de répertoires et partitions Connaître les différentes stratégies d allocation

Plus en détail

Cours Programmation Système

Cours Programmation Système Cours Programmation Système Filière SMI Semestre S6 El Mostafa DAOUDI Département de Mathématiques et d Informatique, Faculté des Sciences Université Mohammed Premier Oujda m.daoudi@fso.ump.ma Février

Plus en détail

Comment régler les problèmes de synchronisation? P-A. Champin

Comment régler les problèmes de synchronisation? P-A. Champin S y s t è m e d ' e x p l o i t a t i o n S é a n c e 5 Comment régler les problèmes de synchronisation? P-A. Champin Département Informatique IUT A Université Claude Bernard Lyon 1 2009 S5 - Comment régler

Plus en détail

Afficher le contenu du script au fur et à mesure de son exécution.

Afficher le contenu du script au fur et à mesure de son exécution. 5 Commandes, variables et utilitaires système Ns avons étudié en détail les structures offertes par le langage de programmation des scripts shell, ainsi que les mécanismes d évaluation des expressions.

Plus en détail

Introduction à la programmation concurrente

Introduction à la programmation concurrente à la programmation concurrente Moniteurs Yann Thoma Reconfigurable and Embedded Digital Systems Institute Haute Ecole d Ingénierie et de Gestion du Canton de Vaud Mai 2012 Yann Thoma (HES-SO / HEIG-VD

Plus en détail

Conduite du Projet Système

Conduite du Projet Système Conduite du Projet Système Département Télécom 2ème Année Enseignants : Yves Denneulin, Jacques Mossière, Grégory Mounié, Simon Nieuviarts, Franck Rousseau, Sébastien Viardot Résumé Ce document est complémentaire

Plus en détail

Les Systèmes d Exploitation

Les Systèmes d Exploitation Les Systèmes d Exploitation Comment Comment Comment Comment ça a marche marche marche marche???? RTX M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 1 Les Systèmes d Exploitation 1. Introduction

Plus en détail

Synchronisation des Processus et les sémaphores

Synchronisation des Processus et les sémaphores Synchronisation des Processus et les sémaphores Achraf Othman Support du cours : www.achrafothman.net 1 PLAN Spécification du problème Section Critique (SC) Exclusion Mutuelle Principe Propriétés Réalisation

Plus en détail

Tutorat C/Unix : Un Rapido Client/Serveur

Tutorat C/Unix : Un Rapido Client/Serveur Tutorat C/Unix : Un Rapido Client/Serveur Nouredine Melab 1 Description générale du projet 1.1 Objectif L'objectif du projet est de concevoir et de réaliser un jeu de hasard dénommé Rapido. Un serveur

Plus en détail

Formation Unix/Linux (3) Le Shell: gestion des processus, redirection d entrée/sortie

Formation Unix/Linux (3) Le Shell: gestion des processus, redirection d entrée/sortie Formation Unix/Linux (3) Le Shell: gestion des processus, redirection d entrée/sortie Olivier BOEBION Mars 2004 1 Définition Un programme se compose d un ou plusieurs fichiers composés d instructions.

Plus en détail