PROGRAMMATION SYSTEME. Léon Mugwaneza ( 2: SIGNAUX

Documents pareils
Programmation système en C/C++

Cours Programmation Système

Introduction aux Systèmes et aux Réseaux

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)

Cours de S.E. les Signaux

Communication Interprocessus

Programmation système

Le prototype de la fonction main()

Bases de programmation. Cours 5. Structurer les données

Rappels Entrées -Sorties

Cours 6 : Tubes anonymes et nommés

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

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

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

Introduction au langage C

Le traitement du temps

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

Les structures. Chapitre 3

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

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

Chap III : Les tableaux

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

Playing with ptrace() for fun and profit

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

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

Cours de Systèmes d Exploitation

Algorithmique et Programmation, IMA

Outils pour la pratique

GESTION DES FICHIERS C/UNIX

Programmation système I Les entrées/sorties


Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs

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

Conventions d écriture et outils de mise au point

TRAVAUX PRATIQUES Programmation Système Langage C / Système UNIX. 2 e année Génie Informatique

Cours de Programmation Impérative: Zones de mémoires et pointeurs

Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Les processus légers : threads. Système L3, /31

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

Programmation système de commandes en C

Les structures de données. Rajae El Ouazzani

Le langage C. Séance n 4

Architecture d un système d exploitation

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Initiation. àl algorithmique et à la programmation. en C

Cours de C. Petits secrets du C & programmation avancée. Sébastien Paumier

Cours d Algorithmique et de Langage C v 3.0

Imprimantes et partage réseau sous Samba avec authentification Active Directory

OS Réseaux et Programmation Système - C5

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

Cours de Système : Gestion de Fichiers

Programmation impérative

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

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

TP Service HTTP Serveur Apache Linux Debian

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Les fichiers. Chapitre 4

Unix : Programmation Système

M06/5/COMSC/SP1/FRE/TZ0/XX INFORMATIQUE NIVEAU MOYEN ÉPREUVE 1. Mardi 2 mai 2006 (après-midi) 1 heure 30 minutes INSTRUCTIONS DESTINÉES AUX CANDIDATS

Les processus. Système L3, /39

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

ACTIVITÉ DE PROGRAMMATION

Chapitre 2. Classes et objets

Cours Langage C/C++ Programmation modulaire

Créer et modifier un fichier d'import des coordonnées approximatives avec Excel

Programmation Système (en C sous linux) Rémy Malgouyres LIMOS UMR 6158, IUT département info Université Clermont 1, B.P.

Compression de Données - Algorithme de Huffman Document de Conception

Arguments d un programme

Le langage C. Introduction, guide de reference

Algorithmique et programmation : les bases (VBA) Corrigé

Structure d un programme

Algorithmique & Langage C IUT GEII S1. Notes de cours (première partie) cours_algo_lgc1.17.odp. Licence

Les arbres binaires de recherche

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Cours Informatique Master STEP

TD2/TME2 : Ordonnanceur et Threads (POSIX et fair)

REALISATION d'un. ORDONNANCEUR à ECHEANCES

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

LE GUIDE DE DBM TECHNOLOGIES

INSTALLATION ET CONFIGURATION DE OPENLDAP

Langage C. Patrick Corde. 22 juin Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin / 289

Java Licence Professionnelle CISII,

Analyse de sécurité de logiciels système par typage statique

Archivage Messagerie Evolution pour usage HTML en utilisant Hypermail

Initiation à la programmation en Python

Paiement sécurisé sur Internet. Fonctionnalités du Pack Factures

Travaux Dirigés n 1 : chaînes de caractères

arcopole Studio Annexe 4 Intégration LDAP et processus d authentification Site du programme arcopole :

Le système de gestion des fichiers, les entrées/sorties.

Gestion d identités PSL Installation IdP Authentic

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Manuel d'installation

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

Cours d initiation à la programmation en C++ Johann Cuenin

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

INF111. Initiation à la programmation impérative en C amini/cours/l1/inf111/ Massih-Reza Amini

Transcription:

PROGRAMMATION SYSTEME Léon Mugwaneza (email: mugwaneza@univmed.fr) 2: SIGNAUX 1

SIGNAUX Notification logicielle émise par un processus ou par le noyau qui oblige le processus destinataire à prendre immédiatement (aux délais dus à l ordonnancement près) une mesure spécifique (traiter le signal) Un mécanisme de communication/synchronisation entre processus : une primitive d appel système permet à un processus d envoyer un signal à un ou plusieurs processus (appel système kill) Une commande permet à l utilisateur d envoyer un signal à un ou plusieurs processus (commande kill) Les signaux émis par le noyau correspondent à des conditions logicielles ou matérielles particulières : caractères de contrôle tapées au clavier (ex: CTR-C) erreur dans le programme (violation de protection mémoire, erreur d E/S, ) terminaison d un processus fils 2

TRAITEMENT DES SIGNAUX 3 façons différentes: Les ignorer (eg. CRL- C pour les processus lancés en arrière plan) Exécution du traitement par défaut Exécution d un traitement spécifiée par l utilisateur 3

QUELQUES SIGNAUX POSIX Identifiés par le système par un nombre entier (numéro). - Les numéros associés aux signaux peuvent varier en fonctions des systèmes Quelques exemples (la commande shell kill l donne les noms des divers signaux + les numéros sur certains systèmes) SIGHUP 1 déconnection du terminal SIGINT 2 interruption interactive par l utilisateur (CTL-C) SIGQUIT 3 abandon CTL- (core dump) SIGKILL 9 destruction (ne peut être ignoré, traitement par défaut seul) SIGUSR1 10 réservé à l utilisateur (communication inter-processus) SIGUSR2 12 réservé à l utilisateur (communication inter-processus) SIGPIPE 13 essai d écriture dans un pipe non ouvert en lecture SIGALRM 14 Alarme (délai spécifié par le processus écoulé -- alarm()) SIGTERM 15 terminaison normale d un processus SIGCHLD 17 mort d un fils (envoyé au père) etc voir fichier /usr/include/asm/signal.h (dépend du SE) /usr/include/asm-i486/signal.h (SE debian) 4

Appel système pour envoyer un signal : kill L appel système kill() permet d envoyer un signal à un ou +eurs processus #include<signal.h> int kill(int pid, int no_signal) ; no_signal est le numéro du signal (les macros définies dans le fichier enête signal.h permettent d utiliser un nom symbolique) pid no du processus récepteur si pid==0 tous les processus du groupe sont concernés l envoi de signal ne peut se faire qu entre processus de même UID (appartenant au même utilisateur) résultat 0 si le signal a été envoyé -1 sinon (erreur) exemple : res = kill(0, SIGUSR1); 5

Traitement des signaux: signal (1) L appel système signal() permet de spécifier le comportement d un processus à la réception d un signal #include <signal.h> void (*signal (int sig, void (*fcn)(int)))(int) - sig : numéro du signal - (*fcn) : traitement à exécuter à la réception (on exécute fcn(sig), ou le traitement par défaut, ou le signal est ignoré) - retourne l action précédente ou SIG_ERR Effet : installe (attache) fcn comme traitant du signal sig (fcn devient fonction attachée au signal sig, fcn peut être SIG_DFL ou SIG_IGN) 6

Traitement des signaux: signal (2) Prototype plus lisible en utilisant typedef #include <signal.h> typedef void (* sig_t) (int); sig_t signal(int sig, sig_t fcn); Exemples: sig_t res ; res= signal(sigusr1, traitant) ; res= signal(sigint, SIG_IGN); 7

Effet de la réception d un signal (1) Dépend du traitement attaché au signal (SE ou appel système signal() ) SIG_DFL ==> action par défaut propre à chaque signal et prédéterminé par le SE souvent terminaison du processus (abnormal termination) SIG_IGN ==> pas d action, le signal est ignoré certains signaux ne peuvent pas être ignorés Fonction attachée ==> action spécifiée par la fonction 8

Effet de la réception d un signal (2) A la réception du signal, si le signal n est pas ignoré : l exécution cours est interrompu la fonction attachée ou le traitement par défaut est exécuté l exécution du processus reprend son cours le traitement par défaut peut conduire à la terminaison du processus 9

kill et signal : exemple #include <signal.h> #include <assert.h> int main(void) { int pid ; pid=fork(); assert(pid>=0); if(pid == 0) execv(" fils ", NULL); signal(sigusr1,fonc) ; for(;;) { printf(" je boucle\n "); sleep(1); } } void fonc(int sig) { printf(" signal recu %d\n ", sig); exit(0); } // l exécutable s appelera fils #include <signal.h> int main(void) { sleep(5); kill(getppid(),sigusr1); exit(0); } le fils envoie le signal SIGUSR1 au père. Le père arrêtera la boucle et exécutera fonc (et terminera) 10

Appel système d attente d un signal : pause Syntaxe : #include <unistd.h> int pause(void); Effet : met le processus appelant en attente de l arrivée d un signal quelconque après l exécution du traitement attaché au signal reçu retourne -1 et errno = EINTR 11

Appel système d émission d un signal après un délai donné : alarm L appel système alarm() envoi le signal SIGALRM au processus appelant après le laps de temps spécifié (en seconde) Syntaxe : #include<unistd.h> int alarm( int sec) ; Effet : - un appel à alarm() avant l arrivée du signal d un précédent appel à alarm() annule le précédent appel - resultat: - temps écoulé depuis le dernier appel - 0 si aucun appel alarm() en cours 12