Faculté I&C, Claude Petitpierre, André Maurer 1 Systèmes multi-processus C. Petitpierre 25.3.2009.

Slides:



Advertisements
Présentations similaires
Lundi 15 Juin 2009 Les principales techniques JavaScript.
Advertisements

Module Systèmes d’exploitation
Formation universitaire à .NET: Introduction à C#
Lucene une API d'indexation de texte. stocke les informations dans une structure d'index inversé. Les termes renvoient sur les documents qui les contiennent.
Formation C débutant. Notion de compilation source.c executable Phase de compilation Fichier de texte brut, inexploitable directement par la machine Fichier.
Synchronisation des processus père - fils
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
Plan du cours 5:Threads introduction Définition Création des Threads
CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV Threads Module Java Expert.
Jc/md/lp-01/05Trains_corrigé1 Threads et Synchronisation Application train Corrigé
Orchestration d’activités Web avec HipHop
Javascript les spécificités du langage - Partie 7 -
Faculté I&C, Claude Petitpierre, André Maurer Bases de données Javascript – SQL - LemanOS.
Faculté I&C, Claude Petitpierre, André Maurer 1 Héritage par prototype Héritage dattributs ou de méthodes Héritage de constructeurs.
CYCLE 3 : Alternatives Faire des choix dans un programme en C 1- AIGUILLAGE SIMPLE sur CONDITION : if-else 2-AIGUILLAGE MULTIPLE sur CONDITIONS if-else.
Cours VHDL Chap 3: sémantique VHDL
Faculté I&C, Claude Petitpierre, André Maurer 1 Java.
© 2007 P. Van Roy. All rights reserved. 1 FSAB1402: Informatique 2 La Concurrence Déclarative Peter Van Roy Département dIngénierie Informatique, UCL
Faculté I&C, Claude Petitpierre, André Maurer What is this ? (Quest ce que this ?)
Présentation de la séquence de cours sur les interactions HTML-javascript Laure Walser, 11 juin 2010.
Faculté I&C, Claude Petitpierre, André Maurer setTimeout ( nomDeFonction, 1000 ) setTimeout ( instructions, 1000 ) setTimeout ( nomDeFonction(), 1000 )
Objets Javascript Mécanismes internes Le concept et la construction dobjets
Approche mémoire partagée Threads – Paradigme de lapproche – Objets exécutés par les processeurs threads vs processus, – un thread possède : Ses registres,
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
Faculté I&C, Claude Petitpierre, André Maurer Evénements en Javascript prototype.js.
Threads en Java ( Livre Software engineering: chapitre 9)
1 Développement des Applications des Bases de Données Chapitre 6, Sections
Faculté I&C, Claude Petitpierre, André Maurer 1 JavaCC Java compilers compiler (version générant du Javascript)
Faculté I&C, Claude Petitpierre Cascaded style sheets CSS.
NSY102 1 Concurrence compléments Notes de cours Cnam Paris jean-michel Douin, douin au cnam point fr 19 Mars 2007.
Algorithme et programmation
Module 51 Module 5 - Synchronisation de Processus (ou threads, ou fils ou tâches) Module 5 - Synchronisation de Processus (ou threads, ou fils ou tâches)
18/05/05SE Info2 - S. L'haire UNIGE1 Lecture cha î ne caract è res Un document HTML est compos é de balises Une balise est compos é e de caract è res entre.
Instruction sélective switch-case Instruction répétitive do-while For
CSI2520, Hiver 2007 Programmation concurrente. CSI2520, Hiver 2007 Programmation concurrente La programmation est distribuée lorsque les processus ne.
Chapitre 6 (Silberchatz)
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Développement des Applications des Bases de Données Chapitre 6, Sections
Miguel Garzon CrUise Lab - SITE. Introduction Data Types and Sizes Constants Logic Operators Type conversions Example.
Faculté I&C, Claude Petitpierre, André Maurer Scalable vector graphics SVG (documentation en français – voir menu.
Faculté I&C, Claude Petitpierre, André Maurer 1 Concepts dhéritage Héritage dimplémentation hasA Héritage de spécialisation isA.
Faculté I&C, Claude Petitpierre, André Maurer Le parallélisme Introduction.
Faculté I&C, Claude Petitpierre, André Maurer Gestion des fichiers de LemanOS Ne fonctionne que sous LemanOS. On peut voir les fichiers créés dans ce système.
Multi-Thread Jian-Yun Nie
AJAX.
Chapitre 7 continuation
Badr Benmammar Formation Développeur Java Thread et Swing Badr Benmammar
Cours 11 Threads. Chapitre X threads threadPOO-L3 H. Fauconnier3 Threads threads: plusieurs activités qui coexistent et partagent des données exemples:
Faculté I&C, Claude Petitpierre, André Maurer Le parallélisme Introduction.
Faculté I&C, Claude Petitpierre, André Maurer JavaCC Java compilers compiler (version générant du Javascript)
Plan troisième cours Instruction sélective Instruction répétitive
Synchronisation Classique
23/03/05SE Info2 - S. L'haire UNIGE1 TP 7 PROCEDURE Inserer(VAR a, crt : AgendaPtr; j, h : INTEGER; IN s : Chaine); VAR nouveau, temp : AgendaPtr; BEGIN.
Javascript 1° PARTIE : LES BASES
LE LANGAGE JAVASCRIPT LES TABLEAUX ET LES FONCTIONS.
Faculté I&C, Claude Petitpierre, André Maurer Scalable vector graphics SVG (documentation en français – voir menu.
JavaScript Nécessaire Web.
Méthodes de simulation logicielle pour Esterel Dumitru Potop-Butucaru.
Résumé des concepts liés aux objets C. Petitpierre, EPFL.
Variables et environnement utilisateur W. Barhoumi.
Asynchronous JavaScript And XML AJAX C. Petitpierre
Pthread Ordonnancement. #define _MULTI_THREADED #include #ifndef _CHECK_H #define _CHECK_H /* headers used by a majority of the example program */ #include.
Les structures de contrôle
Faculté I&C, Claude Petitpierre, André Maurer Exercice sur les bases de données Quelques rappels et conseils (voir Aides > Accès à la base de données)
Master IRAD - SPIN / PROMELA
Modules créés au moyen d’objets C. Petitpierre. Objets construits sans constructeurs ( en Java on a introduit la réflexion pour cela ) var obj1 = { }
Scripts et fonctions Instructions de contrôle
Ajouter le code dans une page html
Qu'est-ce que POSIX? Une librairie en langage C
Ajouter le code dans une page html
Autour de Roubion village du Mercantour
Transcription de la présentation:

Faculté I&C, Claude Petitpierre, André Maurer 1 Systèmes multi-processus C. Petitpierre

Faculté I&C, Claude Petitpierre, André Maurer 2 Comment simuler un thread en Javascript ? En codant les instructions setTimeout judicieusement par soi-même En utilisant Synchronous Javascript

Faculté I&C, Claude Petitpierre, André Maurer 3 function execute () { var count = 0 while(true) { count ++ autres activités delai(1 seconde) document.getElementById('display').innerHTML = ""+count } Thread : (fil conducteur, fil de lhistoire )

Faculté I&C, Claude Petitpierre, André Maurer 4 Simulation du thread précédent par découpage en méthodes var count = 0 // globale function execute () { count ++ setTimeout(execute2, 1000) } function execute2 () { document.getElementById('display').innerHTML = ""+count setTimeout(execute, 0) }

Faculté I&C, Claude Petitpierre, André Maurer 5 var state = 0 var count function execute () { var delai = 0 switch (state) { case 0: count = 0 state = 1 break; case 1: count ++ state = 2 delai = 1000 break case 2: document.getElementById('display').innerHTML = ""+count state = 1 break } setTimeout(execute, delai) } Simulation de thread par les cas dun switch

Faculté I&C, Claude Petitpierre, André Maurer 6 function execute ()... case 3: semaphore = execute state = 1 return // évite son propre setTimeout ci-dessous } setTimeout(execute, delai) } function execute2 () // relance execute si elle est en attente if (semaphore != null) { setTimeout(semaphore,0) semaphore = null } } Synchronisation entre fils dexécution Suspension Relance

Faculté I&C, Claude Petitpierre, André Maurer 7 Synchronisation primaire entre threads thread 1 thread 2 Suspendre Relancer En général, si Relancer est exécuté avant Suspendre, Relancer na pas deffet.

Faculté I&C, Claude Petitpierre, André Maurer 8 Synchronisation avec mémorisation thread 1 thread 2 n incNWait () { if (n<=0) suspendre n-- } decNResume () { n++ relancer } n mémorise les signaux envoyés par le relanceur. Il ne faut pas quil y ait un changement de contexte entre le test et suspendre! si n < 0 |n| attentes.

Faculté I&C, Claude Petitpierre, André Maurer 9 Attente dans un processus function execute () { switch (state) { case 0:... state = 1 setTimeout(execute) break; case 1: if (n<=0) { state = 2 semaphore = execute return } else { n-- state = 3 setTimeout(execute) } break case 2: n-- state = 3 setTimeout(execute) break }

Faculté I&C, Claude Petitpierre, André Maurer 10 function execute () { switch (state) { case 1: init case 2: if (test) { corps; setTimeout(execute, 1000) action state = 2 } else { setTimeout(execute) state = 3 } break case 3:... break } for (init; test; action) { corps } corps contient un délai Attente dans une boucle for

Faculté I&C, Claude Petitpierre, André Maurer 11 Création et appel dun objet (actif ou passif) function send (msg) {.... } function run() { … ] Ox = new Object() Ox.send (msg); Object Ox

Faculté I&C, Claude Petitpierre, André Maurer 12 Objet actif = protection + activité function send (msg) { } function run() {... } obj obj. send (msg) ; Objet O2 obj. send (msg) ; Objet O1 obj.send (msg) ; Objet O3

Faculté I&C, Claude Petitpierre, André Maurer 13 La méthode send est exécutée pendant le rendez-vous frunction send (msg) { } function run () {... accept Send ;... } obj1 function run () { obj1.end (msg) ; } rendez-vous obj2

Faculté I&C, Claude Petitpierre, André Maurer 14 Modélisation par une machine détats State1: select { accept recv; buf.store (message); || obj1.send (buf); || waituntil (timeoutStart + T1); handleTimeout(); } obj1.send accept recv State1

Faculté I&C, Claude Petitpierre, André Maurer 15 Modélisation des rendez-vous A B C p q r D E F p s r AD BD CD q AE BE CE pp q AF BF CF q s s s Etats atteignables

Faculté I&C, Claude Petitpierre, André Maurer 16 Synchronous Javascript: objet actif process Compte (name, periode) { var compte = 0 this.run = function () { // corps du processus for (;;) { // boucle infinie var t = now() + periode waituntil (t) document.getElementById(name).innerHTML = compte++ } } } function execute (arg) { new Compte("compteur1", 3200) new Compte("compteur2", 500) }

Faculté I&C, Claude Petitpierre, André Maurer 17 Deux processus avec synchronisation process Compte (name, periode) { var compte = 0 this.kick = function () { } this.run = function () { for (;;) { select { case waituntil (now() + periode) case accept kick } document.getElementById(name).innerHTML = compte++ } } } var compteur process Start(nom) { var compte = 0 this.run = function () { for (;;) { compteur.kick() waituntil (now() ) document.getElementById(nom).innerHTML = compte++ } } } function executeKick (arg) { compteur = new Compte("cpt1", 3200) new Start("cpt2") }

Faculté I&C, Claude Petitpierre, André Maurer 18 Sémaphore habituel (Dijkstra) process Semaphore(name) { this.p = function () {} this.v = function () {} this.run = function () { for (;;) { accept p accept v } } } process Task1(name) { this.run = function() { for (;;) { semaphore.p() imprimeLignes() semaphore.v() } } } process Task2(name) { this.run = function() { for (;;) { semaphore.p() imprimeLignes() semaphore.v() } } } Une seule tâche peut être en train dimprimer à un moment donné

Faculté I&C, Claude Petitpierre, André Maurer 19 Canal ou boîte-aux-lettres process Producer(name) { this.run = function() {... channel.put( m )... } } process Consumer(name) { this.run = function() {... x = channel.get()... } } if (space available) { accept put } if (data) { accept get }

Faculté I&C, Claude Petitpierre, André Maurer 20 Canal entre threads process Producer(name) { var count = 0 this.run = function() { for (;;) { waituntil(now() ) channel.put(""+count) count += 2 } } } process Consumer(name) { var x this.run = function() { for (;;) { x = channel.get() display( x ) } } } process Channel(name) { var list = [] this.put = function (data) {list.push(data)} this.get = function () { return list.shift()} this.run = function () { for (;;) { select { case when (list.length>0) accept get case when (list.length<5) accept put } } } } var channel= new Channel("a")

Faculté I&C, Claude Petitpierre, André Maurer 21 Synchronisation avec un bouton process Periodique(name) { this.run = function() {... button.clicked()... } } process Button(name) { this.clicked = function() { } this.synchronize = function(data) { if (this.inSyncList) return accept clicked } // pseudo-processus, pas de run bloquant non bloquant

Faculté I&C, Claude Petitpierre, André Maurer 22 Kernel Queue des prêts Queue des synchronisations onload = "init()" function init () { new Process("xxx") } this.run() { switch(state) { case 3: await (accept v, waituntil…) state = 4 return case 4:... fil dexécution }appel de fonction setTimeout()

Faculté I&C, Claude Petitpierre, André Maurer 23 Synchronisation avec un bouton var button var periodique process Periodique(name) { this.go = function () {} this.run = function() { this.count = 0 while(true) { this.count++ select { case waituntil(now()+3000) display(this.count) case button.clicked() } } } } process Button(name) { this.clicked = function() { } this.synchronize = function(data) { if (this.inSyncList) return accept clicked // non bloquant // parce qu'il est dans this.synchronize } // et non dans run }

Faculté I&C, Claude Petitpierre, André Maurer 24 Synchronisation avec un bouton ( avec passage de données ) var button var periodique process Periodique(name) { this.go = function () {} this.run = function() { this.count = 0 while(true) { this.count++ select { case waituntil(now()+3000) display(this.count) case button.clicked() } } } } process Button(name) { this.clicked = function() { } this.data = 0 // optionnel this.synchronize = function(data) { if (this.inSyncList) return this.data = data accept clicked // non bloquant // parce qu'il est dans this.synchronize } // et non dans run }

Faculté I&C, Claude Petitpierre, André Maurer 25 Exercices Créer deux processus qui font bouger des images dans des rectangles, indépendamment lun de lautre. Introduire des boutons qui appellent chacun une méthode, dans un des processus, qui inverse la vitesse à laquelle limage progresse. Créer un simulateur de files dattentes, en définissant des sources, des puits et des files dattente dévénements.