Conservatoire National des Arts et Metiers - cursus informatique
COURS SUR LES APPLICATIONS CONCURRENTES
Conception
et Outils de Validation de
programmes concurrents
Cette unite d'enseignement CNAM porte le code NFP103 (ancienne UV 16981)
PRESENTATION,
ACTUALITE ET OBJECTIFS DU
COURS
Cette unite d'enseignement est une unite de base pour un cursus de formation dans les domaines des applications et systemes concurrents, qu'ils soient embarques, temps reel, centralises, repartis ou cooperatifs. Elle apporte une vision approfondie des problemes de la gestion de la concurrence des processus. Elle permet de comprendre les aspects concurrents des plates-formes informatiques que l'on trouve dans les serveurs ou sites (des reseaux locaux ou sur le web).
__________________________
"The number of concurrent programmers has skyrocketed over the past few years and will continue to do so."..."Although only a small proportion of code found in today's production programs, applications, and systems directly exploits concurrency, every programmer should at least be aware of concurrency."..."Concurrent programming's diversity appears in the wide range of designs and design approaches seen in practical applications."..."Concurrency techniques have become indispensable for programmers who create the highly available services and reactive applications that are now commonplace."..."Despite its increasing centrality, concurrency remains intrinsically more complex, unfamiliar, and prone to design and programming errors than most other aspects of programming."..."Many programmers increasingly cope with new, concurrency-driven complexities. And without expert guidance, they're also expected to occasionally fail."..."However, these multithreading constructs - threads, locks, monitors, sockets, and related interprocess messaging support - are now commonly accepted as the standard basis for building practical concurrent programs. And they can serve as building blocks for nearly any other style of concurrency support a programmer desires (such as Ada tasks)."..."Concurrent design-pattern descriptions thus typically address design forces and integrity issues."..."Temporal dimensions of correctness introduced by concurrency - safety and liveness (including fault-tolerance) - are central concerns in any concurrent design and its implementation."
Ce cours approfondit les notions sur la programmation concurrente vues dans l'unite d'enseignement NFP137 "Systemes informatiques et applications concurrentes" (ancienne UV 19339). En s'interessant, au premier chef, aux systemes multiprocesseurs (architectures a couplage fort), ce cours peut utilement completer le cours d'approfondissement "Systemes et Applications repartis" (UE NFP111) qui s'applique exclusivement aux aspects souleves par la repartition (architectures a couplage faible). Il apporte des bases pour les UE NFP214 et NFP215 "Reseaux et Systemes repartis". Ce cours presente aussi un grand interet pour les applications embarquees, mobiles ou en temps reel, domaines ou les consequences des fautes de programmation sont souvent dramatiques.
__________________________
Actualite,
objectifs, bibliographie (4
pages) [ACCOV01Presentation.pdf]
PLAN DU TOME 1 : programmation
concurrente [ACCOV10Couverture.pdf]
1.1.
Introduction
et exemples (30 pages)
[ACCOV11Introduction.pdf]
1.2. Paradigmes de la concurrence (28 pages) [ACCOV12Paradigmes.pdf]
1.3.
Communication
par memoire commune :
semaphores,
moniteurs, objets proteges Ada (48 pages) [ACCOV13ObjProteges.pdf]
1.4. Concurrence avec des taches serveur en Ada (24 pages) [ACCOV14TachesADA.pdf]
1.5. Concurrence en Java (19 pages) [ACCOV15ThreadsJava.pdf]
1.6. Ouvertures : interruptions, AST, distribution (19 pages) [ACCOV16Ouvertures.pdf]
1.7. Annexe Ada (15 pages) [ACCOV17AnnexeAda.pdf]
1.8.
Annexe
Reseaux de Petri (6
pages)
[ACCOV18AnnexeRdP.pdf]
1.9. Comparaisons Ada-java
[Brosgol1998.pdf]
[Sanden2002.pdf] [ACCOV19KPP2003.pdf]
1.A. System and Real-time programming in
Ada : Ada tasking [BingueCookDupaix.pdf]
1.B. Concurrency and Real-Time Programming
Support in Java, Ada and POSIX [BrosgolRosen.ppt]
__________________________
PLAN DU TOME 2 :
outils de
specification et de validation
2.1. Specification avec les reseaux de Petri (28 pages) [ACCOV21.pdf]
2.2
Verification
avec les reseaux de Petri (30 pages)
[ACCOV22.pdf]
2.3. Exemple d'analyse de programmes Ada (11 pages) [ACCOV23BKP1997]
2.4.
Comparaison
de
solutions pour un probleme d'allocation de ressources (17
pages) [ACCOV24KPP1998.pdf]
__________________________
EXAMEN DE JUIN 2004 :
EXAMEN DE JUIN 2005 :
__________________________
PROGRAMMATION
DES APPLICATIONS DISTRIBUEES
1. texte de
Franco Gasperoni
: "Software
development"(en particulier en ADA) [ACCOV51Gasperoni.pdf]
CONFERENCES SUR LE TEMPS REEL
1. Presentation du temps reel [TRK1Presentation.pdf]COURS
SUR LE TEMPS REEL
1. Enseigner
Ada [FeneuilleEnseignerAda.zip],
voir aussi plus de details sur http://www.ada-france.org/
COURS,
DATES ET LIEUX EN 2005-2006 (UE NFP 103 ACCOV))
ENSEIGNANTS : Claude KAISER,
Jean-Francois
PEYRE (responsable du
cours : C
Kaiser)
COURS-ED-TP integres (60 heures)
SALLES DE COURS : MARDI
ENSAM salle P4, MERCREDI Icap sante salle Anemone
dates |
programme des seances |
enseignants |
|||
04 octobre 2005 |
1. Presentation et organisation du cours. Introduction |
C.
Kaiser |
|
||
05 octobre 2005 |
2. Concurrence des processus des applications, programmation concurrente |
C. Kaiser |
|
||
11 octobre 2005 |
3. Paradigmes de la concurrence des processus |
C. Kaiser |
|
||
12 octobre 2005 |
4. programmation de la concurrence par ressource commune |
C. Kaiser |
|
||
18 octobre 2005 |
5. programmation de la concurrence avec semaphores Posix |
C. Kaiser |
|
||
19 octobre 2005 |
6. programmation de la concurrence par objets proteges |
C. Kaiser |
|
||
25 octobre 2005 |
7. TP de programmation concurrente avec objets protege |
C. Kaiser |
|
||
26 octobre 2005 |
8. programmation de la concurrence par objets proteges |
C. Kaiser |
|
||
08 novembre 2005 |
9.
Programmation de la repartition en Ada |
C. Kaiser |
|
||
09 novembre 2005 |
10. Programmation de la concurrence avec des taches serveur (Ada) |
C. Kaiser |
|
||
15 novembre 2005 |
11. Programmation de la concurrence avec des "threads" Java |
C. Kaiser |
|
||
16 novembre 2005 |
12.Programmation de la concurrence avec des "threads" Java |
C. Kaiser |
|
||
22 novembre 2005 |
13. Questions sur les projets de programmation concurrente |
C. Kaiser |
|
||
23 novembre 2005 |
14. Concurrence au niveau machine : interruptions |
C. Kaiser |
|
||
29 novembre 2005 |
15. Questions sur les projets de programmation concurrente |
C.
Kaiser |
|
||
30 novembre 2005 |
16.
Apercu : methodes de specification et de validation de la
concurrence |
J.F. Peyre |
|
||
06 decembre 2005 |
17. Expression et validation des paradigmes par reseaux de Petri |
J.F. Peyre |
|
||
07 decembre 2005 |
18. Presentation des outils de simulation et de validation et TP |
J.F. Peyre |
|
||
13 decembre 2005 |
19.
TP d'Utilisation des outils de simulation et de validation |
J.F. Peyre |
|
||
14 decembre 2005 |
20. Expression et validation de solutions par reseaux de Petri |
J.F. Peyre |
|
||
03 janvier 2006 |
21. Validation des solutions et reseaux de Petri; outils et TP |
J.F. Peyre |
|
||
04 janvier 2006 |
22. Validation des solutions et reseaux de Petri; outils et TP |
J.F. Peyre |
|
||
10 janvier 2006 |
23. Validation des solutions avec la logique temporelle (TP) |
J.F. Peyre |
|
||
11 janvier 2006 |
24. TP : outils de validation de la concurrence |
J.F. Peyre |
|
||
17 janvier 2006 |
25. TP : outils de validation de la concurrence |
J.F. Peyre |
|
||
18 janvier 2006 |
26. TP : outils de validation de la concurrence |
J.F. Peyre |
|
||
24 janvier 2006 |
27. TP : outils de
validation de la concurrence (projet) |
J.F. Peyre |
|
||
25 janvier 2006 |
28. TP : outils de
validation de la concurrence (projet) |
J.F. Peyre | |||
31 janvier 2006 |
29. TP : outils de
validation de la concurrence (projet) |
J.F. Peyre |
|
||
01 fevrier 2006 |
30. TP : outils de
validation de la concurrence (projet) |
J.F. Peyre | |||
examen 1ere session le mardi 8
fevrier 2006
(date probable, a confirmer ulterieurement). Examen avec
documents
examen 2eme session le mardi 11 avril 2006 (date probable, a confirmer
ulterieurement).
Examen avec
documents
Chaque auditeur doit realiser deux dossiers au cours de l'annee. Le
premier
dossier, a remettre le 3 janvier 2006, concerne la programmation d'une
petite
application concurrente. Le second dossier, a remettre le fin janvier
2006,
concerne la
validation d'une petite application concurrente (de preference la
meme
application pour ces deux dossiers). Chaque dossier permet d'obtenir un
bonus
de 0 a 5 points, a valoir sur la note de l'examen final.
Le total des boni est plafonne a 9 points. L'examen est obligatoire.
PLANNING
ACCOV 04-05 [version octobre
2004.pdf]
2.5.
Quatrieme etape en forme de conclusion
Comparer les solutions des deux etapes
Comparer les styles et les facilites des langages pour la concurrence
(facilite de mise au point, evolutivite de solution, facteur d echelle
"scalability", documentation, possibilite de validation, etc...)
Ceci est a remettre en fevrier, avec la redaction finale revue et
corrigee a la suite de discussions pendant les derniers cours de
programmation concurrente.
retour debut ACCOV
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
SEANCE DE TRAVAUX PRATIQUES DE
PROGRAMMATION ADA
On vous demande de
programmer les
entrees
de l'objet protege appelees par les procedures qui permettent de
deposer et retirer deux messages lors d'un unique appel ou qui
permettent de deposer et retirer un
tableau
Z contenant un ou deux messages.
Dans ce dernier cas, la solution utilise
Un tableau dynamique Z
Z'Length qui fournit la longueur actuelle du tableau Z
une entry Poser_Bis et une entry Tirer_bis
et on utilise l'instruction requeue.
Les 4 modules de
bibliotheque :
Global.ads, Prod_Cons.ads, Stock.ads, Stock.adb, sont disponibles dans
[ACCOV2004TP.zip]
et [ACCOV2004TP.html]
Il vous faut completer le dernier module