TP/TD 5 : Section critique et Interblocage. Compare and Swap - Lock-free



Documents pareils
Chapitre 4 : Exclusion mutuelle

Problèmes liés à la concurrence

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

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)

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

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

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

Cours de Systèmes d Exploitation

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

Cours A7 : Temps Réel

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

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

INTRODUCTION À LA PROGRAMMATION CONCURRENTE

Un ordonnanceur stupide

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

Chapitre 7. Récurrences

Définition des Webservices Ordre de paiement par . Version 1.0

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

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

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Représentation des Nombres

Algorithmique I. Algorithmique I p.1/??

L exclusion mutuelle distribuée

Partie 7 : Gestion de la mémoire

Chapitre 5 : Flot maximal dans un graphe

Plan 1/9/2013. Génération et exploitation de données. CEP et applications. Flux de données et notifications. Traitement des flux Implémentation

Conception de circuits numériques et architecture des ordinateurs

Resolution limit in community detection

Plateforme PAYZEN. Définition de Web-services

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

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

Sommaire. Structure. Liste simplement chaînée ALGORITHME ET STRUCTURES DE DONNÉES II

CEG4566/CSI4541 Conception de systèmes temps réel

6. Hachage. Accès aux données d'une table avec un temps constant Utilisation d'une fonction pour le calcul d'adresses

Tp 1 correction. Structures de données (IF2)

TD n o 8 - Domain Name System (DNS)

Algorithmique et Programmation, IMA

Les arbres binaires de recherche

Introduction à la programmation concurrente

Ordonnancement temps réel

Arbres binaires de recherche

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

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

La NP-complétude. Johanne Cohen. PRISM/CNRS, Versailles, France.

UE C avancé cours 1: introduction et révisions

Programmation C++ (débutant)/instructions for, while et do...while

Ensimag 1ère année Algorithmique 1 Examen 2ième session 24 juin Algorithmique 1

DHCP et NAT. Cyril Rabat Master 2 ASR - Info Architecture des réseaux d entreprise

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Programmation système I Les entrées/sorties

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

CONFIGURATION DE L AUTOMATE SIEMENS

Options, Futures, Parité call put

Université Bordeaux 1, Licence Semestre 3 - Algorithmes et struct...

Programmation linéaire

Conventions d écriture et outils de mise au point

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

Introduction aux Machines Virtuelles avec VMKit

Programmation Orientée Objet Java

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

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

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

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

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

Métriques de performance pour les algorithmes et programmes parallèles

Initiation au HPC - Généralités

Optimisation non linéaire Irène Charon, Olivier Hudry École nationale supérieure des télécommunications

Introduction aux SGBDR

Le langage C. Séance n 4

Sécurité des réseaux Les attaques

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

Optimisation for Cloud Computing and Big Data

Recherche dans un tableau

Publier un Carnet Blanc

Données Réparties. Thibault BERNARD.

ARBRES BINAIRES DE RECHERCHE

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

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

Cours Bases de données 2ème année IUT

Initiation à LabView : Les exemples d applications :

MIS 102 Initiation à l Informatique

Limites finies en un point

Reporting et Décisions 100

Relation d ordre. Manipulation des relations d ordre. Lycée Pierre de Fermat 2012/2013 Feuille d exercices

Compte-rendu re union Campus AAR 3 mars 2015

Exercices Corrigés Premières notions sur les espaces vectoriels

Windows 7, Configuration

Genie Logiciel Avancé Projet :Gestion d une chaîne hotelier low cost

Optimisation des fonctions de plusieurs variables

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

Canevas théoriques du projet sur le poker Partie A

STAGE IREM 0- Premiers pas en Python

INTRODUCTION AUX TESTS CODES DE L INTERFACE UTILISATEUR

Structure fonctionnelle d un SGBD

Publier dans la Base Documentaire


Résolution de systèmes linéaires par des méthodes directes

CARPE. Documentation Informatique S E T R A. Version Août CARPE (Documentation Informatique) 1

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Transcription:

ASR2 - L3 Informatique - ENS Lyon Année 2014-2015 TP/TD 5 : Section critique et Interblocage R. Carpa, A. Cavelan et A.Lefray Compare and Swap - Lock-free Soit une implémentation de pile avec une liste chainée définie comme suit : E = {V val, E* next} et un pointeur de tête E* list_head. 1. Proposer une implémentation d une pile avec mutex (opérations lock/unlock). Pour cela, définir les fonctions Push et Pop. 2. Discuter des inconvénients de l utilisation d un mutex Soit le code suivant Push(E* elem) { do { E* old_first = list_head; elem->next = old_first; } } while (!CAS(&list_head, old_first, elem)) E* Pop() { } do { E* old_first = list_head; if(old_first == NULL) return NULL; E* second = old_first->next; } while (!CAS(&list_head, old_first, second)) return old_first; 3. Rappeler ce que fait la fonction CAS (Compare-And-Swap) bool CAS(T* memaddr, T compare, T update) compare la valeur à l adresse memaddr avec compare : si égale la remplace par update et retourne vrai, sinon retourne faux. 4. Que fait ce code? Comment se comporte-t-il en présence de Push/Pop concurrents? Implémentation lockf ree d une pile. Il permet donc des push/pop concurrents, cepant si le thread réalisant un pop/push est préempté par un autre thread réalisant un pop/push, il recommencera sa tentative (le CAS a échoué). Il n y a donc pas d attente bornée. 1

5. Supposons le scénario suivant : État de la pile : top A B C 1- Thread 1 exécute Pop et est préempté avant d exécuter l instruction CAS 2- Thread 2 exécute Pop deux fois et Push(A) 3- Thread 1 repr son exécution et réalise l opération CAS Donner l état de la pile et des threads après chaque étape et commenter le résultat final. Init : top A B C Après 1 : old_first = A, second = B, même pile Après 2 : Pop() = A : top B C, Pop() = B : top C, Push(A) : top A C Après 3 : L opération CAS(&A, A, B) réussi car l ancien A est bien égal au nouveau A inséré par le thread 2. On obtient donc top A B avec aucune garantie que B existe encore ou soit un emplacement mémoire valide. Ce problème s appelle ABA. Un solution classique pour éviter ce problème est de tagger les adresses (modifier les bits de points faibles non utilisés) lors d une suppression pour faire échouer la comparaison des adresses lors du CAS. 6. Conclure sur l intérêt de l opération CAS et ses dangers. CAS et assimilés sont très utiles pour implémenter des structures lockfree voir waitfree (avec un Double CAS par exemple) mais elles sont très difficiles à implémenter. Cours 1. Rappeler les 3 propriétés souhaitables pour la gestion des sections critiques. Exclusion mutuelle : 1 seul processus à la fois en section critique ; Attente bornée d un processus avant d entrer en section critique (conséquence : Absence de famine) ; Progression (conséquence : Absence d interblocage). 2. Rappeler les 4 conditions pour avoir un interblocage. Exclusion mutuelle : seulement un processus à la fois peut utiliser une ressource ; Tient-et-att : un processus qui tient au moins une ressource est en attente d autres ressources ; Pas de préemption : une ressource ne peut être relâchee qu intentionnellement par le processus qui la tient, une fois qu il a terminé ; Attente circulaire : il y a un ensemble P 1,..., P k de processus en attente, tels que P 1 att une ressource tenue par P 2,..., P i att une ressource tenue par P i+1,... et P k att une ressource tenue par P 1. 2

Interblocage - Prévention et Évitement Pour s assurer qu un interblocage ne peut se produire, le système peut soit prévenir (prévention de l interblocage) en s assurant qu au moins une des quatre conditions nécessaires ne peut se produire soit éviter (évitement de l interblocage) en gérant en avance les ressources qu une tâche doit utiliser pant son exécution. La stratégie d évitement consiste à autoriser l allocation d une ressource seulement lorsque cette allocation mène à un état "sûr", où l interblocage est impossible. 1. Un état est sûr si le système peut allouer les ressources à chaque processus (jusqu à son maximum) dans un certain ordre et finalement éviter un interblocage. Un état qui n est pas sûr sera qualifié d état aventureux. Quelles sont les relations entre états sûrs, aventureux et les interblocages? Interblocage Aventureux, ce qui implique : Sûr = Interblocage Aventureux = Interblocage Interblocage = Aventureux 2. Dans les algorithmes suivants, 3 processus utilisent de manière concurrente des ressources notées A...F : get(a); get(b); get(c); release(a); release(b); release(c); Algorithm 1: Processus 1 get(d); get(e); get(b); release(d); release(e); release(b); Algorithm 2: Processus 2 get(c); get(f); get(d); release(c); release(f); release(d); Algorithm 3: Processus 3 En utilisant un graphe d allocation de ressources, prouvez la possibilité d un interblocage. Prévention : Modifiez l ordre de demande des ressources pour éviter l interblocage. Justifier votre réponse. Évitement : Soit l état ci-dessous des 3 algorithmes. Utiliser le graphe d allocation de ressources pour trouver un état suivant qui est sûr. Quelles sont les demandes qui ne peuvent pas être satisfaites dans l état courent? Pourquoi? Processus Déjà allouées En cours de demande P 1 A,B C P 2 D,E B P 3 C 1) Si chaque processus prs les 2 premières ressources voulues, on se retrouve dans le cas suivant : A B C D E F P1 P2 P3 Cycle : P1->C->P3->D->P2->B(->P1) 3

2) Attente circulaire, ordre : A B C D E F Ordre P1 : A, B, C Ordre P2 : B, D, E Ordre P3 : C, D, F 3) État initial : A B C D E F P1 P2 P3 Le seul état sur est de donner C à P1. Si on donne C à P3, on engre un cycle : (C->P3->D->P2->B->P1->C) On ne peut pas donner B à P2, car B est détenu par P1. 3. Soit un système disposant de 9, 3 et 6 ressources de types respectivement R1, R2 et R3. La quantité de ressources demandées par chacun des 4 processus et l allocation actuelle est donnée dans le tableau suivant : Processus Demande max. Allouées R1 R2 R3 R1 R2 R3 P 1 3 2 2 1 0 0 P 2 6 1 3 5 1 1 l état, est-il sur? P2 demande une ressource de type R1 et une de type R3. La demande, peut-elle être satisfaite immédiatement? P1 demande une ressource de type R1 et une de type R3. La demande, peut-elle être satisfaite immédiatement? P1 2 2 2 P2 1 0 2 Dans l état initial la matrice Need est : P2 peut finir en utilisant (1 0 2) ressources. Étape 2 : Étape 3 : Étape 4 : P 1 3 2 2 1 0 0 P 1 0 0 0 0 0 0 P 1 0 0 0 0 0 0 P 3 0 0 0 0 0 0 P1 2 2 2 P1 0 0 0 P1 0 0 0 P3 0 0 0 et on a (1 1 2) ressources disponibles, (6 2 3) ressources disponibles finir P1, (7 2 3) ressources disponibles finir P3, (9 3 4) ressources disponibles finir P4 2) Oui. On attribue d abord les (1 0 1) ressources demandées à P2. Puis on teste qu on est dans un état sur. Le test est le même que dans la première partie (sauf la première étape) 4

3) Non, on se retrouve avec la matrice Need : P1 1 2 1 P2 1 0 2 et (0 1 1) ressources disponibles Interblocage - Détection et Récupération Soit n = 5 processus, m = 3 types de ressources, A, B et C avec une seule instance de chaque. On a l état suivant : Allocation Request P1 0 0 0 1 0 0 P2 0 1 0 1 0 0 P3 0 0 0 0 1 1 P4 1 0 0 0 0 1 P5 0 0 1 0 0 0 1. Y a-t-il interblocage? 1 seule instance de chaque ressource donc on va préférer le graphe d attente. soit P1 -> P4 -> P5, P3 -> P2 -> P4, P3 -> P5 Pas de cycle donc pas d interblocage 2. Et si P5 demande la ressource B? On a le cycle P2 -> P4 -> P5 (-> P2) donc interblocage! Soit n = 4 processus, m = 3 types de ressources, A (4 instances), B (4 instances), et C (7 instances). On a l état suivant : Allocation Request P1 1 1 1 1 1 1 P2 2 0 1 0 1 0 P3 1 2 2 2 0 1 P4 0 0 3 4 0 0 1. Y a-t-il interblocage? Utiliser la variante de l algo du banquier (avec REQUEST), réponse Non. Initialement Work = Available = (0 1 0). P2 : Work = (2 1 1) P1 + P3 : Work = (4 4 4) P4 ok donc pas d interblocage. 2. Et si P1 demande deux ressources de plus de C? Piège! Toujours bon :) L ordre devient P2, P3, P1, P4. 5