======Programmation concurrente (ASR7 - L3) Printemps 2017====== L'emploi du temps est ici {{ :systeme:2017p:edt_asr7.pdf |}} vous pouvez voir les salles [[http://adelb.univ-lyon1.fr/direct/index.jsp?projectId=1&ShowPianoWeeks=true&resources=30896,30897,30919&projectId=1&weeks=29,30,31,32,33,34,35,36&days=1,3|sur ADE]], où elles sont affichées dans le cours de LIFPROJET. =====Cours===== - Les threads * les {{systeme:2017p:cm-threads.pdf|diapos}} ou la {{systeme:2017p:cm-threads_p.pdf|version imprimable}} * le chat donné en exemple dans le cours {{systeme:2017p:exemplecours.tar.gz|}} * un exemple pour lancer des threads {{systeme:2017p:lancement_thread.cpp|}} * le compteur {{systeme:2017p:cpt.cpp|}} ou avec un moniteur {{systeme:2017p:mon_cpt.cpp|}} - Les problèmes classiques * les {{systeme:2017p:cm-problemes.pdf|diapos}} ou la {{systeme:2017p:cm-problemes_p.pdf|version imprimable}} * le problème des recteurs et rédacteurs {{ :systeme:2017p:pc:lecteur_redacteur.pdf |}} et le code associé {{ :systeme:2017p:pc:lecteurredacteur.tar.gz |}} - L'ordonnancement * les {{systeme:2017p:pc:cm5-ordonnancement.pdf|diapos}} ou la {{systeme:2017p:pc:cm5-ordonnancement_p6.pdf|version imprimable}} - Les fichiers * les {{systeme:2017p:pc:cm6-fichiers.pdf|diapos}} ou la {{systeme:2017p:pc:cm6-fichiers_p6.pdf|version imprimable}} - Administration * les {{systeme:2017p:pc:cm7-admin.pdf|diapos}} ou la {{systeme:2017p:pc:cm7-admin_p6.pdf|version imprimable}} =====Les TDs===== - TD1 : sémaphore de Dijkstra et producteur consomateur * le {{systeme:2017p:pc:td1.pdf|sujet}}; * la {{systeme:2017p:pc:td1_corr.pdf|correction}} - TD2 : * le {{systeme:2017p:pc:td2.pdf|sujet}}; * la {{systeme:2017p:pc:td2_corr.pdf|correction}} - TD3 : * le {{systeme:2017p:pc:td3.pdf|sujet}}; * la {{systeme:2017p:pc:td3_corr.pdf|correction}} - TD4 : * le {{systeme:2017p:pc:td4.pdf|sujet}}; * la {{systeme:2017p:pc:td4_corr.pdf|correction}} =====Les TPs ===== ===TP1 prise en main des threads=== Le sujet est {{ :systeme:2017p:pc:tp1.pdf |ici}}, vous devez paralléliser ce code {{ :systeme:2017p:pc:lancement.cpp |}}. * La {{ :systeme:2017p:pc:tp1_corr.pdf |correction des questions}}; * Le code parallèle {{ :systeme:2017p:pc:lancement_corr.cpp |}}. ===TP2 premier exemple de gestion de données partagées=== Le sujet est ici {{ :systeme:2017p:pc:tp2.pdf |}} et le code de départ {{ :systeme:2017p:pc:thread_fractale.tar.gz |}} Le code parallèle {{ :systeme:2017p:pc:mandel-list-par.cpp |}} ===TP3 Producteur consomateur === Le sujet est ici {{ :systeme:2017p:pc:tp3.pdf |}}, pour l'application, on réutilise le code de calcul des fractales. Le code parallèle {{ :systeme:2017p:pc:thread_fractale_2-170404.tar.gz |}} ===TP4 Chat multi-utilisateurs=== Vous devez réaliser un système de chat multi utilisateur. C'est à dire un logiciel qui relie ses clients en leur permettant d'échanger des messages. Ce logiciel doit utiliser les threads pour assurer la gestion des clients en parrallèle. C'est à dire que chaque nouveau client génère un thread qui s'occupe de lui. Chaque client doit être identifié par un nom qui apparaitra au début de tout ses messages. Ce que le client transmet au serveur doivent être envoyé à tout les autres, et inversement, il doit recevoir tout les messages des autres. Améliorations possibles : - Gérer un petit langage de commande (par exemple tout message précédé par # est en fait une commande, les commandes permettent de se déconnecter, d'envoyer des icons, d'écrire des messages personnels...); - Gérer des discutions privées dont les messages ne sont échangés qu'entre les membres; - ... ===TP5 Ordonnanceur et débordement mémoire=== Le sujet est ici {{ :systeme:2017p:pc:tp5.pdf |}} . - voila le code de la commande ''changeUser'' {{ :systeme:2017p:pc:changeuser.c |}} - voila le code à compléter pour lancer des threads {{ :systeme:2017p:pc:sched.cpp |}} Le sujet corrigé {{ :systeme:2017p:pc:tp5_corr.pdf |}} et le code complété {{ :systeme:2017p:pc:sched_corr.cpp |}}