Signaux Il s'agit de messages asynchrones envoyés à un processus

Slides:



Advertisements
Présentations similaires
La programmation orientée objet avec Java L3-MIAGE Plan
Advertisements

Premier programme en C :
La boucle for : init7.c et init71.c
Chapitre annexe. Récursivité
Le Concept du programme enregistré
Synchronisation des processus père - fils
PROGRAMMATION LOGICIEL PL7 MICRO Consignes
GEF 435 Principes des systèmes d’exploitations
TP 7.1 synchronized et join Écrire un programme Java qui crée 1000 threads et maintient un compteur nb du nombre de threads créés jusque-là. Le thread.
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
Conception et programmation Programmation Parallèle
C.
Le Concept du programme enregistré
Mémoire & Processus Cours SE - SRC
Tableaux Certains problèmes nécessitent beaucoup de variables du même type. Exemple : relevé de températures matin et soir dans 10 villes pour 10 jours.
Chap. 1 Structures séquentielles : listes linéaires
Introduction à la programmation (420-PK2-SL) cours 15 Gestion des applications Technologie de linformation (LEA.BW)
Parallel Programming in C with MPI and OpenMP
Formation Linux :exécutables et processus
dsi- assistance Numéros utiles Notice Simplifiée
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Aide-mémoire – FORMULAIRE Web DA/DT
Localisation pour la planète entreprise
Récursivité.
Les instructions PHP pour l'accès à une base de données MySql
TRANSMISSION DES DONNEES.
Segments de mémoire partagée
Course Critique Race Condition
Gestion des événements liés à la fenêtre et aux périphériques dentrée.
Instruction sélective switch-case Instruction répétitive do-while For
Programmation concurrente
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
Module 2 : Préparation de l'analyse des performances du serveur
SYSTÈME D’EXPLOITATION I
Chapitre 9 Les sous-programmes.
CSI3531 – Labo 1 Lobservation du comportement de processus.
ÉLÉMENTS DE BASE UNIX.
Signaux – Tubes La gestion des signaux La communication par tube
Plan troisième cours Instruction sélective Instruction répétitive
Mécanismes d'exécution et de communication
Plan cours La notion de pointeur et d’adresse mémoire.
La librairie assert.h.
Systèmes d'exploitations Processus
02/11/06Programmation multitâche sous UnixIsaip-Esaip1 Groupe Isaip-Esaip P. Trégouët – A. Schaal remerciements à M. Benzaïd pour sa contribution à la.
GDB: Debogueur GNU Multi-langage Permet l’inspection du source pendant l’exécution Permet le débogage post-mortem Bogue (de châtaigne), terme recommandé.
Programmation Système et Réseau (sous Linux)
Processus (suite) Réalisation des processus Communication par signaux
GESTION ET TRAITEMENT DES ERREURS
Communication avec l’environnement
Un survol du language C.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Les erreurs communes en Java.
Programmation Système et Réseau
Finder => Application => Utilitaires => Terminal Editor:pico Touches –Finder=>Applic.=> Utili. => Touches –~: Alt+N –|: Shift+Alt+N –[: Shift+ Alt+5 –{:
Variables et environnement utilisateur W. Barhoumi.
NOTE : Pour faire évoluer le diaporama, si le clic de souris ne fait rien utilisez les touches du clavier : Pg up Pg down.
1. Ook Christophe Delagarde, septembre 1999 I.U.T., Université de la Méditerrainée 2.
Classe 1 CSI2572 Autres modificateurs de déclaration de variables: & volatile & register & static & auto & extern & const volatile Indique au compilateur.
1. Spoon Christophe Delagarde, septembre 1998 I.U.T., Université de la Méditerrainée 2.
Simulateur de microcontrôleur Intel 80C51
Cours Système LI324 Les Interruptions Cours Système LI324
CPI/BTS 2 Programmation Web Fonctions & Includes Prog Web CPI/BTS2 – M. Dravet – 02/11/2003 Dernière modification: 02/11/2003.
Multiplexeurs A.Lebrun.
12/01/20161Boulogne Informatic Club FORMATION SKYPE MICROSOFT.

NICE.introduction ► ► Dans minix, toutes les processus utilisateurs s’exécutent avec la même priorité. ► ► Si en arrière fond, plusieurs processus intensifs.
Gestion des Tâches Les Processus. Un système multitâches La carte mère comporte Le Processeur (calcul et attente) Les jeux de composants spécialisés (entrées-sorties.
Génie de la production automatisée GPA435 S.E. et prog. système Cours #6 Programmation bash (II) Jean-Phillipe Roberge, ing., M. ing. T. Wong, ing., Ph.D.
1 UNIX AVANCE Yves PAGNOTTE – Janvier – LES PROCESSUS SOUS UNIX.
Communication entre Processus
Processus et threads: Programme et Processus
Transcription de la présentation:

Signaux Il s'agit de messages asynchrones envoyés à un processus soit par le système soit par d'autres processus La liste des signaux peut être obtenue par la commande "kill -l" : $ kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR 31) SIGSYS 32) SIGRTMIN 33) SIGRTMIN+1 34) SIGRTMIN+2 35) SIGRTMIN+3 36) SIGRTMIN+4 37) SIGRTMIN+5 38) SIGRTMIN+6 39) SIGRTMIN+7 40) SIGRTMIN+8 41) SIGRTMIN+9 42) SIGRTMIN+10 43) SIGRTMIN+11 44) SIGRTMIN+12 45) SIGRTMIN+13 46) SIGRTMIN+14 47) SIGRTMIN+15 48) SIGRTMAX-15 49) SIGRTMAX-14 50) SIGRTMAX-13 51) SIGRTMAX-12 52) SIGRTMAX-11 53) SIGRTMAX-10 54) SIGRTMAX-9 55) SIGRTMAX-8 56) SIGRTMAX-7 57) SIGRTMAX-6 58) SIGRTMAX-5 59) SIGRTMAX-4 60) SIGRTMAX-3 61) SIGRTMAX-2 62) SIGRTMAX-1 63) SIGRTMAX signaux

traitement des signaux lorsqu'un processus reçoit un signal, il exécute le traitant correspondant (traitant=handler) le comportement "par défaut" dépend du signal: soit ignoré soit terminaison du processus soit terminaison du processus avec création d'un fichier "image mémoire" (core) signaux

Les principaux signaux SIGHUP | 1 | A | Raccrochement (déconnexion) sur terminal de | | | contrôle, ou mort du processus de contrôle. SIGINT | 2 | A | Interruption depuis le clavier (CTRL C) SIGQUIT | 3 | A | Demande 'Quitter' depuis le clavier (CTRL \) SIGILL | 4 | A | Instruction illégale. SIGABRT | 6 | C | Signal d'arrêt depuis abort(3). SIGFPE | 8 | C | Erreur mathématique virgule flottante. SIGKILL | 9 | AEF | Signal 'KILL'. SIGSEGV | 11 | C | Référence mémoire invalide. SIGALRM | 14 | A | Temporisation alarm(2) écoulée. SIGTERM | 15 | A | Signal de fin. SIGUSR1 | 30,10,16 | A | Signal utilisateur 1. SIGUSR2 | 31,12,17 | A | Signal utilisateur 2. SIGCHLD | 20,17,18 | B | Fils arrêté ou terminé. SIGCONT | 19,18,25 | | Continuer si arrêté (commandes bg ou fg) SIGSTOP | 17,19,23 | DEF | Arrêt du processus (CTRL z) A : mort du processus B : signal ignoré C : mort du processus + core D : arrêter le processus E : Le signal ne peut pas être intercepté. F : Le signal ne peut pas être ignoré. signaux

interface de programmation L'appel système signal(SIG_NUM, handler) permet de modifier la gestion du signal SIG_NUM : handler peut être : SIG_IGN : le signal sera ignoré SIG_DFL : traitement par défaut l'adresse d'une fonction fournie par le programme : cette fonction sera appelée quand le signal sera reçu l'appel à signal() retourne l'adresse de la fonction de traitement courante, pour pouvoir la restaurer plus tard. signaux

Interface de programmation l'appel système kill(PID, SIG_NUM) permet d'envoyer le signal SIG_NUM au processus de PID PID. La fonction raise(SIG_NUM) permet à un processus de s'envoyer le signal SIG_NUM. la fonction alarm(sec) demande au système d'envoyer un signal SIG_ALRM au processus appelant après sec secondes. Si sec = 0, toute alarme demandée précédemment est annulée la fonction pause() met le processus courant à l'état "endormi" en attente de signaux. Quand un signal est reçu, il est traité, puis l'exécution reprend en sortie de la fonction pause(). signaux

signaux : exemple 1 #include<stdio.h> #include<signal.h> void hand() { printf("Envoyer le signal SIGKILL pour me tuer\n"); } main() printf("mon PID est %d\n",getpid()); signal(SIGINT,hand); signal(SIGQUIT,hand); for(;;); signaux

Résultat : exemple 1 [couveep@pegtst2 os]$ ./signal1 & [1] 12970 mon PID est 12970 [couveep@pegtst2 os]$ kill -SIGINT 12970 Envoyer le signal SIGKILL pour me tuer [couveep@pegtst2 os]$ kill -SIGQUIT 12970 [couveep@pegtst2 os]$ [couveep@pegtst2 os]$ kill -SIGTERM 12970 [1]+ Terminated ./signal1 signaux

signaux : exemple 2 programme de surveillance de la température interne du système, qui tourne en boucle infinie il doit pouvoir afficher sur demande la température courante, et la température maximale relevée depuis le lancement proposer une implémentation basée sur les signaux SIG_ALRM, SIG_USR1 et SIG_USR2, et l'utilisation de pause(). signaux

résultat [couveep@pegtst2 os]$ ./signal2 & [1] 664 mon PID est 664 temp = 1804289383 temp = 1681692777 temp = 1714636915 temp = 1957747793 kill -SIGUSR1 664 temperature courante : 1957747793 [couveep@pegtst2 os]$ temp = 424238335 kill -SIGUSR2 664 temperature maximale enregistree : 1957747793 [couveep@pegtst2 os]$ temp = 719885386 temp = 1649760492 kill -SIGTERM 664 [1]+ Terminated ./signal2 signaux

Aspects Système Envoyer un signal à un processus revient à mettre une entrée à 1 dans un tableau (en pratique, un bit à 1 dans un mot sur 32 ou 64 bit) ce tableau se trouve dans la structure task_struct associée à chaque processus actif le système "traite" les signaux en attente lorsqu'il élit le processus (passage de actif -> élu) un processus endormi ne peut pas être élu… mais, quand un processus s'endort, il précise si il souhaite être réveillé sur reception d'un signal, ou pas. Dans ce dernier cas, il sera impossible de le "tuer", y compris avec la commande "kill -9" signaux