Modélisation des systèmes avec NuSMV. LACL, Université Paris-Est Créteil



Documents pareils
Cours de Systèmes d Exploitation

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

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

Plan. École Supérieure d Économie Électronique. Plan. Chap 9: Composants et systèmes de sécurité. Rhouma Rhouma. 21 Juillet 2014

Algorithmique des Systèmes Répartis Protocoles de Communications

TP 1. Prise en main du langage Python

Introduction à la programmation concurrente

Conception des systèmes répartis

PROGRAMMATION EVENEMENTIELLE sur EXCEL

Threads. Threads. USTL routier 1

Introduction à la Programmation Parallèle: MPI

Problèmes liés à la concurrence

Programmation Web. Madalina Croitoru IUT Montpellier

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

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

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

Introduction : les processus. Introduction : les threads. Plan

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

Chapitre 4 : Exclusion mutuelle

Protocole SSH-2.0. Tuan-Tu, TRAN. Janvier 2009

Un ordonnanceur stupide

Bases de données cours 1

DG-ADAJ: Une plateforme Desktop Grid

NIVEAU D'INTERVENTION DE LA PROGRAMMATION CONCURRENTE

Cours de sécurité. Pare-feux ( Firewalls ) Gérard Florin -CNAM - - Laboratoire CEDRIC -

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

Communication inter-processus (IPC) : tubes & sockets. exemples en C et en Java. F. Butelle

Programmer en JAVA. par Tama

2. MAQUETTAGE DES SOLUTIONS CONSTRUCTIVES. 2.2 Architecture fonctionnelle d un système communicant.

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

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

Le MSMQ. Version 1.0. Pierre-Franck Chauvet

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

as Architecture des Systèmes d Information

INTRUSION SUR INTERNET

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

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Le Tunneling DNS. P.Bienaimé X.Delot P.Mazon K.Tagourti A.Yahi A.Zerrouki. Université de Rouen - M2SSI. 24 février 2011

Computer Networking: A Top Down Approach Featuring the Internet, 2 nd edition. Jim Kurose, Keith Ross Addison-Wesley, July ENPC.

Editer un script de configuration automatique du proxy

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

Environnements informatiques

Outils logiciels SPC - une façon simple d optimiser les performances et la protection

Ethernet Industriel Réseaux Ethway Coupleur Ethernet sur Automates Programmables. Plan. Contexte

Projet de programmation (IK3) : TP n 1 Correction

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

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

1 Recherche en table par balayage

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Transmissions série et parallèle

Procédure d installation :

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

Le protocole TCP. Services de TCP

Université de La Rochelle. Réseaux TD n 6

SYSTEME DE GESTION DES ENERGIES EWTS EMBEDDED WIRELESS TELEMETRY SYSTEM

Plan. Programmation Internet Cours 3. Organismes de standardisation

Internets. Informatique de l Internet: le(s) Internet(s) Composantes de l internet R3LR RENATER

TP JAVASCRIPT OMI4 TP5 SRC

KL5121. Pour activer des sorties en fonction de la position d'un codeur

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

Service Déposant: Procédure d installation. Page 1. Service déposant. Procédure d installation Version 2.3

TD2 Programmation concurrentielle

Le modèle client-serveur

Table des matières L INTEGRATION DE SAS AVEC JMP. Les échanges de données entre SAS et JMP, en mode déconnecté. Dans JMP

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

Introduction. Adresses

Paginer les données côté serveur, mettre en cache côté client

1.Introduction - Modèle en couches - OSI TCP/IP

SSH, le shell sécurisé

Les ACL Cisco. F. Nolot Master 2 Professionnel STIC-Informatique 1

Monitoring d un Datacenter du concept à la réalisation

Idées et propositions de cours. «Cookies, Cache & Co!» NetLa Matériel pédagogique 6. Campagne pour la protection de la personnalité

Visual Taxe 4.1.0B04 minimum

U.E. ARES - TD+TME n 1

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

Plateforme PAYZEN. Définition de Web-services

Sécurité des applications web. Daniel Boteanu

Architecture distribuée

Services Réseaux - Couche Application. TODARO Cédric

Cours de Programmation en Langage Synchrone SIGNAL. Bernard HOUSSAIS IRISA. Équipe ESPRESSO

Contenu de l'emballage. Fonctions et spécifications

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

SOMe2100 MANUEL D UTILISATION. TRANSMETTEUR GSM/GPRS - M-Bus Master D INSTALLATION. Montage sur rail DIN. Notice simplifiée du module SOMe2100

Pour configurer le Hitachi Tecom AH4021 afin d'ouvrir les ports pour "chatserv.exe", vous devez suivre la proc

Étuves de laboratoire T ambiante+5 à +300 C

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

.NET - Classe de Log

Procédure d utilisation et de paramétrage (filtrage) avec IPFIRE

SSL. Secure Socket Layer. R. Kobylanski janvier version 1.1 FC INPG. Protocole SSL Application avec stunnel

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

Une introduction à Java

Ordonnancement temps réel

LOGICIEL DC4D MONITOR

Programmation parallèle et distribuée

DHCP. Dynamic Host Configuration Protocol

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

La VOIP :Les protocoles H.323 et SIP

SugarCubes. Jean-Ferdinand Susini Maître de Conférences, CNAM Chaire systèmes enfouis et embarqués. Paris, le 9 janvier, 2009

Voix sur IP Étude d approfondissement Réseaux

Transcription:

Modélisation des systèmes avec NuSMV Cătălin Dima LACL, Université Paris-Est Créteil

Éléments clés à prendre en compte en modélisation Existence des processus/modules/fonctions indépendent(e)s : Processus tournant en (pséudo)parallélisme. Systèmes de type client-serveur. Systèmes interactifs. Modules d une architecture matérielle (contrôleur, capteur...). Existence des variables (ressources) partagées : Variables possédées par un module et accessibles seulement en lecture par les autres. Variables que plusieurs modules peuvent mettre à jour. Situations d attente bloquante : Instructions de type wait : attente (processus n avance pas) tant qu une condition n est pas remplie. Lecture dans tubes de communication vides, écriture dans tubes pleins. Instructions de synchronisation type waitpid. Scalabilité : Nombre de processus pouvant varier. Valeurs de variables non contraintes, mais pouvant influencer le comportement du système. Temporisation ou délais.

Modélisation NuSMV avec MODULE Reprenons la solution de Peterson au problème d exclusion mutuelle : while (true) { while (true) { flag1 := true ; flag2 := true ; turn := 2 ; turn := 1 ; wait (!flag2 (turn=1) ) wait (!flag1 (turn=2) ) section critique 1 section critique 2 flag1 := false ; flag2 := false ; } } C est un exemple de système qui pourrait se généraliser (par exemple, nombre de processus > 2). On prend la variante monoprocesseur, ou exécution par entrelacement.

Modélisation NuSMV avec MODULE Variables possedées par chaque processus : flagi, pci. Variables partagées, accessibles par chaque processus à la fois en lecture et en écriture : turn. Variables cachées, nécessaires à la modélisation tourderole : indique à qui le tour d essayer d exécuter une instruction. id : identité du processus, servira à savoir, à l intérieur de chaque processus, si son tour est venu.

Module processus i (avec seulement les variables possédées) MODULE proc(id,trderole,turn,flagautr) VAR pc : 0..4; flag : boolean; ASSIGN init(pc) := 0; init(flag) := TRUE; next(pc) := case (trderole=id) & ((pc!=2) (pc=2 & ((!flagautr) turn=id))): (pc+1) mod 5; TRUE : pc; esac; next(flag) := case (trderole=id) & (pc=0) : TRUE; (trderole=id) & (pc=4) : FALSE; TRUE : flag; esac;

Module processus i : explications flagautr est la variable qui permet d avoir accès au drapeau de l autre processus. L utilité de id apparaît lorsqu on se rend compte qu il faut avoir un moyen symétrique de décider à qui est le tour. Pas (encore) de modélisation de l instruction turn := i.

Module main MODULE main VAR turn : 0..1; tourderole : 0..1; flg0 : boolean; flg1 : boolean; proc0 : proc(0,tourderole,turn,flg1); proc1 : proc(1,tourderole,turn,flg0); ASSIGN init(turn) := 0; next(turn) := case (proc0.pc=1 & tourderole=0) : 1; (proc1.pc=1 & tourderole=1) : 0; TRUE : turn; esac; INVAR (flg0 = proc0.flag) & (flg1 = proc1.flag);

Module main, explications On a déclaré le drapeau de chaque processus à l intérieur du module, mais chaque processus utilise le drapeau de l autre... On devrait déclarer que proc1 utilise proc0.flag...... mais proc0 utilise lui aussi proc1.flag... On est dans une dépendance circulaire... C est un problème syntaxique (comment déclarer) pas un problème sémantique!... et on la résout en déclarant les deux variables supplémentaires flg0,flg1,.. qui sont contraintes, par la déclaration INVAR, d avoir toujours les valeurs proc0.flag, resp. proc1.flag.

Modélisation des situations d interblocage Reprenons la solution de Peterson, en éliminant turn : while (true) { while (true) { flag1 := true ; flag2 := true ; wait (!flag2 ) wait (!flag1 ) section critique 1 section critique 2 flag1 := false ; flag2 := false ; } } Peut-on modéliser l interblocage aussi à l aide de ASSIGN?

Modélisation des situations d interblocage ASSIGN peut permettre de modéliser des situations de blocage en vie (angl. livelock) : un processus ne fait plus que des affectations de type next(v) := v pour toutes ses variables. MODULE proc(id,trderole,flagautr) VAR pc : 0..4; flag : boolean; ASSIGN init(pc) := 0; init(flag) := TRUE; next(pc) := case (trderole=id) & ((pc!=2) (pc=2 & (!flagautr)): (pc+1) mod 5; TRUE : pc; esac; next(flag) := case (trderole=id) & (pc=0) : TRUE; (trderole=id) & (pc=4) : FALSE; TRUE : flag; esac;

Modélisation des situations d interblocage MODULE main VAR turn : 0..1; tourderole : 0..1; flg0 : boolean; flg1 : boolean; proc0 : proc(0,tourderole,flg1); proc1 : proc(1,tourderole,flg0); INVAR (flg0 = proc0.flag) & (flg1 = proc1.flag);

Protocôles de communication Découverte des bogues dans certaines spécifications/implémentations de protocôles (e.g. Kerberos). Permet surtout de retrouver les situations d interblocage, grand casse-tête des méthodes de test. Motre la puissance du model-checking tant que les modèles restent limités en taille.

Protocôles de communication de bas niveau Communication synchrone, pas d attente. Exemples : ABP, CSMA/CD. Communication synchrone, attente bloquante. Exemples : TCP, communication par tubes, producteur/consommateur.

Alternating Bit Protocol : Un serveur veut envoyer une donnée à un client. Les médias de communication peut provoquer des pertes de messages. Le serveur commence par envoyer la donnée, suivie d un bit (initialement 0), continuellement, jusqu à ce qu un accusé de réception soit reçu. Lorsque l accusé de réception est reçu, le serveur commence à envoyer la donnée suivante avec le bit changé à 1. Le client, lors de la réception du premier message, envoie un accusé de réception (ACK0), et l envoie continuellement jusqu à la réception d un nouveau message. Puis, après la prochaine réception de donnée, envoie l accusé de réception ACK1, etc. Exemple de propriété à vérifier : Si le client reçoit une donnée correcte avec le bit 0, c est que le serveur l a bien envoyée auparavant.

Alternating Bit Protocol Exemple de programme expediteur en pseudocode : ab :=0 get : data := random ; send : sndmedia1d := data ; sndmedia1b := ab ; waitack : if (recmedia2a!= ab) goto send ; ab := 1-ab ; goto get ; Exemple de programme recepteur en pseudocode : abrec :=1 recv : if (recmedia1d!= err) abrec := 1-abrec ; sndmedia2a := abrec ; goto recv Et les canaux de communication : trsm : recmedia1d := { sndmedia1d, err } : recmedia1b := sndmedia1b ; goto get ; Et similaire pour sndmedia2a/recmedia2a.

Producteur/consommateur Un serveur produit (avec un délai aléatoire) des objets et les place dans une file. Un client récupère (avec un délai aléatoire) les objets dans l ordre d envoi. Le client est bloqué tant que la file est vide. La file a une dimension maximale, donc le serveur est bloqué lui aussi tant que la file est pleine. Exemple de propriété à vérifier : Si une donnée d 1 est produite après une autre donnée d 2, d 1 sera consommée après d 2.

Producteur/consommateur Producteur : start : data := random ; wait (top <N) ; belt[top] := data ; top++ ; goto start Consommateur : start : wait (top >=0) ; consume := belt[0] ; for (i=1 ;i<top ;i++) belt[i-1] := belt[i] ; top ; goto start Attention! Les sections critiques (en rouge) doivent s exécuter en exclusion mutuelle.

Modélisation des instructions s exécutant en temps variable Variable supplémentaire duree, qui prédit la durée de l instruction. À chaque début d exécution d une instruction, la durée est initialisée à une valeur aléatoire, entre 1 et le délai maximal d exécution de l instruction. Le compteur de programme pc avance seulement lorsque duree est 0. Cas particulier des instructions pause durée non-aléatoire. next(pc) := case (pc = start) & (duree = 0) : at_wait ; case (pc = at_wait) & (top < N) & (duree = 0) : at_belt;... TRUE : pc; esac; next(duree) := case (pc = at_delay3) & (duree = 0) : 3; case (duree = 0) : {1,2,3,4}; TRUE : duree; esac;