NOTIONS DE BASE DES SYSTÈMES TEMPS-RÉEL Sujets Concepts de processus/thread concurrents –Windows NT et la programmation temps réel Lectures: Chapitres.

Slides:



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

Module Systèmes d’exploitation
GEF 435 Principes des systèmes d’exploitation
Module 5 : Implémentation de l'impression
Chapitre annexe. Récursivité
Le Concept du programme enregistré
MODIFICATION DES CODES DETERMINES PAR DES TABLE - PROCEDURES 6 septembre 2007 (Joël Martellet, WMO, World Weather Watch, Data Processing and Forecasting.
Synchronisation des processus père - fils
Module Systèmes dexploitation Chapitre 6 Communication Interprocessus Partie III École Normale Supérieure Tétouan Département Informatique
GEF 435 Principes des systèmes dexploitation Ordonnancement partie I (Tanenbaum 2.5)
GEF 435 Principes des systèmes d’exploitation
GEF 435 Principes des systèmes d’exploitations
GEF 435 Principes des systèmes dexploitation Communication Interprocessus (CIP) II (Tanenbaum 2.3)
GEF 435 Principes des systèmes dexploitation Communication Interprocessus (CIP) III (Tanenbaum 2.3)
GEF 435 Principes des systèmes dexploitation Appels de système (Tanenbaum 1.6)
TP 7.1 synchronized et join Écrire un programme Java qui crée 1000 threads et maintient un compteur nb du nombre de threads créés jusque-là. Le thread.
Exécutif Temps réel. Limitation des système classiques Rappels Mise en œuvre lourde des communications entre processus Problème de prédictibilité avec.
Le Concept du programme enregistré
INTRODUCTION.
Jc/md/lp-01/05Trains_presentation1 Threads et Synchronisation Application train Présentation.
Assistance à distance Parfois on se sent bien seul face à un problème informatique surtout si on n’est qu’un simple utilisateur. Lorsqu'un problème survient.
Les sous-programmes Chapitre n° 5: Objectifs : Activité:
Systèmes d'exploitations Les redirections d'entrées/sorties GRARI Mounir ESTO Année 2011.
ManageEngine ADManager Plus 6
Synchronisation et communication entre processus
1 Threads et Lightweight Processes Chapitre 5 En français on utilise parfois flots ou fils pour threads. Votre manuel préfère le mot anglais thread : terminologie.
Système d’exploitation
Course Critique Race Condition
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Cours de CPI Philippe Bancquart CPI 2005.
Module 4 : Création et gestion de comptes d'utilisateur
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)
Manipulation de formulaires en Javascript
Les Fonctions. Définir une fonction Sections de code indépendantes que lon peut appeler à nimporte quel moment et dans nimporte quel ordre. Bout de code.
Introduction à la programmation I Fonctions Structures de contrôle Structures de données (arrays simples et indexés) Variables locales et globales.
Programmation concurrente
Module 8 : Maintenance des logiciels à l'aide des services SUS
Module 2 : Préparation de l'analyse des performances du serveur
Module 3 : Création d'un domaine Windows 2000
Chapitre 3 Interblocages 3.1. Ressources
NOTIONS DE BASE DES SYSTÈMES TEMPS-RÉEL
Programme de baccalauréat en informatique Programmation Orientée Objets IFT Thierry EUDE Module 6. Gestion des erreurs et des exceptions : Fonctionnement.
Chapitre 6 : Synchronisation des processus et des fils
Animateur : Med HAIJOUBI
JavaScript Nécessaire Web.
Exploration de la programmation android Formation Assurer par: Club FreeWays Réalisé par: BOUHJJA Lamia.
Pourquoi est-il nécessaire d'installer de nouveaux logiciels sur votre ordinateur ? J'exclus de cette présentation l'installation de nouveaux matériels.
INTRODUCTION.
Module 8 : Surveillance des performances de SQL Server
1 Septi è me journ é e La programmation impérative.
Gestion de processus Corrigé TD 1 EFREI I
Travailler avec des processus
Structures de données avancées : Concepts réseaux et protocole de communication. D. E ZEGOUR Institut National d ’Informatique.
Plan Définitions et exemples Composants de cluster
Programmation objet La base.
Créer des packages.
Interactions entre Processus
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Objets des catégories.
5ième Classe (Mercredi, 19 octobre) Prog CSI2572.
Programmation Système et Réseau
ISBN Chapitre 10 L'implémentation des sous- programmes.
Variables et environnement utilisateur W. Barhoumi.
Cours LCS N°4 Présenté par Mr: LALLALI
NOTIONS DE BASE DES SYSTÈMES TEMPS-RÉEL Sujets Concepts de processus/thread concurrents –Windows NT et la programmation temps réel –Synchronisation et.
En route vers le déploiement . . .
Système d’exploitation
Cours Système LI324 Les Interruptions Cours Système LI324
Présentation de Qt Iris 1
Algorithmique Boucles et Itérations
A. Lebrun. Principe de base Dans la logique combinatoire, les sorties dépendent des différentes entrées et peuvent être calculées par l’algèbre de Boole.
Chapitre 12 Surveillance des ressources et des performances Module S41.
Transcription de la présentation:

NOTIONS DE BASE DES SYSTÈMES TEMPS-RÉEL Sujets Concepts de processus/thread concurrents –Windows NT et la programmation temps réel Lectures: Chapitres 3 et 4 (Real-Time Systems, Liu) INF-1019 Programmation en temps réel

Concepts de processus/thread concurrents Processus/thread concurrents WINDOWS NT (2000) (API WIN32) –Synchronisation des thread »Les principaux objets de synchronisation de l'API WIN32 sont les suivants: »OBJETS DE SYNCHRONISATION: »Les objets du noyau suivants sont utilisées pour synchroniser les threads (Richter p334): fichiers, entrée de console, notification de modification de fichier, mutex, sémaphore, événements, horloge de temporisation (Windows NT 4 et 2000). »Chaque objet peut se trouver à n'importe quel moment dans l'un des états suivants: signalé ou non-signalé. »Les threads peuvent être mis en veille jusqu'à ce qu'un objet soit signalé.

Concepts de processus/thread concurrents Processus/thread concurrents WINDOWS NT (2000) (API WIN32) –Synchronisation des thread »Les principaux objets de synchronisation de l'API WIN32 sont les suivants: »OBJETS DE SYNCHRONISATION: »Notez qu'un processus est signalé lorsqu'il se termine, même chose pour un thread. »Voir l’exemple CritSect ou le thread principal attend que les deux autres threads soit signalés (terminés) pour se terminer lui-même. »Les threads font appel à deux fonctions pour se mettre en sommeil en attendant que les objets du noyau soient signalés: WaitForSingleObject() et WaitForMultipleObjects() (Richter p 336).

Concepts de processus/thread concurrents Processus/thread concurrents WINDOWS NT (2000) (API WIN32) –Synchronisation des thread »Les principaux objets de synchronisation de l'API WIN32 sont les suivants: »OBJETS DE SYNCHRONISATION: »La fonction WaitForSingleObject() prend comme paramètre le handle de l'objet qui réveillera le thread, et un paramètre de "time- out" qui indique le temps en milliseconde, que le thread est prêt à attendre avant de se réveiller et de poursuivre son exécution. »Vous pouvez passer deux valeurs distinctes du paramètre spécial de "time out", soit 0 qui indique que l'on ne veut pas attendre, et INFINITE qui indique que l'on est prêt à attendre indéfiniment. (Richter p336).

Concepts de processus/thread concurrents Processus/thread concurrents WINDOWS NT (2000) (API WIN32) –Synchronisation des thread »Les principaux objets de synchronisation de l'API WIN32 sont les suivants: »OBJETS DE SYNCHRONISATION: »WaitForMultipleObject() prend quatre paramètres: soit le nombres d'objets qui peuvent réveiller un thread donné, un pointeur sur une table contenant la liste des handles des objets, un booléen qui indique si un thread attend que tous les objets soit signalés (TRUE) ou si seulement un d'entre eux réveillera le thread (FALSE). Vient ensuite le paramètre de "timeout". (Richter p338)

Concepts de processus/thread concurrents Processus/thread concurrents WINDOWS NT (2000) (API WIN32) –Synchronisation des thread (Projet CritSect: Procédure WinMain()

Concepts de processus/thread concurrents Processus/thread concurrents WINDOWS NT (2000) (API WIN32) –Synchronisation des thread (Projet CritSect: Procédure Dlg_OnInitDialog())

Concepts de processus/thread concurrents Processus/thread concurrents WINDOWS NT (2000) (API WIN32) –Synchronisation des thread (Projet CritSect: Procédure Dlg_OnInitDialog())

Concepts de processus/thread concurrents Processus/thread concurrents WINDOWS NT (2000) (API WIN32) –Synchronisation des thread (Projet CritSect: Procédure Dlg_OnInitDialog())

Concepts de processus/thread concurrents Processus/thread concurrents WINDOWS NT (2000) (API WIN32) –Synchronisation des thread (Projet CritSect: Procédure AcquisitionThread())

Concepts de processus/thread concurrents Processus/thread concurrents WINDOWS NT (2000) (API WIN32) –Synchronisation des thread (Projet CritSect: Procédure AcquisitionThread())

Concepts de processus/thread concurrents Processus/thread concurrents WINDOWS NT (2000) (API WIN32) –Synchronisation des thread (Projet CritSect: Procédure DisplayThread())

Concepts de processus/thread concurrents Processus/thread concurrents WINDOWS NT (2000) (API WIN32) –Synchronisation des thread (Projet CritSect: Procédure Dlg_OnCommand())

Concepts de processus/thread concurrents Processus/thread concurrents WINDOWS NT (2000) (API WIN32) –Synchronisation des thread (Projet CritSect: Procédure Dlg_OnCommand())

Concepts de processus/thread concurrents Processus/thread concurrents WINDOWS NT (2000) (API WIN32) –Synchronisation des thread (Projet CritSect: Procédure Dlg_OnCommand())

Concepts de processus/thread concurrents Processus/thread concurrents WINDOWS NT (2000) (API WIN32) –Synchronisation des thread (Projet CritSect: Procédure Dlg_OnCommand())

Concepts de processus/thread concurrents Processus/thread concurrents WINDOWS NT (2000) (API WIN32) –Synchronisation des thread »Les principaux objets de synchronisation de l'API WIN32 sont les suivants: »OBJETS DE SYNCHRONISATION: »MUTEX : »Les mutex ressemblent aux sections critiques mais peuvent êtres utilisés pour synchroniser l'accès aux données à travers des processus multiples. Un mutex est créé avec la fonction CreateMutex() (Richter p340). »Il faut créer le mutex avant de créer les threads qui l'utiliseront pour se synchroniser avec les fonctions WaitForSingleObject() et WaitForMultipleObjects(). »Le programme Mutex, fournit en exemple est une version modifiée du programme CritSect qui utilise l'objet de synchronisation Mutex.

Concepts de processus/thread concurrents Processus/thread concurrents WINDOWS NT (2000) (API WIN32) –Synchronisation des thread (Projet Mutex: Procédure WinMain())

Concepts de processus/thread concurrents Processus/thread concurrents WINDOWS NT (2000) (API WIN32) –Synchronisation des thread (Projet Mutex: Procédure OnInitDialog())

Concepts de processus/thread concurrents Processus/thread concurrents WINDOWS NT (2000) (API WIN32) –Synchronisation des thread (Projet Mutex: Procédure AcquisitionThread())

Concepts de processus/thread concurrents Processus/thread concurrents WINDOWS NT (2000) (API WIN32) –Synchronisation des thread (Projet Mutex: Procédure AcquisitionThread())

Concepts de processus/thread concurrents Processus/thread concurrents WINDOWS NT (2000) (API WIN32) –Synchronisation des thread (Projet Mutex: Procédure DisplayThread())

Concepts de processus/thread concurrents Processus/thread concurrents WINDOWS NT (2000) (API WIN32) –Synchronisation des thread »Les principaux objets de synchronisation de l'API WIN32 sont les suivants: »OBJETS DE SYNCHRONISATION: »SEMAPHORE: »Les sémaphores sont utilisés comme compteur de la disponibilité d’une ressource. »Lorsque qu’un thread demande une ressource en utilisant un sémaphore, le système d'exploitation vérifie si la ressource est disponible, décrémente le compte de ressources disponibles sans laisser la possibilité à un autre thread d'interférer. »Les sémaphores sont le plus souvent utilisés pour limiter l'accès concurrentiel, à un objet, ou à une partie de code (C'est dire de limiter le nombre de thread pouvant exécuter la même fonction) ou encore limiter l'accès à des ressources telles que des ports série.

Concepts de processus/thread concurrents Processus/thread concurrents WINDOWS NT (2000) (API WIN32) –Synchronisation des thread »Les principaux objets de synchronisation de l'API WIN32 sont les suivants: »OBJETS DE SYNCHRONISATION: »SEMAPHORE: »Comme plusieurs threads peuvent modifier le compte d'un sémaphore, il n'est donc pas considéré comme la propriété d'un thread, contrairement aux sections critiques et mutex. »Lorsqu'on crée un sémaphore avec la fonction CreateSemaphore() on doit lui indiquer sa valeur initiale et son compte maximum (Richter p358). »Le programme Semapho.c, fournit en exemple est une version modifiée du programme Mutex qui utilise l'objet de synchronisation semaphore. Dans cet exemple il n'y a qu'une ressource qui est constituée des deux variables globales contenant le numéro séquentiel de la lecture et la valeur lue.

Concepts de processus/thread concurrents Processus/thread concurrents WINDOWS NT (2000) (API WIN32) –Synchronisation des thread (Projet Semaphore: Procédure WinMain())

Concepts de processus/thread concurrents Processus/thread concurrents WINDOWS NT (2000) (API WIN32) –Synchronisation des thread (Projet Semaphore: Procédure Dlg_OnInitDialog())

Concepts de processus/thread concurrents Processus/thread concurrents WINDOWS NT (2000) (API WIN32) –Synchronisation des thread (Projet Semaphore: Procédure AcquisitionThread())

Concepts de processus/thread concurrents Processus/thread concurrents WINDOWS NT (2000) (API WIN32) –Synchronisation des thread (Projet Semaphore: Procédure AcquisitionThread())

Concepts de processus/thread concurrents Processus/thread concurrents WINDOWS NT (2000) (API WIN32) –Synchronisation des thread (Projet Semaphore: Procédure DisplayThread())

Concepts de processus/thread concurrents Processus/thread concurrents WINDOWS NT (2000) (API WIN32) –Synchronisation des thread »Les principaux objets de synchronisation de l'API WIN32 sont les suivants: »OBJETS DE SYNCHRONISATION: »MINUTERIE: »Les horloges de temporisation sont des objets du noyau qui se signalent eux-même à une heure prédéterminée (Richter p431). »Pour créer une horloge de temporisation il suffit d'appeler la fonction CreateWaitableTimer(). »Une fois créé, on configure l'horloge de temporisation avec SetWaitableTimer(). Le 2ième paramètre de cette fonction (*pDueTime) indique l'heure ou l'on veut que l'horloge s'active pour la première fois, et le 3ième paramètre (lPeriod) indique la période de temporisation pour les fois suivantes.

Concepts de processus/thread concurrents Processus/thread concurrents WINDOWS NT (2000) (API WIN32) –Synchronisation des thread »Les principaux objets de synchronisation de l'API WIN32 sont les suivants: »OBJETS DE SYNCHRONISATION: »MINUTERIE: »Par exemple on peut configurer l'horloge pour quelle s'active le 4 mars 2001 et quelle se réactive ensuite à tous les 6 heures d'intervalles (Richter p432). »Si vous donner une valeur négative (en nanosecondes) au 2ième paramètre, vous indiquez à la fonction de commencer à temporiser à partir de l'appel de SetWaitableTimer() pour le nombre de nanosecondes spécifiées (Richter p434). »Les horloges utilisateurs (définies avec SetTimer() ) ne sont pas implémentées dans le noyau du système d'exploitation. Donc, les horloges de temporisation consomment moins de ressources CPU que les horloges utilisateurs.

Concepts de processus/thread concurrents Processus/thread concurrents WINDOWS NT (2000) (API WIN32) –Synchronisation des thread »Les principaux objets de synchronisation de l'API WIN32 sont les suivants: »OBJETS DE SYNCHRONISATION: »MINUTERIE: »Les horloges utilisateurs génèrent des messages WM_TIMER qui reviennent au thread qui a appelé SetTimer() (Richter p437). »Ainsi un seul thread reçoit le message lorsque l'horloge utilisateur arrive à la fin de son temps. »Cependant, plusieurs threads peuvent attendre sur une horloge de temporisation. Le message WM_TIMER envoyé par les horloges utilisateur a cependant le désavantage d'être toujours de basse priorité. De plus, les intervalles de temps entre chaque événements (message WM_TIMER) deviennent imprécis lorsque l'intervalle de temps requis est inférieur à 100 millisecondes. (Richter p269).

Concepts de processus/thread concurrents Processus/thread concurrents WINDOWS NT (2000) (API WIN32) –Synchronisation des thread »Les principaux objets de synchronisation de l'API WIN32 sont les suivants: »OBJETS DE SYNCHRONISATION: »SUSPENSION DE THREAD »Comme nous l'avons vu, WaitForSingleObject() et WaitForMultipleObject() sont les fonctions les plus souvent utilisées par les threads pour se suspendre (Richter p438). » D'autres fonctions existent et la plus simple est certainement Sleep() qui suspend le thread pour un laps de temps spécifié en paramètre (millisecondes). »Il y a aussi les Entrée/Sortie asynchrones, les fonctions WaitForInputIdle(), MsgWaitForMultipleObjects(), WaitForDebugEvent(), SignalObjectAndWait() supportées seulement par Windows NT4/2000 qui signalent un objet du noyau (mutex, sémaphore etc.) et se met en attente sur un autre objet.