EPU - Informatique ROB4 Programmation Système

Documents pareils
Cours de S.E. les Signaux

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

Introduction aux Systèmes et aux Réseaux

Programmation système en C/C++

Cours Programmation Système

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

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

Communication Interprocessus

Cours 6 : Tubes anonymes et nommés

REALISATION d'un. ORDONNANCEUR à ECHEANCES

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

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)

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

Qu'est-ce qu'un processus: Définitions

Programmation système

Temps Réel. Jérôme Pouiller Septembre 2011

Le traitement du temps

Le système GNU/Linux IUP NTIC /11/05

Plan global. Programmation système II. Socket du domaine UNIX. Plan. Socket UNIX, Terminaux, Async IO, Mémoire, ELF.

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Cours de Systèmes d Exploitation

Manuel d'installation de GESLAB Client Lourd

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

Programmation impérative

CAPTURE DES PROFESSIONNELS

Cours A7 : Temps Réel

Introduction aux Systèmes et aux Réseaux, Master 2 CCI

Ordinateurs, Structure et Applications

Playing with ptrace() for fun and profit

TP3 : Manipulation et implantation de systèmes de fichiers 1

Atelier C TIA Portal CTIA06 : programmation des automates S7-300 Blocs d organisation

DUT Informatique Module Système S4 C Département Informatique 2009 / Travaux Pratiques n o 5 : Sockets Stream

DAns un système multi-utilisateurs à temps partagé, plusieurs processus

Chapitre 4 : Outils de communication centralisés entre processus

CH.3 SYSTÈMES D'EXPLOITATION

gestion des processus La gestion des processus

Unix : Programmation Système

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Manuel de référence des commandes SMS Advisor Advanced

Cahier des charges. driver WIFI pour chipset Ralink RT2571W. sur hardware ARM7

SYSTÈME DE GESTION DE FICHIERS

Programmation système de commandes en C

SD1+ SD1+ SD1+ ENT ESC

Partie 7 : Gestion de la mémoire

Guide de l utilisateur Mikogo Version Windows

GPA770 Microélectronique appliquée Exercices série A

IV- Comment fonctionne un ordinateur?

Modules du DUT Informatique proposés pour des DCCE en 2014/2015

Chapitre 2. Les processus. 2.1 Introduction. 2.2 les différents états d un processus

Programmation C. Apprendre à développer des programmes simples dans le langage C

ASR4 Réseaux Département Informatique, IUT Bordeaux 1. DHCP Prénom : Nom : Groupe :

Rapport de fin de stage

Traitement de données

SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE

Clavier Déporté Sans Fil NOTICE RFID SOS

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

Universalis Guide d installation. Sommaire

Support de cours système d exploitation

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

MANUEL UTILISATEUR BALADEUR SANTÉ AUXILIAIRES MÉDICAUX ET SAGES-FEMMES C.D.C 1.40

Formation Technicien Supérieur de Support en Informatique T2SI. Le module LINUX. Session J04 Version 01

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants :

Programmation système I Les entrées/sorties

GUIDE D UTILISATION VOCALYS CW32 CENTRALE-TRANSMETTEUR

PROJET ALGORITHMIQUE ET PROGRAMMATION II

Introduction à la Programmation Parallèle: MPI

Séance n o 5 : Alternatives, gestion des utilisateurs et des processus

Assembleur. Faculté I&C, André Maurer, Claude Petitpierre

Dans le chapitre 1, nous associions aux fichiers ouverts des descripteurs de fichiers par lesquels nous accédions aux fichiers.

HA2000 GSM Transmetteur téléphonique

Le langage C. Séance n 4

Guide Utilisateur Transnet

L informatique en BCPST

Auditcon 2 SERIES MODÈLES 252 ET 552 MODE D EMPLOI

GESTION DES FICHIERS C/UNIX

Système et réseaux (SR1) Gestion des utilisateurs

Systèmes d exploitation

SPF FIN. Patris Spécification de Use Case: 15-UC01 Obtenir de l'information patrimoniale. Version 1.1

TP7. DHCP. 1 Comportement en présence d un serveur unique

Chapitre 4 : Édition de fichiers texte - Vi

Introduction au langage C

Réalisation d un portail captif d accès authentifié à Internet

Guide d installation UNIVERSALIS 2014

USTL - Licence ST-A 1ère année Initiation à la programmation TP 1

Cours de Système : Gestion de Fichiers

MANUEL D UTILISATION (simplifié) DE LA CENTRALE LS-30

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

IFT Systèmes d exploitation - TP n 1-20%

SERRURES & COMBINAISONS

Baladeur Santé VITAL'ACT

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

Sécurité et Firewall

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

Conventions d écriture et outils de mise au point

UTILISATION DE LA BORNE PAR LE CLIENT

Rappels d architecture

Les structures. Chapitre 3

Transcription:

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 de Robotique (CNRS UMR 7222) 9 novembre 2010 V. Padois (UPMC-ISIR) Programmation Système 9 novembre 2010 1 / 25

Plan de ce cours 1 Introduction 2 Processus : quelques approfondissements 3 Signaux 4 Programmation des signaux Envoi avec kill () V. Padois (UPMC-ISIR) Programmation Système 9 novembre 2010 2 / 25

Introduction Rappel du plan 1 Introduction 2 Processus : quelques approfondissements 3 Signaux 4 Programmation des signaux Envoi avec kill () V. Padois (UPMC-ISIR) Programmation Système 9 novembre 2010 3 / 25

Introduction Bon à savoir... Règles de fonctionnement Les cours et les TPs sont obligatoires. Tout(e) étudiant(e) arrivant en retard pourra se voir refuser l accès à la salle de cours ou à la salle de TP. La fonction man du shell doit, tant que faire se peut, être utilisée avant de poser une question par email ou en TP. Site web de l UE Tout se trouve sur les sites web de l UE : le site principal : http ://chronos.isir.upmc.fr/~padois/teaching/progsys ; le site dédié aux TPs : http ://chronos.isir.upmc.fr/~mouret/teaching/progsys.html. Le projet est à remettre à M. Mouret avant le 01/12/2010, selon les modalités qu il vous a indiquées. Lien vers le site web local. V. Padois (UPMC-ISIR) Programmation Système 9 novembre 2010 4 / 25

Processus : quelques approfondissements Rappel du plan 1 Introduction 2 Processus : quelques approfondissements 3 Signaux 4 Programmation des signaux Envoi avec kill () V. Padois (UPMC-ISIR) Programmation Système 9 novembre 2010 5 / 25

Processus : quelques approfondissements Lors de l exécution d une routine du système d exploitation (appel système open() par exemple) : le processus quitte son mode d exécution courant (mode utilisateur) pour passer en mode superviseur : il y a commutation de contexte ; cette commutation induit la sauvegarde du contexte utilisateur (compteur ordinal, registre d état) sur la pile noyau...... et le chargement d un contexte noyau constitué d une valeur de compteur ordinal correspondant à l adresse dans le noyau de la fonction à utiliser (ainsi que d un registre d état en mode superviseur) ; A la fin de l appel système, le contexte utilisateur est restauré et l exécution du programme utilisateur peut reprendre à l instruction suivant l appel système. Deux autres causes majeures de commutation de contexte existent l exécution par le processus utilisateur d une opération illicite (division par 0, violation mémoire,...) : c est ce qu on appelle une trappe ou exception. Elle engendre l arrêt du processus utilisateur. ; la prise en compte d une interruption par le matériel (IRQ Interrupt Request) et l OS. Le processus utilisateur est alors stoppé et l exécution de la routine associée à l interruption survenue est exécutée en mode superviseur. Trappes et appels systèmes sont souvent qualifiés d interruptions logicielles ou synchrones. Ceci les opposent aux IRQ (interruptions matérielles) levées par les périphériques du processeur de manière complètement imprévisible et donc asynchrones. V. Padois (UPMC-ISIR) Programmation Système 9 novembre 2010 6 / 25

Processus : quelques approfondissements Rappel du plan 1 Introduction 2 Processus : quelques approfondissements 3 Signaux 4 Programmation des signaux Envoi avec kill () V. Padois (UPMC-ISIR) Programmation Système 9 novembre 2010 7 / 25

Processus : quelques approfondissements Chaque processus Linux est représenté par un bloc de contrôle (structure task_struct définie dans linux /sched.h ). Ce bloc est alloué dynamiquement par le système au moment de la création du processus. Il contient tous les attributs permettant de qualifier et de gérer le processus. Chaque bloc de contrôle est accessible depuis une table de processus contenant au plus 512 entrées, chaque entrée de la table étant un pointeur vers un bloc de contrôle. Informations contenues dans le PCB : l état du processus (prêt/élu, bloqué, zombie, arrêté) et les informations d ordonnancement ; les différents identifiants déjà mentionnés : PID, UID, GID, PPID ainsi que l identifiant du dernier fils créé et de certains processus frères (cadet le plus jeune et ainé le plus jeune) ; les fichiers ouverts par le processus ; le terminal attaché au processus ; le répertoire courant du processus ; le contexte mémoire du processus ; la partie du contexte processeur pour l exécution en mode utilisateur ; les temps d exécutions du processus en modes utilisateur et superviseur ainsi que ceux de ses fils ; les outils de communication utilisés par le processus parmi lesquels les sémaphores et les signaux ; les signaux reçus par le processus. V. Padois (UPMC-ISIR) Programmation Système 9 novembre 2010 8 / 25

Signaux Rappel du plan 1 Introduction 2 Processus : quelques approfondissements 3 Signaux 4 Programmation des signaux Envoi avec kill () V. Padois (UPMC-ISIR) Programmation Système 9 novembre 2010 9 / 25

Signaux Les signaux sont un mécanisme de communication inter-processus. Les signaux sont envoyées à un ou plusieurs processus. Un signal est en général associé à un événement survenu au niveau du système. Le message envoyé est un entier qui ne comporte donc pas d informations propres si ce n est une correspondance avec l événement rencontré par le noyau. La prise en compte du signal par le processus oblige celui-ci à exécuter une fonction de gestion du signal appelé signal handler. Le noyau Linux admet 64 signaux différents,identifiés par un nombre et décrit par un nom préfixé par la constant SIG. Seul le signal 0 ne porte pas de nom (signal NULL). Les signaux 1 à 31 correspondent aux signaux classiques tandis que les signaux 32 à 63 correspondent aux signaux temps-réel. Parmi ces signaux certains ne sont pas définis par la norme POSIX et sont propres à l OS. Quelques exemples : 2/SIGINT (Interruption du clavier par CTRL C), 9/SIGKILL (Terminaison forcé du processus), 11/SIGSEGV (Référence mémoire invalide), 13/SIGPIPE (Ecriture dans un tube sans lecteur), 15/SIGTERM (Terminaison du processus), 17/SIGCHLD (Processus fils terminé), 18/SIGCONT (Reprise de l exécution d un processus stoppé), 19/SIGSTOP (Stoppe l exécution d un processus), 20/SIGSTP (Suspension du processus (CTRL Z))... V. Padois (UPMC-ISIR) Programmation Système 9 novembre 2010 10 / 25

Signaux Rappel du plan 1 Introduction 2 Processus : quelques approfondissements 3 Signaux 4 Programmation des signaux Envoi avec kill () V. Padois (UPMC-ISIR) Programmation Système 9 novembre 2010 11 / 25

Signaux Le PCB contient plusieurs champs lui permettant de gérer les signaux : Le champ signal, de type sigset_t, qui stocke les isgnaux envoyés au processus. Cette structure contient deux entiers sur 32 bits, chaque bit représentant un signal. Une valeur 0 indique que le signal correspondant n a pas été reçu tandis que la valeur 1 indique que le signal a été reçu. le champ blocked, de type sigset_t, qui stocke les signaux bloqués, i.e. les signaux dont la prise en compte est retardée. le champ sigpending est un drapeau qui indique s il existe au moins un signal non bloqué en attente. le champ gsig qui est un pointeur vers une structure de type signal_struct et qui contient notamment pour chaque signal la définition de l action qui lui est associée. V. Padois (UPMC-ISIR) Programmation Système 9 novembre 2010 12 / 25

Signaux Rappel du plan 1 Introduction 2 Processus : quelques approfondissements 3 Signaux 4 Programmation des signaux Envoi avec kill () V. Padois (UPMC-ISIR) Programmation Système 9 novembre 2010 13 / 25

Signaux Origine des signaux envoi par un autre processus par l intermédiaire d un appel à kill ; envoi par le gestionnaire d exception qui ayant détecté une trappe à l exécution du processus positionne un signal pour indiquer l erreur détectée (par exemple, le gestionnaire d exception divide_error () peut positionner le signal SIGFPE). Positionnement d un signal Lors de l envoi d un signal, le noyau exécute la routine noyau send_sig_info ; Cette routine positionne à 1 le bit correspondant au signal reçu dans le champ signal du PCB du processus destinataire. Il existe deux cas particuliers de traitement d un signal : le signal émis est 0 et la routine retourne immédiatement en indiquant une erreur ; le processus destinataire est zombie et le signal ainsi délivré qualifié de signal pendant. Prise en compte La prise en compte du signal par le processus s effectue lorsqu il s apprête à quitter le mode superviseur noyau pour repasser en mode utilisateur. Cette prise en compte est réalisée par la routine noyau do_signal() qui traite chacun des signaux pendants du processus. Trois types d actions sont possibles : Ignorer le signal, Exécuter l action par défaut ou Exécuter une fonction spécifique du programmeur. Les valeurs correspondantes du champ gsig.sa_handler du PCB sont SIG_IGN, SIG_DFL et l adresse de la fonction spécifique à exécuter. V. Padois (UPMC-ISIR) Programmation Système 9 novembre 2010 14 / 25

Signaux Rappel du plan 1 Introduction 2 Processus : quelques approfondissements 3 Signaux 4 Programmation des signaux Envoi avec kill () V. Padois (UPMC-ISIR) Programmation Système 9 novembre 2010 15 / 25

Signaux Ignorer le signal si le signal est ignoré, aucune action n est entreprise au moment de sa prise en compte ; le signal SIGCHLD (terminaison d un fils) échappe à cette règle afin que le père puisse mettre à jour son PCB. Exécuter l action par défaut : 5 actions possibles Abandon du processus (c est notamment le cas de SIGINT et SIGKILL) ; Abandon du processus et création d un fichier core contenant son contexte d exécution exploitable pour le déboggage (c est notamment le cas de SIGFPE et SIGSEGV) ; Signal ignoré (cf. le traitement de SIGCHLD) ; Processus stoppé (SIGSTOP, SIGSTP...) ; Processus redémarré (SIGCONT). Exécution d une fonction spécifique Tout processus peut mettre en oeuvre un traitement spécifique pour chacun des signaux hormis le signal 9 (SIGKILL). V. Padois (UPMC-ISIR) Programmation Système 9 novembre 2010 16 / 25

Rappel du plan Programmation des signaux Envoi avec kill () 1 Introduction 2 Processus : quelques approfondissements 3 Signaux 4 Programmation des signaux Envoi avec kill () V. Padois (UPMC-ISIR) Programmation Système 9 novembre 2010 17 / 25

Programmation des signaux Envoi avec kill () Envoi d un signal L envoi d un signal à un processus se fait avec la fonction kill () définie dans signal.h et dont le prototype est : int kill (pid_t pid, int num_sig);. L interprétation du résultat diffère en fonction de la valeur pid : pid > 0 : le signal num_sig est envoyé au processus d identifiant pid ; pid = 0 : le signal num_sig est envoyé à tous les processus du groupe de processus auquel appartient le processus appelant ; pid < 0 et pid -1 : le signal num_sig est envoyé à tous les processus du groupe de processus auquel appartient le processus d identifiant abs( pid ) ; pid = 1 : le signal num_sig est envoyé à tous les processus du système sauf le processus 1 et le processus appelant. Trois cas d échecs sont possibles : pid non existant (ESRCH pour perror ), num_sig invalide (EINVAL) et droits insuffisants (EPERM). Il existe une version shell de kill. V. Padois (UPMC-ISIR) Programmation Système 9 novembre 2010 18 / 25

Programmation des signaux Rappel du plan 1 Introduction 2 Processus : quelques approfondissements 3 Signaux 4 Programmation des signaux Envoi avec kill () V. Padois (UPMC-ISIR) Programmation Système 9 novembre 2010 19 / 25

Programmation des signaux Manipulation du vecteur de signaux Un ensemble de signaux du type sigset_t est manipulable grâce aux fonctions suivantes : int sigemptyset( sigset_t ens); / raz / ; int sigfillset ( sigset_t ens) / ens = 1,2,..., NSIG / ; int sigaddset ( sigset_t ens, int sig ) / ens = ens + sig / ; int sigdelset ( sigset_t ens, int sig ) / ens = ens sig /. Ces fonctions retournent -1 en cas d échec et 0 sinon. int sigismember(sigset_t ens, int sig ); retourne vrai si le signal appartient à l ensemble. La fonction sigprocmask() La fonction int sigprocmask(int op, const sigset_t nouv, sigset_t anc); définie dans signal.h permet de manipuler le masque de signaux du processus. Opération op : SIG_SETMASK : affectation du nouveau masque nouv ; SIG_BLOCK : union des deux ensembles nouv et anc ; SIG_UNBLOCK : "soustraction" anc - nouv. Renvoie 0 en cas de succès et -1 sinon. V. Padois (UPMC-ISIR) Programmation Système 9 novembre 2010 20 / 25

Programmation des signaux Rappel du plan 1 Introduction 2 Processus : quelques approfondissements 3 Signaux 4 Programmation des signaux Envoi avec kill () V. Padois (UPMC-ISIR) Programmation Système 9 novembre 2010 21 / 25

Programmation des signaux Cette association peut se faire au travers de l appel à sigaction () qui est la version normalisée POSIX de l appel signal dont l emploi peut s avérer peut portable. int sigaction ( int signum, const struct sigaction act, struct sigaction oldact ); est défini dans signal.h. Les différents paramètres ont la signification suivante : signum : numéro de signal pour lequel une fonction spécifique des traitement est spécifiée ; const struct sigaction act : définition de la nouvelle action associée au signal ; struct sigaction oldact : sauvegarde de l ancienne action associée au signal (0 si on ne souhaite rien sauvegarder). La structure sigaction contient les champs suivants : void ( sa_handler)() : pointeur sur la fonction à exécuter pour la gestion du signal ; sigset_t sa_mask : ensemble des signaux à bloquer pendant l exécution de la fonction pointée par sa_handler ; int sa_flags : options de comportement du "handler". 0 pour les options par défaut. V. Padois (UPMC-ISIR) Programmation Système 9 novembre 2010 22 / 25

Programmation des signaux Rappel du plan 1 Introduction 2 Processus : quelques approfondissements 3 Signaux 4 Programmation des signaux Envoi avec kill () V. Padois (UPMC-ISIR) Programmation Système 9 novembre 2010 23 / 25

Programmation des signaux int pause() définie dans unistd.h : attente de délivrance d un signal. unsigned int alarm(unsigned int nb_sec) définie dans unistd.h : arme une temporisation qui délivre le signal SIGALRM à son issue. alarm(0) annule l alarme. Permet de clore un processus si un temps d attente (ouverture d un fichier, écriture dans un pipe...) est jugé trop long. V. Padois (UPMC-ISIR) Programmation Système 9 novembre 2010 24 / 25

Programmation des signaux Liste des exemples Blocage d interruption ( bloque.c ) ; Attacher un handler à un signal ( new_handler.c ) ; V. Padois (UPMC-ISIR) Programmation Système 9 novembre 2010 25 / 25