Programmation système : sémaphores



Documents pareils
Introduction...3. Objectif...3. Manipulations...3. Gestion des utilisateurs et des groupes...4. Introduction...4. Les fichiers de base...

Cours de Systèmes d Exploitation

Guide pratique de CSPM, l'outil de suivi des performances du système Version française du Complete System Performance Monitor HOWTO

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

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License,

Introduction...3. Objectif...3. Manipulations...3. La Sauvegarde...4. Les différents types...4. Planification...4. Les outils...5

Les systèmes pare-feu (firewall)

NIVEAU D'INTERVENTION DE LA PROGRAMMATION CONCURRENTE

Avant-propos. VERSION Compilation du document à l aide de PDFLATEX Philippe Charlier. 1 Version actuelle : SPIP http ://

Guide de démarrage rapide Centre de copies et d'impression Bureau en Gros en ligne

Cours Programmation Système

Guide d'utilisation du Serveur USB

4. Outils pour la synchronisation F. Boyer, Laboratoire Lig

Phone Manager Soutien de l'application OCTOBER 2014 DOCUMENT RELEASE 4.1 SOUTIEN DE L'APPLICATION

REALISATION d'un. ORDONNANCEUR à ECHEANCES

gestion des processus La gestion des processus

Petit guide d'installation de l'option de connexion réseau

Phone Manager Soutien de l'application OCTOBER 2014 DOCUMENT RELEASE 4.1 SOUTIEN DE L'APPLICATION

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

Introduction à la programmation concurrente

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

Didacticiel de mise à jour Web

Comment Utiliser les Versions, les Modification, les Comparaisons, Dans les Documents

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

Cours 2: Exclusion Mutuelle entre processus (lourds, ou légers -- threads)

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

Manuel d'exploitation de l'application Vitamin version 1.0

1. Contexte général page Le compte auprès de la BCGE...page La procuration 2.2 Les accès e-banking 2.3 Le bon de retrait 2.

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

Problèmes liés à la concurrence

Qu'est-ce que c'est Windows NT?

GE Security. KILSEN série KSA700 Centrale de détection et d alarme Incendie analogique adressable. Manuel d utilisation

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

Testez votre installation. Créer un répertoire vide

SUGARCRM Sugar Open Source Guide d Installation de French SugarCRM Open Source Version 4.2

On appelle variable condition une var qui peut être testée et

Note technique - Régime du tiers payant AbiFire v5.5/v6.2

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping

Synchro et Threads Java TM

NTP (Network Time Protocol)

Comment faire des étiquettes

Restriction sur matériels d impression

VRM Monitor. Aide en ligne

TP a Notions de base sur le découpage en sous-réseaux

Fournisseurs - Programme de paiement. Projet SAFIR SITEL, Université de Neuchâtel Décembre 2001

DirXML License Auditing Tool version Guide de l'utilisateur

Guide Google Cloud Print

Licences Windows Server 2012 R2 dans le cadre de la virtualisation

Gérer ses impressions en ligne

Aide de Bluetooth pour Microsoft Windows

Gestion des processus

Guide de l'utilisateur de l'application mobile

Introduction aux environnements de virtualisation d'oracle Solaris 11.1

Sauvegarde et restauration d'un système d'exploitation Clonezilla

Utilisation des listes de diffusion Sympa (propriétaire)

Comment Définir une Plage de données Pour Utiliser Fonctions de Filtres et de Tris

Livre blanc Mesure des performances sous Windows Embedded Standard 7

Gestion des cartes ristourne

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

Mozaïk. Nouveautés et améliorations. de la version

Listes de validation dans OpenOffice Calc

Timy. Programme Doublage ("Backup") Français

CONNECTEUR PRESTASHOP VTIGER CRM

Ordonnancement temps réel

Installation d un serveur DHCP sous Gnu/Linux

Réaliser un PUBLIPOSTAGE

JEU BOURSIER Séance d introduction à la plateforme de trading SaxoWebTrader. - Pour débutants -

Fiche d utilisation du logiciel. 1 - Installation. J. Thioulouse & D. Chessel

Installation d'un TSE (Terminal Serveur Edition)

LibreOffice Calc : introduction aux tableaux croisés dynamiques

Guide d'installation. Release Management pour Visual Studio 2013

Guide de l'utilisateur

INTRODUCTION À LA PROGRAMMATION CONCURRENTE

Guide d'installation de l'amplificateur de signal pour périphériques mobiles Wi-Fi WN1000RP

PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES

Sophos Mobile Encryption pour Android Aide. Version du produit : 1.0

Exercices INF5171 : série #3 (Automne 2012)

4. Outils pour la synchronisation F. Boyer, Laboratoire Sardes

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

BANQUES DE DONNÉES PÉDAGOGIQUES

Virtua Robot de Gravage

Comment faire un Mailing A partir d une feuille Calc

Présentation d'un Réseau Eole +

Carte de référence rapide

Guide de configuration de SQL Server pour BusinessObjects Planning

Comment sauvegarder ses documents

Projet Viticulture - TP 3 : bases de données distantes BTS Services informatiques aux organisations

Guide d installation de l Amplificateur Universel Wifi N avec 4 ports réseau

Guide d utilisation. Gamme Telium. Application AMEX EMV x

Les GPO 2012 server R2 (appliqués à Terminal Serveur Edition)

SYSTÈME DE GESTION DE FICHIERS

Définition du compte courant

Service Informatique et Télématique (SITEL), Emile-Argand 11, 2009 Neuchâtel, Tél ,

Nuxeo Enterprise Platform: Guide utilisateur

DOCUMENTATION - FRANCAIS... 2

StorageTek Tape Analytics

Septembre 2012 Document rédigé avec epsilonwriter

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java

Transcription:

Programmation système : sémaphores Un sémaphore permet de protéger une variable (ou un type de donnée abstrait) et constitue la méthode utilisée couramment pour restreindre l'accès à des ressources partagées dans un environnement de programmation concurrente. Le sémaphore a été inventé par Edsger Dijkstra. Copyright 2011 tv <tvaira@free.fr> Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover. You can obtain a copy of the GNU General Public License : write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA <tv>lt La Salle Avignon BTS IRIS</tv> Cours Les sémaphores v1.0 1/13

Exemple introductif On considère le fonctionnement d'un spool d'impression. Problème : l'ordre d'exécution des instructions n'est pas garanti, donc par exemple l'impression du fichier n 1 (F1) déposé par P1 ne se fera pas et l'état de la file est incohérent (double incrémentation de in)!!! Solution : aucune commutation de processus ne doit s'effectuer entre la dépose du nom du fichier et l'incrémentation du pointeur in. Une solution consiste à interdire à un processus d'exécuter la procédure impression si un autre processus non actif n'a pas fini l'exécution de celle-ci. La file d'impression est gérée à l'aide de 2 variables partagées in et out : in pointe sur le premier emplacement libre out pointe sur le prochain fichier à imprimer <tv>lt La Salle Avignon BTS IRIS</tv> Cours Les sémaphores v1.0 2/13

Rappels : définitions Section Critique : C'est une partie de code telle que 2 processus ne peuvent s'y trouver au même instant. Exclusion mutuelle : Une ressource est en exclusion mutuelle si seul un processus peut utiliser la ressource à un instant donné. Conditions de fonctionnement : Plusieurs conditions sont nécessaires pour le bon fonctionnement de processus coopérants : deux processus ne peuvent être, en même temps, en section critique, aucune hypothèse n'est faite, ni sur la vitesse relative des processus, ni sur le nombre de processeurs, aucun processus suspendu en dehors d'une section critique ne doit bloquer les autres processus, aucun processus ne doit attendre "trop longtemps" avant de pouvoir entrer en section critique. <tv>lt La Salle Avignon BTS IRIS</tv> Cours Les sémaphores v1.0 3/13

Le masquage des interruptions L'idée consiste à empêcher la commutation de processus pendant l'exécution de la section critique. Ce résultat est atteint en masquant les interruptions qui provoquent le changement d'allocation du processeur. Le traitement des interruptions est alors différé : Masquer_Interruption; SectionCritique; Restaurer_Interruption; Le masquage des interruptions est une technique utile dans le noyau, mais inappropriée pour les processus utilisateurs. <tv>lt La Salle Avignon BTS IRIS</tv> Cours Les sémaphores v1.0 4/13

Les sémaphores Un sémaphore S est une variable entière qui n'est accessible qu'au travers de 3 opérations Init, P et V. La valeur d'un sémaphore est le nombre d'unités de ressource (exemple : imprimantes...) libres. S'il n'y a qu'une ressource, un sémaphore binaire avec les valeurs 0 ou 1 est utilisé. Les opérations doivent être indivisibles (atomiques), ce qui signifie qu'elles ne peuvent pas être exécutées plusieurs fois de manière concurrente. Un processus qui désire exécuter une opération qui est déjà en cours d'exécution par un autre processus doit attendre que le premier termine. <tv>lt La Salle Avignon BTS IRIS</tv> Cours Les sémaphores v1.0 5/13

Les opérations Init(S, valeur) est seulement utilisé pour initialiser le sémaphore S avec une valeur. Cette opération ne doit être réalisée qu'une seule et unique fois. L'opération P(S) (du néerlandais Proberen signifiant tester et en français "Puis-je?" ou éventuellement Prise ou Prendre) est en attente jusqu'à ce qu'une ressource soit disponible, ressource qui sera immédiatement allouée au processus courant. SI (S > 0) ALORS S ; SINON (attendre sur S) FSI V(S) (du néerlandais Verhogen signifient tester incrémenter et en français "Vasy!" ou éventuellement Vente ou Vendre) est l'opération inverse. Elle rend simplement une ressource disponible à nouveau après que le processus a terminé de l'utiliser. S++; SI (des processus sont en attente sur S) ALORS laisser l'un deux continuer (reveil) FSI <tv>lt La Salle Avignon BTS IRIS</tv> Cours Les sémaphores v1.0 6/13

Sémaphore binaire Un sémaphore binaire est un sémaphore qui est initialisé avec la valeur 1. Ceci a pour effet de contrôler l'accès une ressource unique. Le sémaphore binaire permet l'exclusion mutuelle (mutex) : une ressource est en exclusion mutuelle si seul un processus peut utiliser la ressource à un instant donné. <tv>lt La Salle Avignon BTS IRIS</tv> Cours Les sémaphores v1.0 7/13

Accès à une section critique L'accès à la section critique en utilisant un sémaphore binaire sera alors : P(S); SectionCritique; V(S); tp-sys-semaphores.pdf 30 mn <tv>lt La Salle Avignon BTS IRIS</tv> Cours Les sémaphores v1.0 8/13

Interblocage Exemple d'interblocage avec deux mutex (nommés M1 et M2) : Un interblocage est possible si : La TâcheA obtient M1. La TâcheB obtient M2. La TâcheA attend pour obtenir M2 (qui est entre les mains de TâcheB). La TâcheB attend pour obtenir M1 (qui est entre les mains de TâcheA). Dans cette situation, les deux tâches sont définitivement bloquées. Prévention : Une méthode consiste à toujours acquérir les mutex dans le même ordre. <tv>lt La Salle Avignon BTS IRIS</tv> Cours Les sémaphores v1.0 9/13

Sémaphore bloquant Un sémaphore bloquant est un sémaphore qui est initialisé avec la valeur 0. Ceci a pour effet de bloquer n'importe quel thread qui effectue P(S) tant qu'un autre thread n'aura pas fait un V(S). Ce type d'utilisation est très utile lorsque l'on a besoin de contrôler l'ordre d'exécution entre threads. Cette utilisation des sémaphores permet de réaliser des barrières de synchronisation. tp-sys-semaphores.pdf 45 mn <tv>lt La Salle Avignon BTS IRIS</tv> Cours Les sémaphores v1.0 10/13

Producteur/Consommateur Lorsque des processus légers souhaitent communiquer entre eux, ils peuvent le faire par l'intermédiaire d'une file. Il faut définir le comportement à avoir lorsqu'un thread souhaite lire depuis la file lorsque celle-ci est vide et lorsqu'un thread souhaite écrire dans la file mais que celle-ci est pleine. tp-sys-semaphores.pdf 90 mn <tv>lt La Salle Avignon BTS IRIS</tv> Cours Les sémaphores v1.0 11/13

Lecteurs/Rédacteurs Un problème classique pouvant être résolu à l'aide des sémaphores est le problème des lecteurs/rédacteurs. Ce problème traite de l'accès concurrent en lecture et en écriture à une ressource. Plusieurs processus légers (thread) peuvent lire en même temps la ressource, mais il ne peut y avoir qu'un et un seul thread en écriture. tp-sys-semaphores.pdf 90 mn <tv>lt La Salle Avignon BTS IRIS</tv> Cours Les sémaphores v1.0 12/13

Conclusion Il est conseillé avant de continuer de revoir : Les principes et la terminologie associée aux sémaphores Les exemples fournis pour les environnements Qt, Builder et Win32 Il reste à voir entre autres : ordonnancement des processus, autres types de communications entre processus tp-sys-semaphores.pdf <tv>lt La Salle Avignon BTS IRIS</tv> Cours Les sémaphores v1.0 13/13