Cours 4
31 pages
Français
Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres
31 pages
Français
Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres

Description

Cours 4 : Multi-threading-Utiliser des threads : la classe Thread et l'interface Runnable- Pas un cours système donc pas de gestion de partage des ressources, de la concurrence,...Attention : Transparents à TROUS….F. Gayral 1‏Rappel : multi-tâches multi-tâches : exécution de plusieurs processus simultanément (Windows NT, Unix...). Un processus est un programme en cours d'exécution .  L’ordonnanceur distribue le temps CPU entre les processus Un processus peut être dans différents états.  En exécution (running) : a le processeur Prêt : le processus est prêt à s'exécuter, mais n'a pas le processeur (celui-ci est occupé par un autre processus en exécution) Bloqué : en attente de ressource ou en sommeil F. Gayral 2états d’un processus et transitionsUn processus passe de l’état 'en Un processus passe de exécution' à l’état 'Bloqué' : l’état 'En exécution' à ' - S'il reçoit l'ordre de dormir l’état 'Prêt' s'il a épuisé - s’il a besoin d’une ressource non son quantumdisponibleUn processus passe de l’état 'Prêt' à 'En exécution' si l'ordonnanceur lui donne la mainUn processus passe de l’état 'Bloqué à' l’état 'Prêt' :- Si son temps de sommeil est épuisé- Si la ressource qu’il attendait F. Gayral 3s’est libéréeRappel : multi-threads Un thread ("processus léger") est un processus à l'intérieur d'un processus.  multi-threading : exécution à l’intérieur d’un processus de plusieurs sous-tâches (exécution concurrente de threads) ...

Informations

Publié par
Nombre de lectures 53
Langue Français

Extrait

Cours 4 : Multi-threading
-Utiliser des threads: la classe Thread et l'interface Runnable
- Pas un cours système donc pas de gestion de partage des ressources, de la concurrence,...
Attention : Transparents à TROUS….
F. Gayral
1
Rappel : multi-tâches
processus
multi-tâches: exécution de plusieurs simultanément (Windows NT, Unix...). Un processus est unprogramme en cours d'exécution. distribue le temps CPU entre les processusL’ordonnanceur
Un processus peut être dans différents états.
Enexécution(running) : a le processeur
Prêt: le processus est prêt à s'exécuter, mais n'a pas le
processeur (celui-ci est occupé par un autre processus en
exécution)
+
Blo ué: en attente de ressource ou en sommeil qF. Gayral
2
dormir  rdre de  aebosni- s i lsoesceuru d rneinopelbnon sid rpcoU ns paessude lsse E' tatétucéxe n ' àn'iot taé l
3
Un processus passe de l’état 'Bloqué à' l’état 'Prêt' : - Si son temps de sommeil est épuisé Si la ressource qu’il attendait -s’est libérée
états d’un processus et transitions
F. Gayral
Un processus p l’état 'Prêt' à 'En exécution'si l'ordonnanceur lui donne la main
uq nutnasiupos éils' é arê'P  t'ss eed am passsusroceUn pçoit l'o S'il reqoéu '-:téta' lB' onlà xé eticutaténe' d esl e
Rappel : multi-threads
Un thread ("processus léger") est un processus à l'intérieur d'un processus.
multi-threading: exécution à l’intérieur d’un processus de plusieurs sous-tâches (exécution concurrente de threads)
Un processus peut posséder plusieurs threads.
ressources allouées à un processus (temps processeur,  Les mémoire) sont partagées entre les threads qui le composent.
Un processus possède au moins un thread de manière à exécuter le point d'entrée du programme. Ce thread exécute le programme principal, habituellement la fonctionmain().
F. Gayral
4
s reopprs urle, eriomélepiqus l 'i pneatratneg 
Les threads issus d’un même processus partagent la même la même pile et le même espace mémoire, ce qui rend très facile (et périlleux !) la communication entre threads.
5
F. Gayral
Différences entre thread et processus
Au niveau de la mémoire
Les sous-processus issus d’un même processus ont leur
propre espacem
pas avec les autres :
=> pour communiquer, ils doivent utiliser des moyens de communication spécifiques (tubes..) Les threads issus d’un même processu
Intérêts des threads en général
Communication très simple grâce aux données partagées
Partager le temps alloué au processus père entre plusieurs threads, chacun d’eux exécutant une fonction précise
Augmenter la "productivité" d’une application par l'exécution concurrente de ces threads
F. Gayral
6
Exemples
Un navigateurest un logiciel multi-thread : le chargement d'une page laisse la main à l'utilisateur
Un serveurrépondre à des demandes de connexions depeut clients en créant un thread par client
Le lancement de la machine virtuelle javalance un processus, de base, qui contient plusieurs threads :
principal celui qui exécute votre code à partir du mainle thread
le thread dédié au garbage : il a une priorité faible et ne s’active que lorsque le processeur n’est pas chargé ou lorsque la mémoire manque
F. Gayral
7
Threads : attention
On ne peut jamais prévoir l'ordre dans lequel les threads recevront l'accès au processeur
=> Deux lignes consécutives de code ne seront pas forcément effectuées à la suite car le contrôle du processeur pourra être passé à d'autres threads entre les deux.
Une application multithread ne doit jamais tenter de prévoir l'ordre d'exécution des instructions mais devra souvent utiliser les fonctions de synchronisation Une thread inactif ne devra jamai
Une thread inactif ne devra jamais monopoliser inutilement le processeur
F. Gayral
8
Threads et interface graphique
Swing possède une boucle principale pour la gestion des événements et la gestion des composants
Cette boucle est exécutée dans un thread séparé appelé « event dispatching thread »
Ce thread est lancé automatiquement
F. Gayral
9
Intérêt des threads pour une application
La programmeur crée des threads lorsque : l ’application nécessite d’exécuter une tâche longue et  consommatrice de temps ou fait une tâche répétitive ou fait de l'animation Exemple : animation, gros calculs, attente de connexion, entrée/sortie (chargement d'images, sauvegarde de fichiers,…)
+
ÞCréer des threads chargés de ces tâches plutôt que d’occuper le thread principal à ces tâches
F. Gayral
10
Threads en java
En Java, les threads font partie intégrante du langage:
La classeThread
Lce erfaintRunnable
Les programmes utilisant des threads sont portables d’une plate-forme à l’autre mais l’exécution peut varier (comportement de l’ordonnanceur non spécifié par Sun)
F. Gayral
11
  • Univers Univers
  • Ebooks Ebooks
  • Livres audio Livres audio
  • Presse Presse
  • Podcasts Podcasts
  • BD BD
  • Documents Documents