Deuxième partie. Protocoles d exclusion mutuelle. Plan. Interférences et isolation. Isolation Protocoles d exclusion mutuelle



Documents pareils
Chapitre 4 : Exclusion mutuelle

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

Cours de Systèmes d Exploitation

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

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

Introduction à la programmation concurrente

Problèmes liés à la concurrence

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

INTRODUCTION À LA PROGRAMMATION CONCURRENTE

L exclusion mutuelle distribuée

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

NIVEAU D'INTERVENTION DE LA PROGRAMMATION CONCURRENTE

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

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

Introduction à la Programmation Parallèle: MPI

Cours de Base de Données Cours n.12

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

Les transactions 1/46. I même en cas de panne logicielle ou matérielle. I Concept de transaction. I Gestion de la concurrence : les solutions

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

Ordonnancement temps réel

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)

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

LOG4430 : Architecture et conception avancée

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

Recherche dans un tableau

Plateforme PAYZEN. Définition de Web-services

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

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

Introduction aux Systèmes et aux Réseaux

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

LES TYPES DE DONNÉES DU LANGAGE PASCAL

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

Synchro et Threads Java TM

Conception des systèmes répartis

Algorithmique des Systèmes Répartis Protocoles de Communications

Introduction : les processus. Introduction : les threads. Plan

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

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

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

INF6500 : Structures des ordinateurs. Sylvain Martel - INF6500 1

Projet gestion d'objets dupliqués

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

2. Comprendre les définitions de classes

Systèmes et algorithmes répartis

Algorithmique et programmation : les bases (VBA) Corrigé

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

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

REALISATION d'un. ORDONNANCEUR à ECHEANCES

Réplication des données

Gestion des transactions et accès concurrents dans les bases de données relationnelles

Chapitre 2. Les processus. 2.1 Introduction. 2.2 les différents états d un processus

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

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Gestion répartie de données - 1

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

.NET - Classe de Log

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

Cours Programmation Système

Algorithmique et Programmation, IMA

Arbres binaires de recherche

Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43

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

Développement d un logiciel de messagerie instantanée avec Dotnet (version simplifiée)

Le protocole ARP (Address Resolution Protocol) Résolution d adresses et autoconfiguration. Les protocoles ARP, RARP, TFTP, BOOTP, DHCP

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

Threads. Threads. USTL routier 1

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

Programmation système de commandes en C

Cours A7 : Temps Réel

<Insert Picture Here> Solaris pour la base de donnés Oracle

PROGRAMMATION EVENEMENTIELLE sur EXCEL

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

Partie 7 : Gestion de la mémoire

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

Structure fonctionnelle d un SGBD

SYSTÈME DE GESTION DE FICHIERS

ORDONNANCEMENT CONJOINT DE TÂCHES ET DE MESSAGES DANS LES RÉSEAUX TEMPS RÉELS 4. QUELQUES EXEMPLES DU DYNAMISME ACTUEL DU TEMPS RÉEL

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Initiation au HPC - Généralités

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

TP 1. Prise en main du langage Python

Gestion des processus

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

Introduction aux algorithmes répartis

Programmer en JAVA. par Tama

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

CH.3 SYSTÈMES D'EXPLOITATION

Programmation système en C/C++

Cours 6 : Tubes anonymes et nommés

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

Programmation Objet - Cours II

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

as Architecture des Systèmes d Information

Les systèmes de base de données temps réels. Pokrovskaya Natalia, Kabbali Nadia

Programmation d Applications Concurrentes et Distribuées (INF431)

SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE

Données Réparties. Thibault BERNARD.

Transcription:

Plan Deuxième partie 1 2 Primitives de gestion des activités 2 / 26 4 / 26 Interférences et isolation Contenu de cette partie di cultés résultant d accès concurrents à un objet partagé mise en œuvre de protocoles d isolation solutions synchrones (i. e. bloquantes) : attente active! di culté du raisonnement en algorithmique concurrente! aides fournies au niveau matériel solutions asynchrones : gestion des processus S 1 (1) x := lire(compte 2); (2) y := lire(compte 1); (3) y := y + x; (4) ecrire(compte 1, y); S 2 (a) v := lire(compte 1); (b) v := v - 100; (c) ecrire(compte 1, v); compte 1 et compte 2 sont partagés par les deux traitements ; les variables x, y et v sont locales à chacun des traitements ; les traitements s exécutent en parallèle, et leurs actions peuvent être entrelacées. (1) (2) (3) (4) (a) (b) (c) est une exécution possible, cohérente. (1) (a) (b) (c) (2) (3) (4) " " " " (1) (2) (a) (3) (b) (4) (c) est une exécution possible, incohérente. cohérence ( calculs séparés ( exécution séquentielle 3 / 26 5 / 26

Section critique : contexte Définition Les séquences S 1 = (1);(2);(3);(4) et S 2 = (a);(b);(c) sont des sections critiques, qui sont chacune destinées à être exécutées de manière atomique (indivisible) : le résultat de l exécution concurrente de S 1 et S 2 doit être le même que celui de l une des exécutions séquentielles S 1 ; S 2 ou bien S 2 ; S 1. cette équivalence peut être atteinte en contrôlant directement l ordre d exécution de S 1 et S 2 (exclusion mutuelle), ou en contrôlant les résultats (partiels ou finaux) de S 1 et S 2 (contrôle de concurrence). Objectif ensemble de processus concurrents P i variables partagées par tous les processus variables privées (locales) à chaque processus structure de chacun des processus cycle entrée sortie. fincycle hypothèses : vitesse d exécution non nulle de durée finie Garantir l exécution en exclusion mutuelle des 6= sections critiques 6 / 26 8 / 26 Accès conflictuels : encore des exemples : propriétés Exécution concurrente init x = 0; h a := x; x := a + 1 ikh b := x; x := b - 1 i ) x = -1, 0 ou 1 Modifications concurrentes h x := 0x 00 01 ikh x := 0x 02 00 i ) x = 0x0001 ou 0x0200 ou 0x0201 ou 0x0000 ou 1234! Cohérence mémoire init x = 0 ^ y = 0 h x := 1; y := 2 ikh printf("%d %d",x,y); i ) a che 0 0 ou 1 2 ou 1 0 ou 0 2... (sûreté) à tout moment, au plus un processus est en cours d exécution d une (noté P k.excl) invariant 8i, j 2 0..N 1:P i.excl ^ P j.excl ) i = j (vivacité faible) lorsqu il y a (au moins) une demande (P k.dem), un processus qui demande à entrer sera admis 8i 2 0..N 1:(P i.dem leadsto 9j 2 0..N 1:P j.excl) (vivacité forte) si un processus demande à entrer, ce processus finira par obtenir l accès (son attente est finie) 8i 2 0..N 1:P i.dem leadsto P i.excl 7 / 26 9 / 26

Plan : premier essai 1 2 Primitives de gestion des activités occupé : global boolean := false; tant que occupé faire nop; occupé true; occupé false; Problème Lecture (test) et écriture (a ectation) e ectuées séparément! invariant invalide 10 / 26 12 / 26 : moyens : alternance Deux processus (P 0 et P 1 ) Solutions directes (plutôt synchronisation à grain fin) solutions logicielles : lecture/écriture de variables partagées! attente active :testercontinûmentlapossibilitédeprogresser mécanismes matériels simplifiant l attente active (instructions spécialisées) évitant l attente active ( masquage des interruptions) Recours au service de gestion des activités de l environnement d exécution (système d exploitation... ) (code du processus P i ) tour : global 0..1; tant que tour 6= i faire nop; tour i + 1 mod 2; lectures et écritures supposées atomiques généralisable à plus de 2 processus Problème alternance obligatoire 11 / 26 13 / 26

: priorité à l autre demandeur Deux processus (P 0 et P 1 ) (code de P i,avecj=id.del autreprocessus) demande : global array 0..1 of boolean; demande[i] true; tant que demande[j] faire nop; demande[i] false; lectures et écritures supposées atomiques non facilement généralisable à plus de 2 processus Problème risque d attente infinie (interblocage) : Peterson 1981 (2/2) Exercice L ordre des deux premières instructions du protocole d entrée est-il important? Pourquoi? Idée de la preuve sûreté tour ne peut avoir qu une valeur (et tour n est pas modifié dans la ) vivacité forte si P i attend, (demande[j] et tour =j)finitpardeveniretrester faux 14 / 26 16 / 26 : Peterson 1981 (1/2) Deux processus (P 0 et P 1 ) (code de P i,avecj=id.del autreprocessus) demande : global array 0..1 of boolean; tour : global 0..1; demande[i] true; tour j; tant que (demande[j] et tour = j) faire nop; demande[i] false; lectures et écritures supposées atomiques évaluation non atomique du et vivacité forte 15 / 26 Solution logicielle pour n processus (Lamport 1974) L algorithme de la boulangerie (code du processus P i ) choix : global array 0..N-1 of boolean; num : global array 0..N-1 of integer; tour : integer; choix[i] true; tour 0; pour k de 0 à N faire tour num[i] tour + 1; choix[i] false; pour k de 0 à N faire tant que (choix[k]) faire nop; tant que (num[k]6=0) et (num[k],k) num[i] 0; max(tour,num[k]); (num[i],i) faire nop; Remarque :autorise des lectures et écriture non atomiques 17 / 26

: instructions spécifiques TestAndSet(x), instruction indivisible qui positionne x à vrai et renvoie l ancienne valeur de x Définition function TestAndSet (x : in out boolean) : boolean declare oldx : boolean begin oldx := x; x := true; return oldx; end TestAndSet //instruction atomique : utilisation de FetchAndAdd Définition function FetchAndAdd (x : in out int) : int declare oldx : int begin oldx := x; x := oldx + 1; return oldx; end FetchAndAdd ticket : global int := 0; tour : global int := 0; montour : local int; montour FetchAndAdd(ticket); tant que tour 6= montour faire nop; FetchAndAdd(tour); 18 / 26 Question : ce protocole est-il vivace? 20 / 26 : utilisation du TestAndSet Solution matérielle sans matériel : utilisation du système de fichiers occupé : global boolean := false; tant que TestAndSet(occupé) faire nop; occupé false; Tous les processeurs actuels possèdent une instruction analogue au TestAndSet, et adaptée aux multi-processeurs symétriques. Question Ce protocole est-il vivace? Les primitives du noyau Unix permettant la création conditionnelle de fichiers peuvent être utilisées comme des opérations atomiques analogues au TestAndSet. tant que open("toto", O RDONLY O EXCL O CREAT, 0) == -1 faire nop; unlink("toto"); ne nécessite pas de mémoire partagée atomicité assurée par le noyau d exécution 19 / 26 21 / 26

: masquage des interruptions Idée : éviter la préemption du processeur par un autre processus masquer les interruptions démasquer les interruptions plus d attente! mono-processeur seulement pas d entrée-sortie, pas de défaut de page en SC! micro-système embarqué 22 / 26 Primitives de gestion des activités Éviter l attente active : utilisation des primitives de verrouillage de fichiers Verrous exclusifs (appel système lockf) ou coopératifs sur les fichiers : en lecture partagée, en écriture exclusive (appels système : flock, fcntl) fd = open ("toto", O RDWR); lockf (fd, F LOCK, 0); // verrouillage exclusif lockf (fd, F ULOCK, 0); // déverrouillage attente passive (le processus est bloqué) portabilité aléatoire 24 / 26 Éviter l attente active : recours à la gestion des activités (<< B >> indique que le bloc d instructions B doit être exécuté en exclusion mutuelle) occupé : global bool := false; demandeurs : global fifo; << si occupé alors self identifiant du processus courant ajouter self dans demandeurs se suspendre sinon occupé true finsi >> << si demandeurs est non vide alors p extraire premier de demandeurs débloquer p sinon occupé false finsi >> accès aux variables globales (demandeurs, occupé) enexclusionmutuelle cette exclusion mutuelle est réalisée par attente active (acceptable, car sections critiques courtes) L attente active ne peut être éliminée, mais est à limiter le plus possible sur un monoprocesseur ; elle peut être utile pour la synchronisation à grain fin sur les multiprocesseurs La plupart des environnements d exécution o rent un service analogue aux verrous, avec les opérations atomiques : obtenir (acquire) : si le verrou est libre, l attribuer au processus demandeur ; sinon bloquer le processus demandeur libérer (release) : si au moins un processus est en attente du verrou, transférer la possession à l un des demandeurs et le débloquer ; sinon marquer le verrou comme libre. accès : global verrou // partagé obtenir accès libérer accès 25 / 26

Exercice : exclusion mutuelle vivace avec TestAndSet occupé : global booléen := faux; attend : global tableau 0..N-1 de booléen := faux; //Code du processus i j : local 0..N-1; attend[i] := vrai; tant que (attend[i] et TestAndSet(occupé)) faire nop; attend[i] := faux; j := i+1 % N; tant que (i 6= j et non attend[j]) faire j := j+1 % N; si j = i alors occupé := faux; sinon attend[j] := faux ; 26 / 26