CI6 - Communication entre processus : tubes et signaux



Documents pareils
Introduction aux Systèmes et aux Réseaux

Programmation système en C/C++

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)

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

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

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

Unix/Linux I. 1 ere année DUT. Université marne la vallée

TP1 - Prise en main de l environnement Unix.

«Astrophysique et instrumentations associées» Cours UNIX Benoît Semelin

Premiers pas. Shell? Les processus vu comme des filtres. commandes

Cours 6 : Tubes anonymes et nommés

Cours de Systèmes d Exploitation

Outils pour la pratique

Couche application. La couche application est la plus élevée du modèle de référence.

NON URGENTE TEMPORAIRE DEFINITIVE OBJET : RÉCUPÉRATION DES DONNÉES CLIENT SUR DISQUE DUR DÉFECTUEUX OU INVALIDÉ

La Comptabilité UNIX System V Acctcom

SERVEUR DE SAUVEGARDE POUR BCDI3. par. G.Haberer, A.Peuch, P.Saadé

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

Environnements informatiques

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

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

PRESENTATION RESSOURCES. Christian Dupaty BTS Systèmes Numériques Lycée Fourcade Gardanne Académie d Aix Marseille

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

TP 1 Prise en main de l environnement Unix

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

Cloner un disque dur

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Introduction à Linux (pour le HPC) «Linux 101» Présentation :

Programmation système I Les entrées/sorties


2011 Hakim Benameurlaine 1

CONFIGURATION DU SERVEUR DE MAILS EXIM. par. G.Haberer, A.Peuch, P.Saade

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

Cours de S.E. les Signaux

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

Playing with ptrace() for fun and profit

Le prototype de la fonction main()

Aide-Mémoire unix. 9 février 2009

Université Pierre Mendès France U.F.R. Sciences de l Homme et de la Société Master IC²A. TP réseau firewall

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)

TP LINUX : MISE EN RÉSEAU D UN SERVEUR LINUX

Première partie. Qu est-ce qu un script?

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

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

Mon premier rpm. 7 juin Avant de commencer RPM URPMI RPMBUILD... 2

Cours Programmation Système

Manuel de System Monitor

Premiers pas en Linux

Les clients GNU/Linux

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

Sendmail milter/greylisting

Travaux Pratiques sur GRID 5000

Année Cours Unix-Shell. par. Karam ALLALI. Ecole Spéciale d Informatique

Algorithmique et Programmation, IMA

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

Structure d un programme

Systèmes d exploitation

TP 4 de familiarisation avec Unix

Shell Bash Niveau débutant

Année Universitaire ième année IMAC Mardi 6 janvier Cloud computing Travaux Pratiques

Communication Interprocessus

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

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

Passerelle VPN : OpenVPN Debian GNU/Linux

Programmation système de commandes en C

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

Exercice sur les Dockers

Pharmed. gestion de pharmacie hospitalière. Installation / déploiement

sshgate Patrick Guiran Chef de projet support

C.M. 1 & 2 : Prise en main de Linux

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

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

Polycopié Cours Système d Exploitation I. Programme : Filière SMI S3

04/02/2014 Tutoriel. Lubuntu & glpi. thomas [NOM DE LA SOCIETE]

Démarrer et quitter... 13

Serveur de sauvegardes incrémental

D r o i t s D r o i t s Q u i z z : i n t e r n e t t e x t e

Introduction au Système d Exploitation Unix/Linux

TP : Introduction à TCP/IP sous UNIX

Oracle 11g. Installation et administration. Claude Duvallet 1/36

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

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

CONDITIONS GENERALES D UTILISATION DU SERVICE DE BANQUE EN LIGNE

MySQL - Réplication. Fichiers de relais et de statut de la réplication. Mise en place de la réplication

1 Lecture de fichiers

Contents. 1 Premiers pas en Linux. 1.2 Généralités. 1.1 Bref historique Linux

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

TP1. Outils Java Eléments de correction

Session 8: Android File System

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

DOCKER MEETUP. Christophe Labouisse

La photo numérique et les logiciels libres. Asie Photos

Problèmes liés à la concurrence

Atelier individuel. Linux 101. Frédérick Lefebvre & Maxime Boissonneault frederick.lefebvre@calculquebec.ca U. Laval - Janv. 2014

Sauvegarde sous MAC avec serveur Samba

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Client windows Nagios Event Log

Chapitre 4 : Outils de communication centralisés entre processus

Cours Unix 1. Présentation d UNIX. Plan du cours 1

Gestion d identités PSL Installation IdP Authentic

Transcription:

CI6 - Communication entre processus : tubes et signaux CSC 3102 Introduction aux systèmes d exploitation Gaël Thomas CSC 3102 13/10/2015

Présentation du cours Contexte : comprendre comment les processus interagissent entre eux Objectifs : Savoir utiliser les tubes et les signaux Comprendre les notions de section critique et d exclusion mutuelle Notions clés : Signaux, tubes, fichier partagé, exclusion mutuelle, section critique 2

Pourquoi les processus communiquent? Principalement pour rendre de nouveaux services Une base de données + un serveur Web Un processus d affichage de notifications pour les autres processus Pour pouvoir répartir physiquement les processus Un processus d affichage et un moteur de jeux (moteur distant en mode jeu multi-joueur, moteur local en mode déconnecté) Pour gérer la vie des processus Pour attendre la fin d un processus, pour arrêter un processus 3

Mécanismes étudiés dans le cours Les tubes Communication par envoi de message via un canal Message = donnée quelconque Pas de perte de message, réception dans l ordre d émission Les signaux Communication par envoi de message direct Message = entier entre 1 et 31 Perte de message, pas d ordre chez le récepteur Les fichiers partagés Deux processus accèdent à un fichier partagé 4

Tubes nommés Canal de communication = fichier spécial appelé un tube Tube nommé envoi réception Émetteur messages Récepteur Principe : Un tube est un fichier dans le système de fichiers L émetteur écrit dans le tube Le récepteur lit dans le tube 5

Tubes nommés Canal de communication = fichier spécial appelé un tube Tube nommé envoi réception Émetteur messages Récepteur Nota bene : Les messages arrivent dans l ordre d émission Emetteur bloque tant qu il n existe pas de récepteur Récepteur bloque tant qu il n existe pas d émetteur 6

Tubes nommés Tube nommé de nom "chemin" echo read Émetteur messages Récepteur Mise en œuvre : mkfifo chemin : crée un tube nommé (visible avec ls) echo message > chemin : écrit dans le tube nommé read message < chemin : lit à partir du tube nommé rm chemin : détruit le tube nommé 7

Tubes nommés exemple pipe_emetteur.sh #!/bin/bash mkfifo /tmp/canal echo "Bonjour" > /tmp/canal 1. "Bonjour" read a < /tmp/canal echo "Reçoit $a" 4. "Au revoir" pipe_recepteur.sh #!/bin/bash 2. "Bonjour" read a < /tmp/canal echo "Reçoit $a" echo "Au revoir" > /tmp/canal /tmp/canal 3. "Au revoir" 8

Tubes anonymes Tube anonyme : comme tube nommé, mais sans nom Le entre deux processus shell crée un tube anonyme cmd_gauche cmd_droite Sortie standard de cmd_gauche connectée au tube Entrée standard de cmd_droite connectée au tube Équivalent à : mkfifo tube-avec-nom cmd_gauche > tube-avec-nom & cmd_droite < tube-avec-nom 9

10 Tubes anonymes exemple cat /etc/passwd grep root Écriture sur sortie standard Tube anonyme Lecture à partir de l entrée standard Lecture Fichier /etc/passwd cat grep Écriture sur sortie standard Disque dur Terminal

Commande utile : tee Écrit les données lues à partir de l entrée standard Sur la sortie standard Et dans un fichier passé en argument Exemple : cat /etc/passwd grep root tee /tmp/result cat grep tee Lit à partir de /etc/passwd Disque dur Écrit dans /tmp/result 11

Signaux Envoi kill no-signal PID Émetteur Récepteur Principe : Émetteur envoie un message à un proc. identifié par son PID Une routine de réception est automatiquement invoquée chez le récepteur dès que le signal arrive Par défaut, cette routine tue le récepteur (sauf dans le cas du SIGCHLD) 12

Signaux Envoi kill no-signal PID Émetteur Récepteur Nota bene : Un message est limité à un nombre compris entre 1 et 31 Les messages peuvent se perdre (Cas de l émission de deux signaux identiques avant réception) Les messages arrivent dans n importe quel ordre 13

Les signaux Quelques exemples (man 7 signal) : SIGHUP (1) : fermeture terminal à tous les processus attachés SIGINT (2) : Ctl-C dans un terminal au processus premier plan SIGQUIT (3) : souvent Ctl-D, généré par un processus à lui-même SIGILL (4) : instruction illégale (envoyé par le noyau) SIGFPE (8) : division par 0 (envoyé par le noyau) SIGKILL (9) : via la commande kill, pour terminer un processus SIGSEGV (11) : accès mémoire invalide (envoyé par le noyau) SIGTERM (15) : argument par défaut de la commande kill SIGCHLD (17) : envoyé par le noyau lors de la mort d un fils 14

Les signaux Deux signaux bien utiles SIGSTP : demande au système de suspendre un processus SIGCONT : demande au système de le redémarrer Bash utilise ces signaux : Ctrl-Z : envoie un SIGSTP au processus au premier plan bg : envoie un SIGCONT au processus stoppé 15

Les signaux Un processus peut attacher un gestionnaire de signal à un numéro de signal trap commande signal Exemple : quitte après la réception de 3 SIGINT #! /bin/bash i=0 trap 'echo hello $i; i=$(expr $i + 1)' SIGINT while [ $i -lt 3 ]; do sleep 1; done Envoi du signal avec kill INT PID, où PID est l identifiant du destinataire 16

17 Les signaux Attention, par défaut, un processus lancé en tâche de fond n attrape pas les signaux avec la commande trap Pour quand même attraper les signaux, il faut utiliser set m

Attente de la fin d un processus Commandes d attente active de terminaison des fils directs : wait : attendre la fin de tous les fils directs wait pid1 pid2 : attendre la fin de pid1 et pid2 et Le noyau du système d exploitation envoie aussi un signal SIGCHLD au père quand un de ses fils se termine Par défaut, bash masque les signaux SIGCHLD Possibilité de les recevoir avec set o monitor 18

Attente de la fin d un processus #!/bin/bash emacs & # lance emacs en tâche de fond p=$! # $!: pid du dernier processus lancé echo "$p démarre" wait $p # attend fin de $p echo "Fin de $p, avec code de retour $? # le $? est l argument du exit de emacs # (ou du return de son main) 19

Notions clés Tubes (nommés et anonymes) Fichier spécial dans le système de fichier Envoi de messages de taille quelconque, ordre de réception = ordre d émission, pas de perte de message mkfifo nom-tube : crée un tube nommé mon-tube Signaux Mécanisme de communication à base de messages Message = nombre entre 1 et 31, ordre quelconque, perte kill sig pid : envoie un signal trap expr sig : associe expr à la réception d un signal sig Attente de la fin d un processus wait 20

21 À vous de jouer!