5.1 URDL22005 Systèmes dexploitation Threads Vue dEnsemble Modèles de Multithreading Problèmes des Threads Pthreads Threads Windows XP Threads Linux Threads.

Slides:



Advertisements
Présentations similaires
Module Systèmes d’exploitation
Advertisements

GEF 435 Principes des systèmes d’exploitation
Approche graphique du nombre dérivé
VOTable et lobservatoire virtuel solaire Marco Soldati Haute École Spécialisée de la Suisse de nord-ouest.
Gestion des événements (suite)
Synchronisation des processus père - fils
1 1 Momentum. 2 2 Tout objet en mouvement continuera son mouvement tant que rien nentrave sa progression.
FR2 Leçons Les quantités.
GEF 243B Programmation informatique appliquée
Groupe France Télécom Projet Cilia : collaboration LIG Adèle – Orange Labs/MAPS/MEP slide 1 Cilia, un framework de médiation ouvert, léger, multi-personnalités.
Groupe France Télécom Projet Cilia : collaboration LIG Adèle – Orange Labs/MAPS/MEP slide 1 Cilia, un framework de médiation ouvert, léger, multi-personnalités.
Présentation de l’Architecture Windows NT
MySQL I / Présentation. II / Administration et Outils.
PLAN du COURS Introduction Structure des Systèmes Informatiques
SQL - Subtilités.
Conception et programmation Programmation Parallèle
Architecture de réseaux
LICENCE MIAGE Introduction Programmation Orientée Objet JAVA philippe
Plan de formation Chapitre 1 : Présentation de SAP
Plan de formation Chapitre 1 : Présentation de SAP
Plan de formation Chapitre 1 : Présentation de SAP
Ordonnancement du CPU Concepts de Base Critères d’Ordonnancement
Récursivité.
44 Contrôle du déroulement du programme. 4-2 Objectifs A la fin de ce cours, vous serez capables de : Utiliser les constructions de prise de décision.
Serveurs Partagés Oracle
La fonction alloue un bloc de taille size. Il faut indiquer la taille du bloc que lon veut allouer. Le premier exemple: #include void main()
1 Les pointeurs et quelques rappels sur certains éléments du langage C.
Processus Concept de Processus Ordonnancement de Processus
Les tris.
77 Utilisation des classes (suite). 7-2 Objectifs A la fin de ce cours, vous serez capables de : Définir des méthodes surchargées dans une classe Fournir.
Patterns et maintenabilité dans lindustrie : un cas concret Christophe Saint-Marcel Silicomp Ingénierie.
Structures des Systèmes d’Exploitation
@SSR – Installation des applications eduscol.education.fr/securite - février 2007 © Ministère de l'Éducation nationale, de l'Enseignement supérieur et.
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
8.1 URDL22005 Systèmes dexploitation Interblocages Modèle Système Caractérisation dinterblocage Méthodes pour Gérer les Interblocages Prévention des Interblocages.
Franck Cappello CNRS, LRI, Université Paris-sud
PLD GHome H4214 Piccolo Thomas Gu Lei Deville Romain Huang Yachen
Programmation concurrente
1 Module 3 - Fils (Threads) Lecture: Chapitre 4 Objectif: Comprendre le concept de fils et sa relation avec le processus Comprendre le concept de fils.
Notre calendrier français MARS 2014
IFT 6800 Atelier en Technologies d’information
Quelle heure est-il ??. THE TIME: OCLOCK IL EST HEURE IL EST + + HEURES etc.
1. 2 Toolkits Il existe 4 principales boites à outils (toolkits) graphiques : –Xt / Motif –Gtk –Windows –Qt Seul certaines fonctionnent sur toutes les.
Module 3 - Fils (Threads)
Les nombres.
Synchronisation Classique
Chapitre 3 Les bibliothèques de balises JSP et la JSTL
‘‘Open Data base Connectivity‘‘
1 Modèle pédagogique d’un système d’apprentissage (SA)
1 La RTI 1.3NG du DoD et les systèmes supports Patrice Torguet IRIT.
Objectifs À la fin de ce cours, vous serez capables de :
CALENDRIER-PLAYBOY 2020.
Programmation Système et Réseau (sous Linux)
SYSTEMES D’EXPLOITATION
Gérer la sécurité des mots de passe et les ressources
La notion de type revisitée en POO
SYSTÈME D’EXPLOITATION I
Gestion de processus Corrigé TD 1 EFREI I
AFPA CRETEIL 1-1 Windows NT Environnement Windows NT Chapitre 1.
Bonjour!! Pour être prêt: Répondez aux questions:
To practice: Quantities Un, une, des, de Du, de la, de l’, de Le, la, l’, les.
SYSTÈME D’EXPLOITATION I
Programmation parallèle
Programmation Système et Réseau
Processus Légers. Rappel sur le fork() fork() Processus 1 Pile Data Text Processus 2 Pile Data Text.
Pthread Ordonnancement. #define _MULTI_THREADED #include #ifndef _CHECK_H #define _CHECK_H /* headers used by a majority of the example program */ #include.
Capocasale & Droz. Exécuter une fonction en parallèle Utilisation de plusieurs fonctions en parallèles pour obtenir un résultat Accès à des ressources.
1 UNIX AVANCE Yves PAGNOTTE – Janvier – LES PROCESSUS SOUS UNIX.
1 Module 3 - Fils (Threads) Lecture: Chapitre 4 (Silberschatz) Objectif:  Comprendre le concept de fils et sa relation avec le processus  Comprendre.
Transcription de la présentation:

5.1 URDL22005 Systèmes dexploitation Threads Vue dEnsemble Modèles de Multithreading Problèmes des Threads Pthreads Threads Windows XP Threads Linux Threads Java

5.2 URDL22005 Systèmes dexploitation Processus à Un ou Plusieurs Threads

5.3 URDL22005 Systèmes dexploitation Avantages Réactivité Partage de Ressources Economie Utilisation dArchitectures MP

5.4 URDL22005 Systèmes dexploitation Threads Utilisateur Gestion des threads faite par la bibliothèque au niveau utilisateur Trois bibliothèques de threads assez utilisées: Pthreads Threads Java Threads Win32

5.5 URDL22005 Systèmes dexploitation Threads Noyau Supportés par le noyau Exemples Windows XP/2000 Solaris Linux Tru64 UNIX Mac OS X

5.6 URDL22005 Systèmes dexploitation Modèles de Multithreading Plusieurs-à-Un Un-à-Un Plusieurs-à-Plusieurs

5.7 URDL22005 Systèmes dexploitation Plusieurs-à-Un Plusieurs threads utlisateurs attachés à un seul thread noyau Exemples Solaris Green Threads GNU Portable Threads

5.8 URDL22005 Systèmes dexploitation Modèle Plusieurs-à-Un

5.9 URDL22005 Systèmes dexploitation Modèle Un-à-Un Chaque thread utilisateur est attaché à un thread noyau Exemples Windows NT/XP/2000 Linux Solaris 9 et +

5.10 URDL22005 Systèmes dexploitation Modèle Un-à-Un

5.11 URDL22005 Systèmes dexploitation Modèle Plusieurs-à-Plusieurs Permet à plusieurs threads utilisateur dêtre attachés à plusieurs threads noyaux Permet à lOS de créer un nombre suffisant de threads noyau Version de Solaris < 9 Windows NT/2000 avec le package ThreadFiber

5.12 URDL22005 Systèmes dexploitation Modèle Plusieurs-à-Plusieurs

5.13 URDL22005 Systèmes dexploitation Modèle à Deux Niveaux Similaire à P:P, sauf quil permet à un thread utilisateur dêtre lié à un thread noyau Exemples IRIX HP-UX Tru64 UNIX Solaris 8 et -

5.14 URDL22005 Systèmes dexploitation Modèle à Deux Niveaux

5.15 URDL22005 Systèmes dexploitation Questions du Threading Sémantiques des appels système fork() et exec() Suppression dun thread Gestion des signaux Pools de threads Données spécifiques à un thread Activations de lordonnanceur

5.16 URDL22005 Systèmes dexploitation Sémantiques de fork() et exec() Est-ce que fork() duplique seulement le thread appelant ou tous les threads ?

5.17 URDL22005 Systèmes dexploitation Suppression dun Thread Terminaison dun thread avant sa fin Deux approches générales: Terminaison asynchrone termine le thread immédiatement Terminaison différée permet au thread de vérifier périodiquement sil devrait être supprimé

5.18 URDL22005 Systèmes dexploitation Gestion des Signaux Signals are used in UNIX systems to notify a process that a particular event has occurred A signal handler is used to process signals Signal is generated by particular event Signal is delivered to a process Signal is handled Options: Deliver the signal to the thread to which the signal applies Deliver the signal to every thread in the process Deliver the signal to certain threads in the process Assign a specific threa to receive all signals for the process

5.19 URDL22005 Systèmes dexploitation Thread Pools Créer un nombre de threads dans un pool où ils attendent dêtre utilisés Avantages: Il est plus rapide de répondre à une requête avec un thread existant quen créant un nouveau Permet au nombre de threads dans une application de se limiter à la taille du pool

5.20 URDL22005 Systèmes dexploitation Données Spécifiques à un Thread Permet à chaque thread davoir sa propre copie de données Utile quand on na pas le contrôle sur la création dun thread (i.e., en utilisant un pool de threads)

5.21 URDL22005 Systèmes dexploitation Activation de lOrdonnanceur Les modèles P:P et à deux niveaux requièrent le maintien du nombre approprié de threads noyau alloués à lapplication Les activations de lordonnanceur fournissent des upcalls – un mécanisme de communication du noyau vers la bibliothèque de threads Cette communication permet à lapplication le nombre correct de threads noyau

5.22 URDL22005 Systèmes dexploitation Pthreads Un standard POSIX (IEEE c) une API pour la création et la synchronisation des threads LAPI spécifie le comportement dune bibliothèque de threads, limplémentation étant laissée aux développeurs Utilisée dans différents OSs UNIX (Solaris, Linux, Mac OS X)

5.23 URDL22005 Systèmes dexploitation Pthreads int sum; /* this data is shared by the thread(s) */ void *runner(void *param); /* the thread */ main(int argc, char *argv[]) { pthread_t tid; /* the thread identifier */ pthread_attr_t attr; /* set of attributes for the thread */ /* get the default attributes */ pthread_attr_init(&attr); /* create the thread */ pthread_create(&tid,&attr,runner,argv[1]); /* now wait for the thread to exit */ pthread_join(tid,NULL); printf("sum = %d\n",sum); } void *runner(void *param) { int upper = atoi(param); int i; sum = 0; if (upper > 0) { for (i = 1; i <= upper; i++) sum += i; } pthread_exit(0); }

5.24 URDL22005 Systèmes dexploitation Threads Windows Implémente le modèle Un-à-Un Chaque thread comporte Un id Ensemble de registres Piles utilisateur et noyau séparés Espace de stockage de données séparé Lensemble de registres, piles, et lespace de stockage privé constituent contexte dun thread Les structures de données dun thread sont: ETHREAD (executive thread block) KTHREAD (kernel thread block) TEB (thread environment block)

5.25 URDL22005 Systèmes dexploitation Threads Linux Linux parle plutôt de tâches La création de threads se fait à laide de lappel système clone() clone() permet à une tâche fils de partager lespace dadressage de la tâche parent (processus)

5.26 URDL22005 Systèmes dexploitation Threads Threads Les threads Java sont gérés par la JVM Les threads Java peuvent être créés par: Extension de la classe Thread Implémentation de linterface Runnable

5.27 URDL22005 Systèmes dexploitation Extension de la Classe Thread class Worker1 extends Thread { public void run() { System.out.println("I Am a Worker Thread"); } public class First { public static void main(String args[]) { Worker1 runner = new Worker1(); runner.start(); System.out.println("I Am The Main Thread"); }

5.28 URDL22005 Systèmes dexploitation LInterface Runnable public interface Runnable { public abstract void run(); }

5.29 URDL22005 Systèmes dexploitation Implementation de lInterface Runnable class Worker2 implements Runnable { public void run() { System.out.println("I Am a Worker Thread "); } public class Second { public static void main(String args[]) { Runnable runner = new Worker2(); Thread thrd = new Thread(runner); thrd.start(); System.out.println("I Am The Main Thread"); }

5.30 URDL22005 Systèmes dexploitation Etats des Thread Java

5.31 URDL22005 Systèmes dexploitation Lier des Threads class JoinableWorker implements Runnable { public void run() { System.out.println("Worker working"); } public class JoinExample { public static void main(String[] args) { Thread task = new Thread(new JoinableWorker()); task.start(); try { task.join(); } catch (InterruptedException ie) { } System.out.println("Worker done"); }

5.32 URDL22005 Systèmes dexploitation Suppression dun Thread Thread thrd = new Thread (new InterruptibleThread()); Thrd.start();... // now interrupt it Thrd.interrupt();

5.33 URDL22005 Systèmes dexploitation Suppression dun Thread public class InterruptibleThread implements Runnable { public void run() { while (true) { /** * do some work for awhile */ if (Thread.currentThread().isInterrupted()) { System.out.println("I'm interrupted!"); break; } // clean up and terminate }

5.34 URDL22005 Systèmes dexploitation Données Spécifiques à un Thread class Service { private static ThreadLocal errorCode = new ThreadLocal(); public static void transaction() { try { /** * some operation where an error may occur */ catch (Exception e) { errorCode.set(e); } /** * get the error code for this transaction */ public static Object getErrorCode() { return errorCode.get(); }

5.35 URDL22005 Systèmes dexploitation Données Spécifiques à un Thread class Worker implements Runnable { private static Service provider; public void run() { provider.transaction(); System.out.println(provider.getErrorCode()); }

5.36 URDL22005 Systèmes dexploitation Problème du Producteur-Consommateur public class Factory { public Factory() { // first create the message buffer Channel mailBox = new MessageQueue(); // now create the producer and consumer threads Thread producerThread = new Thread(new Producer(mailBox)); Thread consumerThread = new Thread(new Consumer(mailBox)); producerThread.start(); consumerThread.start(); } public static void main(String args[]) { Factory server = new Factory(); }

5.37 URDL22005 Systèmes dexploitation Thread Producteur class Producer implements Runnable { private Channel mbox; public Producer(Channel mbox) { this.mbox = mbox; } public void run() { Date message; while (true) { SleepUtilities.nap(); message = new Date(); System.out.println("Producer produced " + message); // produce an item & enter it into the buffer mbox.send(message); }

5.38 URDL22005 Systèmes dexploitation Thread Consommateur class Consumer implements Runnable { private Channel mbox; public Consumer(Channel mbox) { this.mbox = mbox; } public void run() { Date message; while (true) { SleepUtilities.nap(); // consume an item from the buffer System.out.println("Consumer wants to consume."); message = (Date)mbox.receive(); if (message != null) System.out.println("Consumer consumed " + message); }