Processus / Threads Ordonnancement

Documents pareils
Informatique industrielle A Systèmes temps-réel J.F.Peyre. Partie I : Introduction

Cours A7 : Temps Réel

Runtime. Gestion de la réactivité des communications réseau. François Trahay Runtime, LaBRI sous la direction d'alexandre Denis Université Bordeaux I

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

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

Threads. Threads. USTL routier 1

Cours de Systèmes d Exploitation

NIVEAU D'INTERVENTION DE LA PROGRAMMATION CONCURRENTE

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

Partie 7 : Gestion de la mémoire

Prise en compte des ressources dans les composants logiciels parallèles

REALISATION d'un. ORDONNANCEUR à ECHEANCES

Introduction à la programmation concurrente

Julien MATHEVET Alexandre BOISSY GSID 4. Rapport RE09. Load Balancing et migration

Exécutif temps réel Pierre-Yves Duval (cppm)

Projet Active Object

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

GUIDE PRATIQUE déplacements professionnels temporaires en France et à l étranger

Ordonnancement temps réel

La technologie Java Card TM

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

NFP 121. Java et les Threads. Présentation : Thierry Escalarasse Mai 2007

Virtualisation sous Linux L'age de raison. Daniel Veillard

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

Exercices INF5171 : série #3 (Automne 2012)

Network musical jammin

Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données

Rappel sur les bases de données

Ordonnancement temps réel

Evaluation des performances de programmes parallèles haut niveau à base de squelettes

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

Utilisez Toucan portable pour vos sauvegardes

MegaStore Manager ... Simulation de gestion d un hypermarché. Manuel du Participant

Etude de l ENT de l Université de Paris 5. Mise en place d outils de suivi de la charge de l ENT (monitoring)

Utilisation du plugin AppliDis SLB (Smart Load Balancing)

RENDRE VOS APPLICATIONS JAVA PLUS EFFICACES Ce qu'il faut savoir

Un ordonnanceur stupide

as Architecture des Systèmes d Information

Integrated Modular Avionic

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java

Conditions Générales d Intervention du CSTB pour la délivrance d une HOMOLOGATION COUVERTURE

Introduction au temps réel

Introduction à la Programmation Parallèle: MPI

Programmation d Applications Concurrentes et Distribuées (INF431)

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Synchro et Threads Java TM

Évaluation et implémentation des langages

Linux embarqué Retour d expérience et temps réel. Denis Coupvent-Desgraviers

Modélisation des interfaces matériel/logiciel

Introduction aux Systèmes et aux Réseaux

RETRAITE PATRIMOINES PRIVES Le Plan d Epargne Retraite Populaire de Cholet Dupont

VMWare Infrastructure 3

Atelier C TIA Portal CTIA06 : programmation des automates S7-300 Blocs d organisation

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

LOGO Smartphones, tablettes, et autres gadgets quel impact sur notre métier d ASR

Chapitre 2 : Abstraction et Virtualisation

Chapitre 1 : Introduction aux bases de données

LISTE D OPTIONS DE LICENCE

IFT Systèmes d exploitation - TP n 1-20%

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

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

Programmation temps-réel Cours 1 et 2 Introduction et ordonnancement

La gestion des exceptions

Plan global Outils de développement et compilation. Plan. Objectifs des outils présentés. IDE, GCC/Clang, ASAN, perf, valgrind, GDB.

Vérifier la qualité de vos applications logicielle de manière continue

Eclipse atelier Java

Éléments de programmation et introduction à Java

Une tasse de café fumante est

Segmentation d'images à l'aide d'agents sociaux : applications GPU

Initiation à JAVA et à la programmation objet.

I-JVM: une machine virtuelle Java pour l isolation de composants dans OSGi

Exécution des instructions machine

TAI049 Utiliser la virtualisation en assistance et en dépannage informatique TABLE DES MATIERES

TP1 : Initiation à Java et Eclipse

Introduction aux SGBDR

Solution A La Gestion Des Objets Java Pour Des Systèmes Embarqués

Chapitre I Notions de base et outils de travail

Architecture et Extensions d ArcGIS Server

La plate-forme DIMA. Master 1 IMA COLI23 - Université de La Rochelle

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

Concept de machine virtuelle

Web Tier : déploiement de servlets

Passage des documents de compte électroniques à la norme ISO 20022

Machines virtuelles Cours 1 : Introduction

Cours de Base de Données Cours n.12

Initiation au HPC - Généralités

Projet IGGI. Infrastructure pour Grappe, Grille et Intranet. Fabrice Dupros. CASCIMODOT - Novembre Systèmes et Technologies de l Information

Systèmes d Exploitation - ENSIN6U3. Aix-Marseille Université

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Le modèle client-serveur

Présentation d'un MOM open-source

Guide de l administrateur CorpoBack

Evolution des SI à l heure du Cloud

CAHIER DE S CHARGE S Remote Workload Manager

L2T SMS RESELLER MANUEL D UTILISATION ESPACE CLIENT AVERTISSEMENT

Analyse de performance, monitoring

L art d ordonnancer. avec JobScheduler. François BAYART

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB Olivier Augereau Formation UML

Transcription:

Processus / Threads Ordonnancement 1

Plan Concept de thread Etats d'une thread Ordonnancement Inversion de priorité 2

Rappel Notion Processus Entité dynamique Contexte d'exécution d'un programme séquentiel Entité active opérant sur son environnement en exécutant un programme Etat courant de la machine virtuelle exécutant le programme associé au processus Inclut état [d'une partie] de la machine physique Entité d'attribution du CPU 3

Concept de Thread Notion combinant avantages : Exécution parallèle Partage code et données applicatifs communs Facile à mettre en oeuvre Programmable Contrôlable Configurable Efficace et "scalable" 4

Processus Thread Processus ne convient pas Contexte lourd, coûteux à créer et à détruire Pas efficace (changement de contexte lent) Contexte mémoire important Partage de données "pas naturel" Pas intégré dans langage de programmation Offerts par services OS complexes, pas souples Programmation difficile, non contrôlable 5

Thread Objet Programmable Dérivée de notion de processus Unité d'exécution concurrente dans un même programme applicatif ("Light-weight process") Introduit notion de programme dit "multi-threads" Threads partagent espace d'adressage mémoire du processus "englobant" Code, données globales, tas Exécutent même code ou fonctions dédiées Partagent tout ou partie ressources OS Contexte de travail privé alloué par application 6

Thread Objet OS Unité d'exécution indépendante Pile(s) d'exécution(s) Mode utilisateur du CPU (pile applicative) Mode superviseur du CPU (pile système) Contexte CPU (registres) Etat courant et attributs d'ordonnancement Identificateur Entité d'attribution d'un CPU 7

Processus Multi-Threads Adresse haute Pile thread1 Taille max. fixe Pile thread2 Taille max. fixe Pile thread3 Taille max. fixe Tas (heap) malloc/free Taille variable Adresse basse Données Code Tailles fixes 8

Unix Thread et OS POSIX threads Unix, Linux Light-Weight Process (LWP) - Solaris Mach/Mac-OS - Apple Systèmes temps-réels ChorusOS VxWorks (WindRiver) QNX, OSEK, Nucleus, etc... 9

Pile(s) d'exécution des threads Pile système Pile utilisée pour exécution des appels système Allouée/libérée par système Pile applicative Pile utilisée pour exécution du code applicatif Allouée/libérée par noyau (cas par défaut) application 10

Libération de la pile applicative... Thread toujours créée par une autre thread Alloue mémoire pour pile applicative stack de la nouvelle thread Appelle OS pour créer la thread Threads se détruisent en général elles-mêmes, mais : Pas de retour de l'appel système de destruction! La thread qui se suicide ne peut pas libérer sa pile applicative avant d'appeller l'os pour être détruite les 2 operations doivent aussi être exécutées par une autre thread 11

Light-Weight Threads Threads niveau applicatif Implémentées par fonctions de bibliothèque Run-time langage programmation Pas de contexte OS Exécutées dans contexte thread(s) OS Appels système bloquants Bloque capacité d'exécution de toutes les LWT Sauf si pool de threads géré par OS (Solaris) 12

Threads et Langages de programmation Objet thread intégré dans langage ADA : objets de type Task Java : objets de la Classe Thread Implique support autres notions (synchro, etc.) Support concepts OS dans un langage +facile, +maîtrisé => +fiable (soit-disant...) -souple, - clair (mélange niveaux appli et OS) Comportement dépendant OS => Pbs portabilité 13

Plan Concept de thread Etats d'une thread Ordonnancement Inversion de priorité 14

Etats d'une Thread courante création préemption élection attente événement (de fin d'e/s) suspendue activation mort prête bloquée réveil (en fin d'e/s) tuée destruction détruite 15

Transitions états d'une thread (1) Courante -> bloquée (mise en attente) Thread doit arrêter son exécution pour attendre l'arrivée d'un événement (fin d'e/s) => libère volontairement [ressource] CPU => OS alloue CPU à thread prête la + prioritaire Bloquée -> prête (réveil) Thread réveillée [par événement posté] par une [fonction d'] interruption (fin d'e/s) la thread courante (client/serveur) Rejoint groupe des demandeurs ressource CPU 16

Transitions états d'une thread (2) Prête -> élue (élection) CPU attribué à thread prête la + prioritaire pour donner le CPU à thread + prioritaire => thread préemptée par OS Élue -> prête (préemption) CPU retiré à la thread courante pour être attribué à thread + prioritaire Point(s) de préemption d'un OS Ordonnancement des threads 17

Points de Préemption du Système Après réveil thread + prioritaire thread courante Quand/où OS préempte thread courante Coarse-Grain system Pas de préemption dans le noyau Préemption au retour d'un appel système Dépend durée exécution appel système Fine-Grain system Préemption dans le noyau Immédiate 18

Plan Concept de thread Etats d'une thread Ordonnancement Inversion de priorité 19

Ordonnancement Choisir prochaine thread à exécuter Systèmes interactifs / Serveurs Threads variables, événements non prévisibles Partager ressource CPU dynamiquement Systèmes temps réel (embarqués, multi-médias) Temps-réel "dur" Garanti échéances de toutes les tâches Implique connaisance de leurs [pires] durées d'exécution Temps-réel "mou" Essai de garantir les échéances 20

Politiques d'ordonnancement Critères pour choisir prochaine thread à exécuter Réduire temps moyen d'attente Garantir temps de réponse de threads dites + prioritaires Eviter phénomènes de famine Garantir un minimum [de temps CPU] à toutes Compromis avec contraintes Optimiser taux utilisation [autres] ressources Limiter fréquence changements de contexte (coût) Mise en oeuvre simple, maîtrisable, adaptable... 21

Classes d'ordonnancement A l'ancienneté premier arrivé, premier servi ("FIFO") Par priorités Fixes, imposées par applications Variables, modifiées par OS : Durée d'attente écoulée [Prix des] ressources allouées à la thread Par quantum de temps (durée maximale) Par échéances 22

Méthodes d'ordonnancement Gestion de l'ensemble des threads prêtes Méthode du tourniquet ("Round-Robin") Une file d'attente par priorité FIFO + [re]mise en attente en fin de la file Priorité thread diminue après utilisation quantum Appliquée en mode applicatif Distinction entre plusieurs niveaux de priorités Threads temps-réelles Threads ordinaires 23

Posix Threads POSIX API pour programmes multi-threads Portable entre OS Restrictions concernant ressources OS partagées (fichiers ouverts, répertoire courant, etc) 3 classes d'ordonnancement (scheduling) SCHED_FIFO : temps-réel SCHED_RR : préemptible SCHED_OTHER : ordinaire (non temps-réel) 24

Plan Concept de thread Etats d'une thread Ordonnancement Inversion de priorité 25

Inversion de Priorité Phénomène faisant qu'une thread de priorité inférieure est exécutée avant une autre thread plus prioritaire Conditions : Threads partagent dynamiquement une autre ressource exclusive [que le CPU] Allocation ressource exclusive découplée de celle du CPU Threads de priorités fixes 26

Inversion de Priorité (2) Prio(T1) < Prio(T2) < Prio(T3) Séquence d'opérations T1 acquiert accès exclusif à ressource R T1 préemptée par T3 T3 demande accès exclusif à ressource R T3 bloquée car R acquise par T1 T1 élue T1 préemptée par T2 => inversion de priorité entre T2 et T3 27

Enregistre thread propriétaire de la ressource Quand thread + prioritaire tente acquérir ressource : Attribue à thread propriétaire priorité thread demandeuse Met en attente thread demandeuse En FIFO (pas de famine) Par priorité Héritage de Priorité Thread propriétaire libère ressource : Transmet ressource à prochaine thread en attente Restaure priorité initiale de l'ex thread propriétaire 28

Héritage de Priorité (2) T1 acquiert ressource R T1 préemptée par T3 T3 demande ressource R T3 bloquée car R acquise par T1 Attribue prio(t3) à T1 T1 élue avec priorité T3 T1 libère ressource R Ressource R transmise à T3 T1 reprend sa priorité initiale T3 élue 29

Augmente temporairement priorité de la thread propriétaire de la ressource à un maximum fixe (le "plafond") Évite préemptions inutiles Valeur du plafond déterminée par : Connaisance des threads demandeuses Criticité de la ressource acquise etc... Priorité Plafond 30