Caractérisation des mécanismes de synchronisation déblocages mémorisés ou non ; mécanismes directs ou indirects.

Documents pareils
Cours de Systèmes d Exploitation

Problèmes liés à la concurrence

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

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

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

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

Introduction à la programmation concurrente

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

Synchro et Threads Java TM

FOCUS Evolution. Lisez-Moi. Version FE 7.0.t

PROJET ALGORITHMIQUE ET PROGRAMMATION II

Le langage C. Séance n 4

Chapitre 4 : Exclusion mutuelle

Rappels Entrées -Sorties

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

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

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

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

LOG4430 : Architecture et conception avancée

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

Découvrir l'ordinateur (niveau 2)

Chap III : Les tableaux

PROJET 1 : BASE DE DONNÉES REPARTIES

Structurer ses données : les tableaux. Introduction à la programmation

Programmation impérative

TP : Gestion d une image au format PGM

SCL LOGICIEL DE CONTROL

Structure d un programme

Mise à jour d avast! et de vos logiciels Ciel

UE Programmation Impérative Licence 2ème Année

V- Manipulations de nombres en binaire

Cours de Génie Logiciel

Guide utilisateur pour le déblocage de cartes et/ou la modification d un code PIN

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

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)

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

Premiers Pas en Programmation Objet : les Classes et les Objets

Les diagrammes de modélisation

NIVEAU D'INTERVENTION DE LA PROGRAMMATION CONCURRENTE

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

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

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

Cours A7 : Temps Réel

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

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

Architecture des ordinateurs

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

Projet Active Object

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Les structures. Chapitre 3

Représentation d un entier en base b

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

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

Introduction aux systèmes temps réel. Iulian Ober IRIT

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

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

Utilisation de l éditeur.

TD3: tableaux avancées, première classe et chaînes

1- ACCES AU SERVICE UIBNET

BPEL Orchestration de Web Services

Guide d utilisation de la clé USB pour login ebanking

Manuel d installation du pilote pour e-barreau Pour Windows XP Vista 7 avec Internet Explorer 32/64bits

Cours Informatique 1. Monsieur SADOUNI Salheddine

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

Les 18 icônes du poste de pilotage (Salle Tecnilab)

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

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

HA2000 GSM Transmetteur téléphonique

UTILISATION DE LA BORNE PAR LE CLIENT

Les 1 er pas sur. Guide d utilisation

Bases de données avancées Concurrence d'accès et reprise

CEGID - Business Suite Gestion commerciale

Génie Logiciel avec Ada. 4 février 2013

Introduction : les processus. Introduction : les threads. Plan

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

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

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

8 rue Paul Cézanne Neuilly-Plaisance - Tél : 33 (0) Fax : 33 (0) cvm@cvm.

Consigne : je remplis le tableau en tenant compte des informations de la ligne supérieure et de la colonne de gauche (droite pour les gauchers)

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

LECTEUR D'EMPREINTE DIGITALE SERRURE ÉLECTRONIQUE MOTORISÉE

GOL502 Industries de services

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

Programmation Visual Basic. Visite guidée d'un programme Visual Basic 6.0

REALISATION d'un. ORDONNANCEUR à ECHEANCES

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

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

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

Thèmes et situations : Personnel et législation sociale dans l entreprise. Fiche pédagogique

Conventions d écriture et outils de mise au point

LA FEUILLE DE MATCH ELECTRONIQUE(F.D.M.E)

Système d alarme Guide Utilisateur

MegaStore Manager ... Simulation de gestion d un hypermarché. Manuel du Participant

Module 4 Tablettes et lieux de culture, musées, bibliothèques, universités

ATTENTION AU DÉPART! GUIDE DE QUESTIONS DU MENEUR DE JEU.

INITIATION AU LANGAGE JAVA

SECURIT GSM Version 2

Manuel d installation du pilote pour e-barreau Pour Windows XP Vista 7 avec FIREFOX 32/64bits

Transcription:

Synchronisation

Principe général : rendez-vous Une tâche doit pouvoir : activer une autre tâche ; se bloquer (attendre) ou éventuellement bloquer une autre tâche ; débloquer une ou même plusieurs tâches. Caractérisation des mécanismes de synchronisation déblocages mémorisés ou non ; mécanismes directs ou indirects.

Mécanismes de synchronisation Mécanismes directs bloque(tâche) endort la tâche désignée dort() endort la tâche qui l exécute réveille(tâche) réveille la tâche désignée é Mécanismes indirects Synchronisation par objets communs, à travers des primitives protégeant les accès concurrents Synchronisation par sémaphores privés 1 seule tâche peut exécuter P sur ce sémaphore ; il est initialisé à 0 pour être toujours bloquant.

Synchronisation par événements Un événement a deux états : arrivé ou non_arrivé Manipulation par deux primitives iti : signaler (e) : indique que l'événement est arrivé attendre (e) : bloque la tâche jusqu'à ce que l'événement é arrive Ces deux primitives sont exécutées en EXCLUSION MUTUELLE

Synchronisation par événements Evénements mémorisés : association d'un booléen et d'une file d'attente type Evénement = structure arrivé : booléen; file : file d'attente; fin structure; procédure r_a_z(modifié e:evénement) e.arrivé faux; fin r_a_z; procédure signaler(modifié e:evénement) e.arrivé vrai; Réveiller toutes les tâches en attente dans e.file fin signaler; procédure attendre(modifié e:evénement) si non e.arrivé alors Mettre la tâche dans e.file dort(); finsi fin attendre;

Synchronisation par événements Evénements non mémorisés : simple file d'attente type Evénement = file d'attente; procédure signaler(modifié e:evénement) Débloquer toutes les tâches en attente dans e fin signaler; procédure attendre(modifié e:evénement) Mettre la tâche dans e.file dort(); fin attendre; Note : attendre est toujours bloquante

Rendez-vous par événementsénements Comment écrire RDV? Initialisation : i : un entier; e : un Evénement; {Mémorisé} i 0; r_a_z (e); procédure RDV(); i i + 1; si i < n alors attendre(e) sinon {i = n} signaler(e); finsi fin RDV; Pb : accès concurrent à i!

Rendez-vous par événementsénements Comment écrire RDV? i : un entier; e : un Evénement; {Mémorisé} mutex : sémaphore Initialisation : i 0; r_a_z (e); init_semaphore(mutex,1) procédure RDV(); aquire(mutex) i i + 1; si i<nalors release(mutex) attendre(e) sinon {i = n} release(mutex) signaler(e); finsi fin RDV;

Les moniteurs Module avec des propriétés particulières on n a accès qu aux primitives externes (publiques), pas aux variables (privées) ; les procédures sont exécutées en exclusion mutuelle et donc les variables internes sont manipulées en exclusion mutuelle. on peut bloquer et réveiller des tâches. Le blocage et le réveil s expriment au moyen de conditions.

Les moniteurs Conditions = variables, manipulables avec : procédure attendre (modifié c : condition); Bloque la tâche qui l exécute et l ajoute dans la file d attente associée à c Fin attendre; fonction vide (c : condition) un booléen; si la file d attente associée à c est vide alors renvoyer(vrai) sinon finsi Fin vide; renvoyer(faux) procédure signaler (modifié c : condition); si non vide(c) alors finsi Fin signaler; extraire la première tâche de la file associée à c la réveiller

Rendez-vous avec un moniteur Moniteur RDV; Point d entrée Arriver Lexique n : un entier constant =?? i : un entier; tous_là : une condition; Début {Initialisations} i 0; procédure Arriver(); i i+1; si i < n alors attendre(tous_là); finsii signaler(tous_là); {Réveil en cascade} fin Arriver; Fin RDV;

Communication entre tâches Partage de mémoire commune + exclusion mutuelle Modèle général : producteur / consommateur Producteur Données Consommateur La communication est en général asynchrone : une des deux tâches travaille en général plus vite que l autre autre. Pour limiter les effets de l asynchronisme, on insère un tampon entre le producteur et le consommateur :

Producteur/Consommateur avec tampon

Producteur/Consommateur avec tampon Moniteur Tampon; {Suppose Taille et Message connus} Points d entrée déposer, retirer; Lexique nb : entier; {Nbre d élt. dans le tampon (0..Taille)} non_plein, non_vide : conditions; {Pour le blocage et le réveil} tamp : tableau[0..taille-1] de Messages; tête, queue : entier; {O..Taille-1} procédure retirer (consulté m:message) procédure déposer (consulté m:message) si nb = 0 alors attendre(non_vide) si nb = Taille alors finsi attendre(non_plein) { Enlever m du tampon } finsi m tamp[tête]; {Ajouter m au tampon} tête (tête+1) mod Taille; nb nb + 1; tamp[queue] m; queue (queue+1) mod Taille; signaler(non_vide); fin déposer; nb nb - 1; signaler(non_plein); fin retirer; Début nb 0; tête 0; queue 0; Fin Tampon;

Démo en java a

Le problème des philosophes qui mangent et pensent 5 philosophes qui mangent et pensent Pour manger il faut 2 fourchettes, droite et gauche On en a seulement 5! Un problème classique de synchronisation Illustre la difficulté d allouer ressources aux tâches tout en évitant interblocage et famine

Le dîner des philosophes h

Communication par tubes

Exemple : les tubes Unix (pipes) Un tube Unix est l association de deux flots de communication, l un utilisé en écriture, l autre utilisé en lecture. Création int tube[2]; pipe(tube); Lecture, bloquante si le tube est vide int x, nombre; char chaine[max]; x = read(tube[0], chaine, nombre); E it t bl t Ecriture, rarement bloquant int x, nombre; char chaine[max]; x = write(tube[1], chaine, nombre);

Exemple en langage C